MCPcopy Create free account
hub / github.com/F-Stack/f-stack / parse_sa_tokens

Function parse_sa_tokens

dpdk/examples/ipsec-secgw/sa.c:368–964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

366}
367
368void
369parse_sa_tokens(char **tokens, uint32_t n_tokens,
370 struct parse_status *status)
371{
372 struct ipsec_sa *rule = NULL;
373 struct rte_ipsec_session *ips;
374 uint32_t ti; /*token index*/
375 uint32_t *ri /*rule index*/;
376 struct ipsec_sa_cnt *sa_cnt;
377 uint32_t cipher_algo_p = 0;
378 uint32_t auth_algo_p = 0;
379 uint32_t aead_algo_p = 0;
380 uint32_t src_p = 0;
381 uint32_t dst_p = 0;
382 uint32_t mode_p = 0;
383 uint32_t type_p = 0;
384 uint32_t portid_p = 0;
385 uint32_t fallback_p = 0;
386 int16_t status_p = 0;
387 uint16_t udp_encap_p = 0;
388
389 if (strcmp(tokens[0], "in") == 0) {
390 ri = &nb_sa_in;
391 sa_cnt = &sa_in_cnt;
392 if (extend_sa_arr(&sa_in, nb_sa_in, &sa_in_sz) < 0)
393 return;
394 rule = &sa_in[*ri];
395 rule->direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS;
396 } else {
397 ri = &nb_sa_out;
398 sa_cnt = &sa_out_cnt;
399 if (extend_sa_arr(&sa_out, nb_sa_out, &sa_out_sz) < 0)
400 return;
401 rule = &sa_out[*ri];
402 rule->direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS;
403 }
404
405 /* spi number */
406 APP_CHECK_TOKEN_IS_NUM(tokens, 1, status);
407 if (status->status < 0)
408 return;
409 if (atoi(tokens[1]) == INVALID_SPI)
410 return;
411 rule->flags = 0;
412 rule->spi = atoi(tokens[1]);
413 rule->portid = UINT16_MAX;
414 ips = ipsec_get_primary_session(rule);
415
416 for (ti = 2; ti < n_tokens; ti++) {
417 if (strcmp(tokens[ti], "mode") == 0) {
418 APP_CHECK_PRESENCE(mode_p, tokens[ti], status);
419 if (status->status < 0)
420 return;
421
422 INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
423 if (status->status < 0)
424 return;
425

Callers 1

Calls 14

strcmpFunction · 0.85
extend_sa_arrFunction · 0.85
parse_key_stringFunction · 0.85
rte_randFunction · 0.85
find_match_aead_algoFunction · 0.85
check_flow_paramsFunction · 0.85
find_match_cipher_algoFunction · 0.70
find_match_auth_algoFunction · 0.70
parse_ipv4_addrFunction · 0.70
parse_ipv6_addrFunction · 0.70

Tested by

no test coverage detected