a0b6e89f17004158c4c419bf4584397f6a1949c9
[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"
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
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_FP_THREAD];
57     uint8_t                 sp_proc_end[NET_TEST_MAX_FP_THREAD];
58     uint32_t                sp_thread_num[NET_TEST_MAX_FP_THREAD];
59     uint8_t                 num_sp_threads;
60     
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_FP_THREAD][netTest_CONFIG_STRING_LEN];
107     char sp[NET_TEST_MAX_FP_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
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
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