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;
|
const struct vlan_hdr *vlanhdr;
|
||||||
hdr = (const struct ether_hdr *)data;
|
hdr = (const struct ether_hdr *)data;
|
||||||
uint16_t ether_type = rte_be_to_cpu_16(hdr->ether_type);
|
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) {
|
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);
|
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)
|
if(ether_type == ETHER_TYPE_ARP)
|
||||||
|
@ -928,8 +932,7 @@ protocol_filter(const void *data, uint16_t len)
|
||||||
if(ether_type != ETHER_TYPE_IPv4)
|
if(ether_type != ETHER_TYPE_IPv4)
|
||||||
return FILTER_UNKNOWN;
|
return FILTER_UNKNOWN;
|
||||||
|
|
||||||
return ff_kni_proto_filter(data + ETHER_HDR_LEN,
|
return ff_kni_proto_filter(data, len);
|
||||||
len - ETHER_HDR_LEN);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue