diff options
Diffstat (limited to 'VNFs/DPPD-PROX/prox_args.c')
-rw-r--r-- | VNFs/DPPD-PROX/prox_args.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/VNFs/DPPD-PROX/prox_args.c b/VNFs/DPPD-PROX/prox_args.c index cb0dcb31..cc8b3b25 100644 --- a/VNFs/DPPD-PROX/prox_args.c +++ b/VNFs/DPPD-PROX/prox_args.c @@ -1009,6 +1009,34 @@ static int get_core_cfg(unsigned sindex, char *str, void *data) if (STR_EQ(str, "pcap file")) { return parse_str(targ->pcap_file, pkey, sizeof(targ->pcap_file)); } + if (STR_EQ(str, "imix")) { + char pkey2[MAX_CFG_STRING_LEN], *ptr; + if (parse_str(pkey2, pkey, sizeof(pkey2)) != 0) { + set_errf("Error while parsing imix, too long\n"); + return -1; + } + const size_t pkey_len = strlen(pkey2); + targ->imix_nb_pkts = 0; + ptr = pkey2; + while (targ->imix_nb_pkts < MAX_IMIX_PKTS) { + if (parse_int(&targ->imix_pkt_sizes[targ->imix_nb_pkts], ptr) != 0) + break; + targ->imix_nb_pkts++; + if ((ptr = strchr(ptr, ',')) == NULL) + break; + ptr++; + if (targ->imix_nb_pkts == MAX_IMIX_PKTS) { + set_errf("Too many packet sizes specified"); + return -1; + } + } + plog_info("%d IMIX packets:", targ->imix_nb_pkts); + for (size_t i = 0; i < targ->imix_nb_pkts; ++i) { + plog_info("%d ", targ->imix_pkt_sizes[i]); + } + plog_info("\n"); + return 0; + } if (STR_EQ(str, "pkt inline")) { char pkey2[MAX_CFG_STRING_LEN]; if (parse_str(pkey2, pkey, sizeof(pkey2)) != 0) { |