]> granicus.if.org Git - ipset/commitdiff
Backport patch netlink: extended ACK reporting
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Mon, 11 Sep 2017 18:30:21 +0000 (20:30 +0200)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Mon, 11 Sep 2017 18:30:21 +0000 (20:30 +0200)
configure.ac
kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
kernel/net/netfilter/ipset/ip_set_core.c

index 6482670ecd949d0ecb341644dacbf0fb32f7aab5..2c6354f38f2ea2388886ab39f112f8dacab5c4f1 100644 (file)
@@ -549,6 +549,16 @@ else
        AC_SUBST(HAVE_NFNL_MSG_TYPE, undef)
 fi
 
+AC_MSG_CHECKING([kernel source for netlink extended ACK])
+if test -f $ksourcedir/include/linux/netlink.h && \
+   $AWK '/^extern void netlink_ack/ {for(i=1; i<=2; i++) {getline; print}}' $ksourcedir/include/linux/netlink.h | $GREP -q 'const struct netlink_ext_ack'; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_NETLINK_EXTENDED_ACK, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_NETLINK_EXTENDED_ACK, undef)
+fi
+
 AC_MSG_CHECKING([kernel source for struct net_generic])
 if test -f $ksourcedir/include/net/netns/generic.h && \
    $GREP -q 'struct net_generic' $ksourcedir/include/net/netns/generic.h; then
index 002e3dbef992a4c035fc8c089e075f0c75407f8a..fd1696bf61737f9e63cd2801ac054d32c71d9eaa 100644 (file)
@@ -39,6 +39,7 @@
 #@HAVE_XT_FAMILY@ HAVE_XT_FAMILY
 #@HAVE_XT_NET@ HAVE_XT_NET
 #@HAVE_NFNL_MSG_TYPE@ HAVE_NFNL_MSG_TYPE
+#@HAVE_NETLINK_EXTENDED_ACK@ HAVE_NETLINK_EXTENDED_ACK
 
 #ifdef HAVE_EXPORT_SYMBOL_GPL_IN_MODULE_H
 #include <linux/module.h>
@@ -304,6 +305,12 @@ static inline u16 nfnl_msg_type(u8 subsys, u8 msg_type)
 }
 #endif
 
+#ifdef HAVE_NETLINK_EXTENDED_ACK
+#define NETLINK_ACK(in_skb, nlh, err, extack)  netlink_ack(in_skb, nlh, err, extack)
+#else
+#define NETLINK_ACK(in_skb, nlh, err, extack)  netlink_ack(in_skb, nlh, err)
+#endif
+
 #ifdef HAVE_STATE_IN_XT_ACTION_PARAM
 #define XAP_STATE(par)         (par->state)
 #else
index fbb8df11359908a1c2deb9b0bb0754d6e6629918..d7ef329cf8fd77dc04cff42cea1e8a9871d5f6a5 100644 (file)
@@ -1317,7 +1317,7 @@ ip_set_dump_start(struct sk_buff *skb, struct netlink_callback *cb)
                         * manually :-(
                         */
                        if (nlh->nlmsg_flags & NLM_F_ACK)
-                               netlink_ack(cb->skb, nlh, ret);
+                               NETLINK_ACK(cb->skb, nlh, ret, NULL);
                        return ret;
                }
        }