]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
tc: m_ife: allow ife type to zero
authorAlexander Aring <aring@mojatatu.com>
Mon, 28 Aug 2017 19:07:35 +0000 (15:07 -0400)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 30 Aug 2017 15:26:46 +0000 (08:26 -0700)
This patch allows to set an ethertype for IFE which is zero. There is no
kernel side validation which forbids a type to zero.

Signed-off-by: Alexander Aring <aring@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
tc/m_ife.c

index e3521e62c178c7d44bce283352b7d0c6cb7ccf00..e05e2276bd5ae3422b003c6896ed66d579c7a3f0 100644 (file)
@@ -63,6 +63,7 @@ static int parse_ife(struct action_util *a, int *argc_p, char ***argv_p,
        char dbuf[ETH_ALEN];
        char sbuf[ETH_ALEN];
        __u16 ife_type = 0;
+       int user_type = 0;
        __u32 ife_prio = 0;
        __u32 ife_prio_v = 0;
        __u32 ife_mark = 0;
@@ -125,6 +126,7 @@ static int parse_ife(struct action_util *a, int *argc_p, char ***argv_p,
                        if (get_u16(&ife_type, *argv, 0))
                                invarg("ife type is invalid", *argv);
                        fprintf(stderr, "IFE type 0x%x\n", ife_type);
+                       user_type = 1;
                } else if (matches(*argv, "dst") == 0) {
                        NEXT_ARG();
                        daddr = *argv;
@@ -185,7 +187,7 @@ static int parse_ife(struct action_util *a, int *argc_p, char ***argv_p,
 
        if (daddr)
                addattr_l(n, MAX_MSG, TCA_IFE_DMAC, dbuf, ETH_ALEN);
-       if (ife_type)
+       if (user_type)
                addattr_l(n, MAX_MSG, TCA_IFE_TYPE, &ife_type, 2);
        if (saddr)
                addattr_l(n, MAX_MSG, TCA_IFE_SMAC, sbuf, ETH_ALEN);