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