1 #ifndef __NET_TEST_UTIL_H__
2 #define __NET_TEST_UTIL_H__
5 //#include "trie.h"
6 #include "net_test.h"
8 #define MAX_SEC_INDEX 64
9 #define NET_TEST_MAX_MAC 64
10 #define NET_TEST_MAX_IP 64
11 #define NET_TEST_MAX_FP_THREAD 5
12 #define NET_TEST_MAX_SP_THREAD 5
13 #define MAX_LINE_LENGTH 512
14 #define MAX_ROUTES 16
16 #define BE(x) ( (((x)&0xff000000)>>24) | (((x)&0xff0000)>>8) | (((x)&0xff00)<<8) | (((x)&0xff)<<24) )
18 /* The input strings requirEd for parsing certain configuration
19 * paremeters from the config file */
20 #define netTest_INIT_CONFIG_IPSEC_MODE_RX "ipsec_mode_rx"
21 #define netTest_INIT_CONFIG_IPSEC_MODE_TX "ipsec_mode_tx"
22 #define netTest_INIT_CONFIG_IPSEC_IF_NO "ipsec_if"
23 #define netTest_INIT_CONFIG_DSP_MAC "dsp_mac"
24 #define netTest_INIT_CONFIG_DSP_IP "dsp_ip"
25 #define netTest_INIT_CONFIG_STATIC_LOOPBACK_PORT "dest_udp_port_config"
26 #define netTest_CONFIG_STRING_LEN 512
28 //IPSEC MODE(only choose one rx and one tx)
29 #define IPSEC_MODE_RX_INFLOW 1
30 #define IPSEC_MODE_TX_INFLOW 2
31 #define IPSEC_MODE_RX_SIDEBAND 3
32 #define IPSEC_MODE_TX_SIDEBAND 4
34 #define netTest_PKT_LEN 1400
36 #define NET_TEST_SP_THREAD_MASK 0xF0000000
37 #define NET_TEST_THREAD_NUM_MASK 0x000000FF
39 typedef struct {
40 unsigned char mac[NET_TEST_MAX_MAC][6];
41 uint8_t num_macs;
42 uint8_t switch_port[NET_TEST_MAX_MAC];
43 nwalIpAddr_t ip[NET_TEST_MAX_IP];
44 uint8_t num_ips;
45 uint8_t attach_iface[NET_TEST_MAX_IP];
46 nwalIpAddr_t local_ipsec_ip;
47 nwalIpAddr_t remote_ipsec_ip;
48 uint8_t ipsec_mode_rx;
49 uint8_t ipsec_mode_tx;
50 int ipsec_if_no;
51 int dest_udp_port_config;
52 uint8_t fp_proc_start[NET_TEST_MAX_FP_THREAD];
53 uint8_t fp_proc_end[NET_TEST_MAX_FP_THREAD];
54 uint32_t fp_thread_num[NET_TEST_MAX_FP_THREAD];
55 uint8_t num_fp_threads;
56 uint8_t sp_proc_start[NET_TEST_MAX_SP_THREAD];
57 uint8_t sp_proc_end[NET_TEST_MAX_SP_THREAD];
58 uint32_t sp_thread_num[NET_TEST_MAX_SP_THREAD];
59 uint8_t num_sp_threads;
61 uint8_t auth_key[MAX_SEC_INDEX][36];
62 uint8_t encr_key[MAX_SEC_INDEX][36];
63 uint32_t tunnel_id[MAX_SEC_INDEX];
64 NETAPI_SEC_SA_INFO_T sa[MAX_SEC_INDEX];
65 uint8_t num_sa;
66 nwalSecKeyParams_t key_params[MAX_SEC_INDEX];
67 uint8_t dsp_mac;
68 uint8_t dsp_ip;
70 } netTestConfig_t;
72 typedef struct
73 {
74 char dir[netTest_CONFIG_STRING_LEN];
75 char spi[netTest_CONFIG_STRING_LEN];
76 char proto[netTest_CONFIG_STRING_LEN];
77 char saMode[netTest_CONFIG_STRING_LEN];
78 char ipType[netTest_CONFIG_STRING_LEN];
79 char src[netTest_CONFIG_STRING_LEN];
80 char dst[netTest_CONFIG_STRING_LEN];
81 char replayWindow[netTest_CONFIG_STRING_LEN];
82 char authMode[netTest_CONFIG_STRING_LEN];
83 char cipherMode[netTest_CONFIG_STRING_LEN];
84 char esnLo[netTest_CONFIG_STRING_LEN];
85 char esnHi[netTest_CONFIG_STRING_LEN];
86 char encKeySize[netTest_CONFIG_STRING_LEN];
87 char macKeySize[netTest_CONFIG_STRING_LEN];
88 char auth_key[netTest_CONFIG_STRING_LEN];
89 char encr_key[netTest_CONFIG_STRING_LEN];
90 char tunnel_id[netTest_CONFIG_STRING_LEN];
91 } netTestConfigSA_t;
93 typedef struct{
94 char mac[NET_TEST_MAX_MAC][netTest_CONFIG_STRING_LEN];
95 char switch_port[NET_TEST_MAX_MAC][netTest_CONFIG_STRING_LEN];
96 char ip[NET_TEST_MAX_IP][netTest_CONFIG_STRING_LEN];
97 char attach_iface [NET_TEST_MAX_MAC][netTest_CONFIG_STRING_LEN];
98 char ipsec_mode_rx[netTest_CONFIG_STRING_LEN];
99 char ipsec_mode_tx[netTest_CONFIG_STRING_LEN];
100 char routes[MAX_ROUTES][netTest_CONFIG_STRING_LEN];
101 char ports[MAX_ROUTES][netTest_CONFIG_STRING_LEN];
102 char dst_ips[MAX_ROUTES][netTest_CONFIG_STRING_LEN];
103 char paths[MAX_ROUTES][netTest_CONFIG_STRING_LEN];
104 char ipsec_if_no[netTest_CONFIG_STRING_LEN];
105 char fp_thread_num[NET_TEST_MAX_FP_THREAD][netTest_CONFIG_STRING_LEN];
106 char sp_thread_num[NET_TEST_MAX_SP_THREAD][netTest_CONFIG_STRING_LEN];
107 char sp[NET_TEST_MAX_SP_THREAD][netTest_CONFIG_STRING_LEN];
108 char fp[NET_TEST_MAX_FP_THREAD][netTest_CONFIG_STRING_LEN];
109 char tunnel_id[netTest_CONFIG_STRING_LEN];
110 netTestConfigSA_t sa_config[MAX_SEC_INDEX][netTest_CONFIG_STRING_LEN];
111 char dsp_mac[netTest_CONFIG_STRING_LEN];
112 char dsp_ip[netTest_CONFIG_STRING_LEN];
113 char dest_udp_port_config[netTest_CONFIG_STRING_LEN];
114 } netTestConfigFile_t;
116 typedef struct {
117 int iface;
118 int ipcsum;
119 int l4csum;
120 } LastPktInfo_t;
123 //#define netTestSA_t netTestSA_t
125 typedef struct our_route_t
126 {
127 int out_port;
128 unsigned char out_mac[14];
129 netTestSA_t * sec_ptr;
130 } OUR_ROUTE_T;
132 typedef struct {
133 long itx; //initially generated
134 long itx2;
135 long rx;
136 long tx;
137 long n_bad;
138 long n_new;
139 long n_class0_rx; //count of pkts classified
140 long n_class1_rx; //count of pkts classified
141 long n_class2_rx; //count of pkts classified
142 long n_t1;
143 long n_t2;
144 long n_t3;
145 long sec_tx;
146 long sec_rx;
147 long sb_tx;
148 long sb_rx;
149 long secp_rx;
150 long n_auth_ok;
151 unsigned long long app_cycles;
152 unsigned long long send_cycles;
153 unsigned long long tx_cache_cycles;
154 unsigned long long total_decrypt_time;
155 unsigned long long total_encrypt_time;
156 long rx_min;
157 long tx_min;
158 long if_rx[TUNE_NETAPI_MAX_NUM_MAC];
159 long core_rx;
160 long n_stats_cb;
161 long ip;
162 long exceptionPktsFrag;
163 long exceptionPktsOther;
164 } netTestStats_T;
166 #if 1
167 typedef struct
168 {
169 long ip[5];
170 long udp[2];
171 } netTestHead_T;
172 #endif
174 void house(NETAPI_SCHED_HANDLE_T *s);
175 void netTest_utilCreateInterfaces(uint8_t num_macs, uint8_t num_ips);
176 void netTest_utilDeleteInterfaces(uint8_t num_macs, uint8_t num_ips);
178 int netTest_utilCheckHeader(netTestHead_T * p_head, PKTIO_METADATA_T * p_meta);
179 void netTest_utilMySig(int x);
180 unsigned long netTest_utilPeek(unsigned long * p);
181 void netTest_utilDumpDescr(unsigned long *p, int n);
182 void netTest_utilDumpHeader(unsigned long *p, int n, int a, int r);
183 void netTest_utilDumpBuffer(unsigned long * buf,uint32_t buf_length);
184 long netTest_utilHtonl(long x);
185 unsigned char netTest_utilHex2Dec(char *p_s);
186 uint16_t netTest_utilOnesComplementAdd (uint16_t v1, uint16_t v2);
187 uint16_t netTest_utilOnesCompChkSum (uint8_t *p, uint32_t nwords);
188 uint16_t netTest_utilGetIPv4PsudoChkSum (uint8_t *data, uint16_t payloadLen);
189 void netTest_utilPrintIPSecStats(Sa_IpsecStats_t *p_saIpsecStats, nwal_saAALG auth, nwal_saEALG cipher);
190 void netTest_utilPrintDataModeStats(Sa_DataModeStats_t *p_saDataModeStats, nwal_saAALG auth, nwal_saEALG cipher);
191 void netTest_utilStatsCbMt(NETAPI_T h, paSysStats_t* pPaStats);
192 void netTest_utilsStatsCb(NETAPI_T h, paSysStats_t* pPaStats);
195 void netTest_utilParseOneMac(char * p_mac_str, unsigned char *p_mac);
196 void netTest_utilParseOneKey(char *p_key_str, unsigned char *p_key);
197 void netTest_utilParseOneIP(char * p_ip_addr_str, unsigned char * p_ip);
198 void netTest_utilParseMac(netTestConfigFile_t *pConfig);
199 void netTest_utilParseIP(netTestConfigFile_t *pConfig);
200 void netTest_utilParseThreadParams(netTestConfigFile_t *pConfig);
201 void netTest_utilParseIpsecMode(netTestConfigFile_t *pConfig);
202 void netTest_utilParseAuthMode(char *auth_mode_str, nwal_saAALG *auth_mode);
203 void netTest_utilParseEncryptMode(char *ency_mode_str, nwal_saEALG*encr_mode);
204 void netTest_utilParseProto(char *proto_str, nwal_IpSecProto *proto);
205 void netTest_utilParseSaMode(char *mode_str, nwal_saMode *mode);
206 void netTest_utilParseIPType(char *ip_type_str, nwal_IpType *ipType);
207 void netTest_utilParseSADir(char* dir_str, nwal_SaDir *dir);
208 void netTest_utilParseSA(netTestConfigFile_t *pConfig);
209 void netTest_utilParseRoutes(netTestConfigFile_t* pConfig, OUR_ROUTE_T* routes, Trie** our_router);
210 void netTest_utilProcessConfigFile(FILE* fpr, netTestConfigFile_t* pConfig);
213 #endif