Merge tag 's390-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[linux] / net / netfilter / nf_conntrack_netlink.c
index 4ae8e52..1213beb 100644 (file)
@@ -47,7 +47,6 @@
 #include <net/netfilter/nf_conntrack_synproxy.h>
 #ifdef CONFIG_NF_NAT_NEEDED
 #include <net/netfilter/nf_nat_core.h>
-#include <net/netfilter/nf_nat_l4proto.h>
 #include <net/netfilter/nf_nat_helper.h>
 #endif
 
@@ -1688,6 +1687,22 @@ static int ctnetlink_change_timeout(struct nf_conn *ct,
        return 0;
 }
 
+#if defined(CONFIG_NF_CONNTRACK_MARK)
+static void ctnetlink_change_mark(struct nf_conn *ct,
+                                   const struct nlattr * const cda[])
+{
+       u32 mark, newmark, mask = 0;
+
+       if (cda[CTA_MARK_MASK])
+               mask = ~ntohl(nla_get_be32(cda[CTA_MARK_MASK]));
+
+       mark = ntohl(nla_get_be32(cda[CTA_MARK]));
+       newmark = (ct->mark & mask) ^ mark;
+       if (newmark != ct->mark)
+               ct->mark = newmark;
+}
+#endif
+
 static const struct nla_policy protoinfo_policy[CTA_PROTOINFO_MAX+1] = {
        [CTA_PROTOINFO_TCP]     = { .type = NLA_NESTED },
        [CTA_PROTOINFO_DCCP]    = { .type = NLA_NESTED },
@@ -1883,7 +1898,7 @@ ctnetlink_change_conntrack(struct nf_conn *ct,
 
 #if defined(CONFIG_NF_CONNTRACK_MARK)
        if (cda[CTA_MARK])
-               ct->mark = ntohl(nla_get_be32(cda[CTA_MARK]));
+               ctnetlink_change_mark(ct, cda);
 #endif
 
        if (cda[CTA_SEQ_ADJ_ORIG] || cda[CTA_SEQ_ADJ_REPLY]) {
@@ -2027,7 +2042,7 @@ ctnetlink_create_conntrack(struct net *net,
 
 #if defined(CONFIG_NF_CONNTRACK_MARK)
        if (cda[CTA_MARK])
-               ct->mark = ntohl(nla_get_be32(cda[CTA_MARK]));
+               ctnetlink_change_mark(ct, cda);
 #endif
 
        /* setup master conntrack: this is a confirmed expectation */
@@ -2524,14 +2539,7 @@ ctnetlink_glue_parse_ct(const struct nlattr *cda[], struct nf_conn *ct)
        }
 #if defined(CONFIG_NF_CONNTRACK_MARK)
        if (cda[CTA_MARK]) {
-               u32 mask = 0, mark, newmark;
-               if (cda[CTA_MARK_MASK])
-                       mask = ~ntohl(nla_get_be32(cda[CTA_MARK_MASK]));
-
-               mark = ntohl(nla_get_be32(cda[CTA_MARK]));
-               newmark = (ct->mark & mask) ^ mark;
-               if (newmark != ct->mark)
-                       ct->mark = newmark;
+               ctnetlink_change_mark(ct, cda);
        }
 #endif
        return 0;