From 65f4d79929771e5afa4ac25274f159c57ab439af Mon Sep 17 00:00:00 2001 From: Lu Qiuwen Date: Tue, 4 Sep 2018 10:40:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9tfe=5Ftypes.h=EF=BC=8C?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=8E=9Fstream.h=E4=B8=AD=E7=9A=84=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89=E3=80=82=20*=20?= =?UTF-8?q?=E4=B8=BA=E9=81=BF=E5=85=8D=E5=86=B2=E7=AA=81=EF=BC=8C=E5=B0=86?= =?UTF-8?q?layer=5Faddr*=E7=B3=BB=E5=88=97=E5=90=8D=E7=A7=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BAtfe=5Fstream=5Faddr*=E7=B3=BB=E5=88=97=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=20*=20=E5=B0=86=E5=8E=9F=E7=94=A8=E6=8C=87=E9=92=88?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=9A=84=E5=8F=98=E9=95=BF=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BD=93=E6=94=B9=E4=B8=BA=E7=94=A8=E9=9B=B6=E5=AD=97=E8=8A=82?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E5=AE=9E=E7=8E=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/include/tfe_types.h | 140 +++++++++++++++++++------------------ 1 file changed, 71 insertions(+), 69 deletions(-) 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; /* 地址结构长度 */ };