From: Vadim Kochan <vadi...@gmail.com>

Add proto_vlan.h with helpers to parse VLAN fields.

Signed-off-by: Vadim Kochan <vadi...@gmail.com>
---
 proto_vlan.c |  7 ++++---
 proto_vlan.h | 27 +++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 3 deletions(-)
 create mode 100644 proto_vlan.h

diff --git a/proto_vlan.c b/proto_vlan.c
index a175dde..c1b3e65 100644
--- a/proto_vlan.c
+++ b/proto_vlan.c
@@ -10,6 +10,7 @@
 #include <netinet/in.h>    /* for ntohs() */
 
 #include "proto.h"
+#include "proto_vlan.h"
 #include "dissector_eth.h"
 #include "pkt_buff.h"
 
@@ -29,9 +30,9 @@ static void vlan(struct pkt_buff *pkt)
        tci = ntohs(vlan->h_vlan_TCI);
 
        tprintf(" [ VLAN ");
-       tprintf("Prio (%d), ", (tci & 0xE000) >> 13);
-       tprintf("CFI (%d), ", (tci & 0x1000) >> 12);
-       tprintf("ID (%d), ", (tci & 0x0FFF));
+       tprintf("Prio (%d), ", vlan_tci2prio(tci));
+       tprintf("CFI (%d), ", vlan_tci2cfi(tci));
+       tprintf("ID (%d), ", vlan_tci2vid(tci));
        tprintf("Proto (0x%.4x)", ntohs(vlan->h_vlan_encapsulated_proto));
        tprintf(" ]\n");
 
diff --git a/proto_vlan.h b/proto_vlan.h
new file mode 100644
index 0000000..dc31cfa
--- /dev/null
+++ b/proto_vlan.h
@@ -0,0 +1,27 @@
+/*
+ * proto_vlan.h - VLAN proto helpers & declarations
+ * Subject to the GPL, version 2.
+ */
+
+#ifndef PROTO_VLAN_H
+#define PROTO_VLAN_H
+
+#include <stdbool.h>
+#include <inttypes.h>
+
+static inline uint16_t vlan_tci2prio(uint16_t tci)
+{
+       return (tci & 0xe000) >> 13;
+}
+
+static inline uint16_t vlan_tci2cfi(uint16_t tci)
+{
+       return (tci & 0x1000) >> 12;
+}
+
+static inline uint16_t vlan_tci2vid(uint16_t tci)
+{
+       return tci & 0x0fff;
+}
+
+#endif
-- 
2.4.2

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netsniff-ng+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to