mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
net: sched: use counter to break reclassify loops
Seems all we want here is to avoid endless 'goto reclassify' loop. tc_classify_compat even resets this counter when something other than TC_ACT_RECLASSIFY is returned, so this skb-counter doesn't break hypothetical loops induced by something other than perpetual TC_ACT_RECLASSIFY return values. skb_act_clone is now identical to skb_clone, so just use that. Tested with following (bogus) filter: tc filter add dev eth0 parent ffff: \ protocol ip u32 match u32 0 0 police rate 10Kbit burst \ 64000 mtu 1500 action reclassify Acked-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b04096ff33
commit
e578d9c025
5 changed files with 5 additions and 30 deletions
|
@ -44,13 +44,13 @@ bits 9,10,11: redirect counter - redirect TTL. Loop avoidance
|
|||
#define TC_OK2MUNGE _TC_MAKEMASK1(1)
|
||||
#define SET_TC_OK2MUNGE(v) ( TC_OK2MUNGE | (v & ~TC_OK2MUNGE))
|
||||
#define CLR_TC_OK2MUNGE(v) ( v & ~TC_OK2MUNGE)
|
||||
#endif
|
||||
|
||||
#define S_TC_VERD _TC_MAKE32(2)
|
||||
#define M_TC_VERD _TC_MAKEMASK(4,S_TC_VERD)
|
||||
#define G_TC_VERD(x) _TC_GETVALUE(x,S_TC_VERD,M_TC_VERD)
|
||||
#define V_TC_VERD(x) _TC_MAKEVALUE(x,S_TC_VERD)
|
||||
#define SET_TC_VERD(v,n) ((V_TC_VERD(n)) | (v & ~M_TC_VERD))
|
||||
#endif
|
||||
|
||||
#define S_TC_FROM _TC_MAKE32(6)
|
||||
#define M_TC_FROM _TC_MAKEMASK(2,S_TC_FROM)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue