diff --git a/tc/m_pedit.c b/tc/m_pedit.c index dfe9b2eb..4fdd189d 100644 --- a/tc/m_pedit.c +++ b/tc/m_pedit.c @@ -160,17 +160,9 @@ pack_key32(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey) int pack_key16(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey) { - int ind = 0, stride = 0; + int ind, stride; __u32 m[4] = {0xFFFF0000,0xFF0000FF,0x0000FFFF}; - if (0 > tkey->off) { - ind = tkey->off + 1; - if (0 > ind) - ind = -1*ind; - } else { - ind = tkey->off; - } - if (tkey->val > 0xFFFF || tkey->mask > 0xFFFF) { fprintf(stderr, "pack_key16 bad value\n"); return -1; @@ -178,18 +170,16 @@ pack_key16(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey) ind = tkey->off & 3; - if (0 > ind || 2 < ind) { + if (ind == 3) { fprintf(stderr, "pack_key16 bad index value %d\n",ind); return -1; } stride = 8 * ind; tkey->val = htons(tkey->val); - if (stride > 0) { - tkey->val <<= stride; - tkey->mask <<= stride; - retain <<= stride; - } + tkey->val <<= stride; + tkey->mask <<= stride; + retain <<= stride; tkey->mask = retain|m[ind]; tkey->off &= ~3; @@ -203,28 +193,22 @@ pack_key16(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey) int pack_key8(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey) { - int ind = 0, stride = 0; + int ind, stride; __u32 m[4] = {0xFFFFFF00,0xFFFF00FF,0xFF00FFFF,0x00FFFFFF}; - if (0 > tkey->off) { - ind = tkey->off + 1; - if (0 > ind) - ind = -1*ind; - } else { - ind = tkey->off; - } - if (tkey->val > 0xFF || tkey->mask > 0xFF) { fprintf(stderr, "pack_key8 bad value (val %x mask %x\n", tkey->val, tkey->mask); return -1; } ind = tkey->off & 3; + stride = 8 * ind; tkey->val <<= stride; tkey->mask <<= stride; retain <<= stride; tkey->mask = retain|m[ind]; + tkey->off &= ~3; if (pedit_debug)