]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/netapi.git/blob - ti/runtime/netapi/test/net_test_utils.h
Resolve NETAPI library coverity warnings.
[keystone-rtos/netapi.git] / ti / runtime / netapi / test / net_test_utils.h
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;
62     
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
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
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