mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
net: erspan: fix metadata extraction
Commitd350a82302("net: erspan: create erspan metadata uapi header") moves the erspan 'version' in front of the 'struct erspan_md2' for later extensibility reason. This breaks the existing erspan metadata extraction code because the erspan_md2 then has a 4-byte offset to between the erspan_metadata and erspan_base_hdr. This patch fixes it. Fixes:1a66a836da("gre: add collect_md mode to ERSPAN tunnel") Fixes:ef7baf5e08("ip6_gre: add ip6 erspan collect_md mode") Fixes:1d7e2ed22f("net: erspan: refactor existing erspan code") Signed-off-by: William Tu <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
d7cdee5ea8
commit
3df1928302
3 changed files with 21 additions and 16 deletions
|
|
@ -261,6 +261,7 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi,
|
|||
struct ip_tunnel_net *itn;
|
||||
struct ip_tunnel *tunnel;
|
||||
const struct iphdr *iph;
|
||||
struct erspan_md2 *md2;
|
||||
int ver;
|
||||
int len;
|
||||
|
||||
|
|
@ -313,8 +314,10 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi,
|
|||
return PACKET_REJECT;
|
||||
|
||||
md = ip_tunnel_info_opts(&tun_dst->u.tun_info);
|
||||
memcpy(md, pkt_md, sizeof(*md));
|
||||
md->version = ver;
|
||||
md2 = &md->u.md2;
|
||||
memcpy(md2, pkt_md, ver == 1 ? ERSPAN_V1_MDSIZE :
|
||||
ERSPAN_V2_MDSIZE);
|
||||
|
||||
info = &tun_dst->u.tun_info;
|
||||
info->key.tun_flags |= TUNNEL_ERSPAN_OPT;
|
||||
|
|
|
|||
Loading…
Reference in a new issue