erspan: fix invalid erspan version.
ERSPAN only support version 1 and 2. When packets send to an erspan device which does not have proper version number set, drop the packet. In real case, we observe multicast packets sent to the erspan pernet device, erspan0, which does not have erspan version configured. Reported-by: Greg Rose <gvrose8192@gmail.com> Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d13d170cba
commit
02f99df187
2 changed files with 7 additions and 2 deletions
|
@ -722,10 +722,12 @@ static netdev_tx_t erspan_xmit(struct sk_buff *skb,
|
|||
erspan_build_header(skb, ntohl(tunnel->parms.o_key),
|
||||
tunnel->index,
|
||||
truncate, true);
|
||||
else
|
||||
else if (tunnel->erspan_ver == 2)
|
||||
erspan_build_header_v2(skb, ntohl(tunnel->parms.o_key),
|
||||
tunnel->dir, tunnel->hwid,
|
||||
truncate, true);
|
||||
else
|
||||
goto free_skb;
|
||||
|
||||
tunnel->parms.o_flags &= ~TUNNEL_KEY;
|
||||
__gre_xmit(skb, dev, &tunnel->parms.iph, htons(ETH_P_ERSPAN));
|
||||
|
|
|
@ -979,11 +979,14 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,
|
|||
erspan_build_header(skb, ntohl(t->parms.o_key),
|
||||
t->parms.index,
|
||||
truncate, false);
|
||||
else
|
||||
else if (t->parms.erspan_ver == 2)
|
||||
erspan_build_header_v2(skb, ntohl(t->parms.o_key),
|
||||
t->parms.dir,
|
||||
t->parms.hwid,
|
||||
truncate, false);
|
||||
else
|
||||
goto tx_err;
|
||||
|
||||
fl6.daddr = t->parms.raddr;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue