diff options
Diffstat (limited to 'VNFs/DPPD-PROX/task_init.h')
-rw-r--r-- | VNFs/DPPD-PROX/task_init.h | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/VNFs/DPPD-PROX/task_init.h b/VNFs/DPPD-PROX/task_init.h index 5186826a..53bfaf35 100644 --- a/VNFs/DPPD-PROX/task_init.h +++ b/VNFs/DPPD-PROX/task_init.h @@ -1,5 +1,5 @@ /* -// Copyright (c) 2010-2017 Intel Corporation +// Copyright (c) 2010-2020 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,11 +22,13 @@ #include <rte_common.h> #include <rte_sched.h> #include <rte_ether.h> +#include "prox_compat.h" #include "task_base.h" #include "prox_globals.h" #include "ip6_addr.h" #include "flow_iter.h" #include "parse_utils.h" +#include "prox_compat.h" struct rte_mbuf; struct lcore_cfg; @@ -47,6 +49,8 @@ struct lcore_cfg; #define TASK_ARG_DO_NOT_SET_DST_MAC 0x400 #define TASK_ARG_HW_SRC_MAC 0x800 #define TASK_ARG_L3 0x1000 +#define TASK_ARG_NDP 0x2000 +#define TASK_ARG_SEND_NA_AT_STARTUP 0x4000 #define PROX_MODE_LEN 32 @@ -59,7 +63,7 @@ struct qos_cfg { }; enum task_mode {NOT_SET, MASTER, QINQ_DECAP4, QINQ_DECAP6, - QINQ_ENCAP4, QINQ_ENCAP6, GRE_DECAP, GRE_ENCAP,CGNAT, ESP_ENC, ESP_DEC, + QINQ_ENCAP4, QINQ_ENCAP6, GRE_DECAP, GRE_ENCAP,CGNAT, ESP_ENC, ESP_DEC, QOS, POLICE }; struct task_args; @@ -89,13 +93,21 @@ static int task_init_flag_set(struct task_init *task_init, uint64_t flag) } enum police_action { - ACT_GREEN = e_RTE_METER_GREEN, - ACT_YELLOW = e_RTE_METER_YELLOW, - ACT_RED = e_RTE_METER_RED, + ACT_GREEN = RTE_COLOR_GREEN, + ACT_YELLOW = RTE_COLOR_YELLOW, + ACT_RED = RTE_COLOR_RED, ACT_DROP = 3, ACT_INVALID = 4 }; +struct range { + uint32_t min; + uint32_t value; + uint32_t max; + uint32_t offset; + uint8_t range_len; +}; + /* Configuration for task that is only used during startup. */ struct task_args { struct task_base *tbase; @@ -124,16 +136,23 @@ struct task_args { uint8_t tot_rxrings; uint8_t nb_rxports; uint32_t byte_offset; + uint32_t ipv6_router; uint32_t gateway_ipv4; uint32_t local_ipv4; uint32_t remote_ipv4; + uint32_t local_prefix; + uint32_t reachable_timeout; + uint32_t arp_ndp_retransmit_timeout; struct ipv6_addr local_ipv6; /* For IPv6 Tunnel, it's the local tunnel endpoint address */ + struct ipv6_addr global_ipv6; + struct ipv6_addr gateway_ipv6; + struct ipv6_addr router_prefix; struct rte_ring *rx_rings[MAX_RINGS_PER_TASK]; struct rte_ring *tx_rings[MAX_RINGS_PER_TASK]; struct rte_ring *ctrl_plane_ring; uint32_t tot_n_txrings_inited; - struct ether_addr edaddr; - struct ether_addr esaddr; + prox_rte_ether_addr edaddr; + prox_rte_ether_addr esaddr; struct port_queue tx_port_queue[PROX_MAX_PORTS]; struct port_queue rx_port_queue[PROX_MAX_PORTS]; /* Used to set up actual task at initialization time. */ @@ -180,10 +199,15 @@ struct task_args { /* gen related*/ uint64_t rate_bps; uint32_t n_rand_str; - char rand_str[64][64]; + uint32_t n_ranges; uint32_t rand_offset[64]; + char rand_str[64][64]; + struct range range[64]; char pcap_file[256]; uint32_t accur_pos; + uint32_t flow_id_pos; + uint32_t packet_id_in_flow_pos; + uint32_t flow_count; uint32_t sig_pos; uint32_t sig; uint32_t lat_pos; @@ -193,7 +217,9 @@ struct task_args { uint32_t lat_enabled; uint32_t pkt_size; uint8_t pkt_inline[MAX_PKT_SIZE]; - uint32_t probability; + uint32_t probability_no_drop; + uint32_t probability_duplicate; + uint32_t probability_delay; char nat_table[256]; uint32_t use_src; char route_table[256]; @@ -230,6 +256,13 @@ struct task_args { uint irq_debug; struct task_base *tmaster; char sub_mode_str[PROX_MODE_LEN]; + uint32_t igmp_address; + uint32_t imix_nb_pkts; + uint32_t imix_pkt_sizes[MAX_IMIX_PKTS]; + uint32_t multiplier; + uint32_t mirror_size; + uint32_t store_max; + uint32_t loss_buffer_size; }; /* Return the first port that is reachable through the task. If the |