summaryrefslogtreecommitdiff
path: root/ring.h
diff options
context:
space:
mode:
Diffstat (limited to 'ring.h')
-rw-r--r--ring.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/ring.h b/ring.h
index f618a35..7590223 100644
--- a/ring.h
+++ b/ring.h
@@ -45,6 +45,7 @@ struct ring {
union {
struct tpacket_req layout;
struct tpacket_req3 layout3;
+ uint8_t raw;
};
};
@@ -113,6 +114,18 @@ static inline void __set_sockopt_tpacket(int sock, int val)
panic("Cannot set tpacketv2!\n");
}
+static inline int __get_sockopt_tpacket(int sock)
+{
+ int val, ret;
+ socklen_t len = sizeof(val);
+
+ ret = getsockopt(sock, SOL_PACKET, PACKET_VERSION, &val, &len);
+ if (ret)
+ panic("Cannot set tpacketv2!\n");
+
+ return val;
+}
+
static inline void set_sockopt_tpacket_v2(int sock)
{
__set_sockopt_tpacket(sock, TPACKET_V2);
@@ -123,4 +136,9 @@ static inline void set_sockopt_tpacket_v3(int sock)
__set_sockopt_tpacket(sock, TPACKET_V3);
}
+static inline int get_sockopt_tpacket(int sock)
+{
+ return __get_sockopt_tpacket(sock);
+}
+
#endif /* RING_H */