@@ -57,30 +57,29 @@ typedef struct __attribute__((__packed__)) {
5757#define TCP_FLAGS_RST (1 << 2)
5858#define TCP_FLAGS_SYN (1 << 1)
5959
60+ #define APPLY_DEFINE_FIELD (dummy , a , b , ...) DEFINE_FIELD_##b
61+ #define DEFINE_FIELD_STD (type , name ) \
62+ type name; \
63+ bool enable_##name;
64+ #define DEFINE_FIELD_ARRAY (type , name , size ) \
65+ type name[size]; \
66+ bool enable_##name;
67+ #define DEFINE_FIELD (type , name , args ...) \
68+ APPLY_DEFINE_FIELD(dummy, ##args, ARRAY, STD)(type, name, ##args)
69+
6070/* used for packet filter condition */
6171typedef struct {
62- u32 saddr ;
63- bool enable_saddr ;
64- u32 daddr ;
65- bool enable_daddr ;
66- u32 addr ;
67- bool enable_addr ;
68- u8 saddr_v6 [16 ];
69- bool enable_saddr_v6 ;
70- u8 daddr_v6 [16 ];
71- bool enable_daddr_v6 ;
72- u8 addr_v6 [16 ];
73- bool enable_addr_v6 ;
74- u16 sport ;
75- bool enable_sport ;
76- u16 dport ;
77- bool enable_dport ;
78- u16 port ;
79- bool enable_port ;
80- u16 l3_proto ;
81- bool enable_l3_proto ;
82- u8 l4_proto ;
83- bool enable_l4_proto ;
72+ DEFINE_FIELD (u32 , saddr )
73+ DEFINE_FIELD (u32 , daddr )
74+ DEFINE_FIELD (u32 , addr )
75+ DEFINE_FIELD (u8 , saddr_v6 , 16 )
76+ DEFINE_FIELD (u8 , daddr_v6 , 16 )
77+ DEFINE_FIELD (u8 , addr_v6 , 16 )
78+ DEFINE_FIELD (u16 , sport )
79+ DEFINE_FIELD (u16 , dport )
80+ DEFINE_FIELD (u16 , port )
81+ DEFINE_FIELD (u16 , l3_proto )
82+ DEFINE_FIELD (u8 , l4_proto )
8483} pkt_args_t ;
8584
8685#define CONFIG_MAP_SIZE 1024
0 commit comments