diff --git a/common/include/tfe_types.h b/common/include/tfe_types.h index 7a9f6b6..749ff89 100644 --- a/common/include/tfe_types.h +++ b/common/include/tfe_types.h @@ -1,75 +1,75 @@ #pragma once #include -#include //defines struct in_addr +#include //defines struct in_addr /* network-order */ -struct stream_tuple4_v4{ - struct in_addr saddr; /* network order */ - struct in_addr daddr; /* network order */ - in_port_t source; /* network order */ - in_port_t dest; /* network order */ +struct tfe_stream_addr_tuple4_v4 +{ + struct in_addr saddr; /* network order */ + struct in_addr daddr; /* network order */ + in_port_t source; /* network order */ + in_port_t dest; /* network order */ }; - #ifndef IPV6_ADDR_LEN -#define IPV6_ADDR_LEN (sizeof(struct in6_addr)) +#define IPV6_ADDR_LEN (sizeof(struct in6_addr)) #endif -struct stream_tuple4_v6 +struct tfe_stream_addr_tuple4_v6 { struct in6_addr saddr; struct in6_addr daddr; - in_port_t source; /* network order */ - in_port_t dest; /* network order */ + in_port_t source; /* network order */ + in_port_t dest; /* network order */ }; -#define GRE_TAG_LEN (4) -struct layer_addr_gre +#define GRE_TAG_LEN (4) +struct tfe_stream_addr_gre { uint16_t gre_id; }; -#define VLAN_ID_MASK (0x0FFF) -#define VLAN_TAG_LEN (4) -struct layer_addr_vlan +#define VLAN_ID_MASK (0x0FFF) +#define VLAN_TAG_LEN (4) +struct tfe_stream_addr_vlan { - uint16_t vlan_id; /* network order */ + uint16_t vlan_id; /* network order */ }; -struct layer_addr_pppoe_session +struct tfe_stream_addr_pppoe_session { #if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned int ver:4; - unsigned int type:4; + unsigned int ver:4; + unsigned int type:4; #endif #if __BYTE_ORDER == __BIG_ENDIAN - unsigned int type:4; - unsigned int ver:4; + unsigned int type:4; + unsigned int ver:4; #endif - unsigned char code; + unsigned char code; unsigned short session_id; }; #ifndef MAC_ADDR_LEN -#define MAC_ADDR_LEN (6) +#define MAC_ADDR_LEN (6) #endif -struct layer_addr_mac +struct tfe_stream_addr_mac { uint8_t src_mac[MAC_ADDR_LEN]; /* network order */ uint8_t dst_mac[MAC_ADDR_LEN]; /* network order */ }; -struct layer_addr_ipv4 +struct tfe_stream_addr_ipv4 { - struct in_addr saddr; /* network order */ - struct in_addr daddr; /* network order */ - in_port_t source; /* network order */ - in_port_t dest; /* network order */ + struct in_addr saddr; /* network order */ + struct in_addr daddr; /* network order */ + in_port_t source; /* network order */ + in_port_t dest; /* network order */ }; -struct layer_addr_ipv6 +struct tfe_stream_addr_ipv6 { struct in6_addr saddr; /* network order */ struct in6_addr daddr; /* network order */ @@ -77,62 +77,64 @@ struct layer_addr_ipv6 in_port_t dest;/* network order */ }; -struct layer_addr_tcp +struct tfe_stream_addr_tcp { in_port_t source; /* network order */ in_port_t dest; /* network order */ }; -struct layer_addr_udp +struct tfe_stream_addr_udp { in_port_t source; /* network order */ in_port_t dest; /* network order */ }; -struct layer_addr_l2tp +struct tfe_stream_addr_l2tp { uint32_t tunnelid; /* network order */ uint32_t sessionid; /* network order */ }; -//地址类型定义 -enum addr_type_t{ - __ADDR_TYPE_INIT = 0, - ADDR_TYPE_IPV4, /* 1, 基于IPv4地址的四元组信息 */ - ADDR_TYPE_IPV6, /* 2, 基于IPv6地址的四元组信息 */ - ADDR_TYPE_VLAN, /* 3 */ - ADDR_TYPE_MAC, /* 4 */ - ADDR_TYPE_ARP = 5, /* 5 */ - ADDR_TYPE_GRE, /* 6 */ - ADDR_TYPE_MPLS, /* 7 */ - ADDR_TYPE_PPPOE_SES, /* 8 */ - ADDR_TYPE_TCP, /* 9 */ - ADDR_TYPE_UDP = 10, /* 10 */ - ADDR_TYPE_L2TP, /* 11 */ - //ADDR_TYPE_STREAM_TUPLE4_V4, /* 12, 混合地址类型, 基于IPv4地址的四元组信息 */ - //ADDR_TYPE_STREAM_TUPLE4_V6, /* 13, 混合地址类型, 基于IPv6地址的四元组信息 */ - __ADDR_TYPE_IP_PAIR_V4, /* 14, 纯IPv4地址对 */ - __ADDR_TYPE_IP_PAIR_V6, /* 15, 纯IPv6地址对 */ - __ADDR_TYPE_MAX, /* 16 */ + +enum tfe_stream_addr_type +{ + ADDR_TYPE_INIT = 0, + /* 1, 基于IPv4地址的四元组信息 */ + ADDR_TYPE_IPV4, + /* 2, 基于IPv6地址的四元组信息 */ + ADDR_TYPE_IPV6, + ADDR_TYPE_VLAN, + ADDR_TYPE_MAC, + ADDR_TYPE_ARP = 5, + ADDR_TYPE_GRE, + ADDR_TYPE_MPLS, + ADDR_TYPE_PPPOE_SES, + ADDR_TYPE_TCP, + ADDR_TYPE_UDP = 10, + ADDR_TYPE_L2TP, + /* 12, 混合地址类型, 基于IPv4地址的四元组信息 */ + ADDR_TYPE_STREAM_TUPLE4_V4, + /* 13, 混合地址类型, 基于IPv6地址的四元组信息 */ + ADDR_TYPE_STREAM_TUPLE4_V6, }; -struct layer_addr +struct tfe_stream_addr { - enum addr_type_t addrtype; /* 地址类型, 详见 enum addr_type_t */ - /* 为了方便应用插件取地址, 此处使用联合体, 省去指针类型强制转换步骤 */ + enum tfe_stream_addr_type addrtype; + uint8_t addrlen; /* 地址结构长度 */ + union { - struct stream_tuple4_v4 *tuple4_v4; - struct stream_tuple4_v6 *tuple4_v6; - struct layer_addr_ipv4 *ipv4; - struct layer_addr_ipv6 *ipv6; - struct layer_addr_vlan *vlan; - struct layer_addr_mac *mac; - struct layer_addr_gre *gre; - struct layer_addr_tcp *tcp; - struct layer_addr_udp *udp; - struct layer_addr_pppoe_session *pppoe_ses; - struct layer_addr_l2tp *l2tp; - void *paddr; + struct tfe_stream_addr_tuple4_v4 tuple4_v4[0]; + struct tfe_stream_addr_tuple4_v6 tuple4_v6[0]; + struct tfe_stream_addr_ipv4 ipv4[0]; + struct tfe_stream_addr_ipv6 ipv6[0]; + struct tfe_stream_addr_vlan vlan[0]; + struct tfe_stream_addr_mac mac[0]; + struct tfe_stream_addr_gre gre[0]; + struct tfe_stream_addr_tcp tcp[0]; + struct tfe_stream_addr_udp udp[0]; + struct tfe_stream_addr_pppoe_session pppoe_ses[0]; + struct tfe_stream_addr_l2tp l2tp[0]; + unsigned char paddr[0]; }; - uint8_t addrlen; /* 地址结构长度 */ };