unet-cli: add DHT support
[project/unetd.git] / bpf_skb_utils.h
index 4953c86ca3b78cd00e905a34efb9663b40329050..e6d5f00c724a08f1ea5540ff459e2e8e79ed31a1 100644 (file)
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Copyright (C) 2022 Felix Fietkau <nbd@nbd.name>
  */
@@ -56,6 +56,12 @@ static __always_inline struct ethhdr *
 skb_parse_ethernet(struct skb_parser_info *info)
 {
        struct ethhdr *eth;
+       int len;
+
+       len = sizeof(*eth) + 2 * sizeof(struct vlan_hdr) + sizeof(struct ipv6hdr);
+       if (len > info->skb->len)
+               len = info->skb->len;
+       bpf_skb_pull_data(info->skb, len);
 
        eth = skb_info_ptr(info, sizeof(*eth));
        if (!eth)