mirror of https://github.com/F-Stack/f-stack.git
Fix bug of kni while set `vlan_strip=0`.
This commit is contained in:
parent
1068dedc41
commit
a20fd2ae31
|
@ -909,10 +909,14 @@ protocol_filter(const void *data, uint16_t len)
|
|||
const struct vlan_hdr *vlanhdr;
|
||||
hdr = (const struct ether_hdr *)data;
|
||||
uint16_t ether_type = rte_be_to_cpu_16(hdr->ether_type);
|
||||
data += ETHER_HDR_LEN;
|
||||
len -= ETHER_HDR_LEN;
|
||||
|
||||
if (ether_type == ETHER_TYPE_VLAN) {
|
||||
vlanhdr = (struct vlan_hdr *)(data + sizeof(struct ether_hdr));
|
||||
vlanhdr = (struct vlan_hdr *)data;
|
||||
ether_type = rte_be_to_cpu_16(vlanhdr->eth_proto);
|
||||
data += sizeof(struct vlan_hdr);
|
||||
len -= sizeof(struct vlan_hdr);
|
||||
}
|
||||
|
||||
if(ether_type == ETHER_TYPE_ARP)
|
||||
|
@ -928,8 +932,7 @@ protocol_filter(const void *data, uint16_t len)
|
|||
if(ether_type != ETHER_TYPE_IPv4)
|
||||
return FILTER_UNKNOWN;
|
||||
|
||||
return ff_kni_proto_filter(data + ETHER_HDR_LEN,
|
||||
len - ETHER_HDR_LEN);
|
||||
return ff_kni_proto_filter(data, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue