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.

Signed-off-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
---
 net/sched/em_ipt.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/net/sched/em_ipt.c b/net/sched/em_ipt.c
index cfb93ce340da..ce0798f6f1f7 100644
--- a/net/sched/em_ipt.c
+++ b/net/sched/em_ipt.c
@@ -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
+       },
        {}
 };
 
-- 
2.20.1

Reply via email to