From: Stephen Hemminger Date: Mon, 2 Aug 2010 18:55:30 +0000 (-0700) Subject: Fix byte order of ether address match for u32 X-Git-Tag: v2.6.35~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3d153c1fb35ec5d5f4ce197afb4cb13093ce534;p=thirdparty%2Fiproute2.git Fix byte order of ether address match for u32 The u32 key match was incorrect byte order when using ether source or destination address matching. --- diff --git a/tc/f_u32.c b/tc/f_u32.c index 31e13b52d..d9d409143 100644 --- a/tc/f_u32.c +++ b/tc/f_u32.c @@ -448,7 +448,6 @@ static int parse_ether_addr(int *argc_p, char ***argv_p, char **argv = *argv_p; __u8 addr[6]; int offmask = 0; - __u32 key; int i; if (argc < 1) @@ -469,10 +468,8 @@ static int parse_ether_addr(int *argc_p, char ***argv_p, return -1; } - for (i = 0; i < 6; i += 2) { - key = *(__u16 *) (addr + i); - - res = pack_key16(sel, key, 0xFFFF, off + i, offmask); + for (i = 0; i < 6; i++) { + res = pack_key8(sel, addr[i], 0xFF, off + i, offmask); if (res < 0) return -1; }