Signed-off-by: Igor Ryzhov <iryz...@nfware.com> --- kernel/linux/kni/kni_net.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c index 7fcfa106c..128a5477c 100644 --- a/kernel/linux/kni/kni_net.c +++ b/kernel/linux/kni/kni_net.c @@ -678,6 +678,19 @@ kni_net_header(struct sk_buff *skb, struct net_device *dev, return dev->hard_header_len; } +/* + * Extract hardware address from packet + */ +static int +kni_net_header_parse(const struct sk_buff *skb, unsigned char *haddr) +{ + const struct ethhdr *eth = eth_hdr(skb); + + memcpy(haddr, eth->h_source, ETH_ALEN); + + return ETH_ALEN; +} + /* * Re-fill the eth header */ @@ -739,6 +752,7 @@ kni_net_change_carrier(struct net_device *dev, bool new_carrier) static const struct header_ops kni_net_header_ops = { .create = kni_net_header, + .parse = kni_net_header_parse, #ifdef HAVE_REBUILD_HEADER .rebuild = kni_net_rebuild_header, #endif /* < 4.1.0 */ -- 2.19.0