diff options
-rw-r--r-- | ring.h | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -58,7 +58,7 @@ static inline uint16_t tpacket_uhdr_vlan_tci(union tpacket_uhdr *hdr, bool v3) static inline uint16_t tpacket_uhdr_vlan_proto(union tpacket_uhdr *hdr, bool v3) { -#ifdef HAVE_TPACKET3 +#if defined(HAVE_TPACKET3) && defined(TP_STATUS_VLAN_TPID_VALID) if (v3) return hdr->h3->hv1.tp_vlan_tpid; #endif @@ -67,8 +67,14 @@ static inline uint16_t tpacket_uhdr_vlan_proto(union tpacket_uhdr *hdr, bool v3) static inline bool tpacket_has_vlan_info(union tpacket_uhdr *hdr) { + uint32_t valid = 0; + +#ifdef TP_STATUS_VLAN_TPID_VALID + valid = TP_STATUS_VLAN_VALID; +#endif + return tpacket_uhdr(*hdr, tp_status, true) & - (TP_STATUS_VLAN_VALID | TP_STATUS_VLAN_TPID_VALID); + (TP_STATUS_VLAN_VALID | valid); } struct frame_map { |