net: sched: em_ipt: add support for addrtype matching
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Thu, 27 Jun 2019 08:10:47 +0000 (11:10 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 Jun 2019 18:15:12 +0000 (11:15 -0700)
Allow em_ipt to use addrtype for matching. Restrict the use only to
revision 1 which has IPv6 support. Since it's a NFPROTO_UNSPEC xt match
we use the user-specified nfproto for matching, in case it's unspecified
both v4/v6 will be matched by the rule.

v2: no changes, was patch 5 in v1

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/em_ipt.c

index 3c356d6..9fff648 100644 (file)
@@ -72,11 +72,25 @@ static int policy_validate_match_data(struct nlattr **tb, u8 mrev)
        return 0;
 }
 
+static int addrtype_validate_match_data(struct nlattr **tb, u8 mrev)
+{
+       if (mrev != 1) {
+               pr_err("only addrtype match revision 1 supported");
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 static const struct em_ipt_xt_match em_ipt_xt_matches[] = {
        {
                .match_name = "policy",
                .validate_match_data = policy_validate_match_data
        },
+       {
+               .match_name = "addrtype",
+               .validate_match_data = addrtype_validate_match_data
+       },
        {}
 };