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

Reply via email to