Fix bug of kni while set `vlan_strip=0`.

dev
fengbojiang(姜凤波) 2019-08-06 22:05:27 +08:00
parent a08b952138
commit 3bb4314f74
1 changed files with 6 additions and 3 deletions

View File

@ -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
}