X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=VNFs%2FDPPD-PROX%2Ftask_init.h;h=9fa9f92b8f8b712831b5dc2970a2524a8e9e1482;hb=d11d6d0006c890d586e0d2d3382436804cda8625;hp=beb4de02dd2fd563205486efae9eea6d734b1b57;hpb=a0eb3c45ca8a89220caaefa43665a7a1eb6c1933;p=samplevnf.git diff --git a/VNFs/DPPD-PROX/task_init.h b/VNFs/DPPD-PROX/task_init.h index beb4de02..9fa9f92b 100644 --- a/VNFs/DPPD-PROX/task_init.h +++ b/VNFs/DPPD-PROX/task_init.h @@ -27,6 +27,7 @@ #include "ip6_addr.h" #include "flow_iter.h" #include "parse_utils.h" +#include "prox_compat.h" struct rte_mbuf; struct lcore_cfg; @@ -46,6 +47,9 @@ struct lcore_cfg; #define TASK_ARG_DO_NOT_SET_SRC_MAC 0x200 #define TASK_ARG_DO_NOT_SET_DST_MAC 0x400 #define TASK_ARG_HW_SRC_MAC 0x800 +#define TASK_ARG_L3 0x1000 + +#define PROX_MODE_LEN 32 enum protocols {IPV4, ARP, IPV6}; @@ -56,15 +60,15 @@ struct qos_cfg { }; enum task_mode {NOT_SET, MASTER, QINQ_DECAP4, QINQ_DECAP6, - QINQ_ENCAP4, QINQ_ENCAP6, GRE_DECAP, GRE_ENCAP,CGNAT, + QINQ_ENCAP4, QINQ_ENCAP6, GRE_DECAP, GRE_ENCAP,CGNAT, ESP_ENC, ESP_DEC, QOS, POLICE }; struct task_args; struct task_init { enum task_mode mode; - char mode_str[32]; - char sub_mode_str[32]; + char mode_str[PROX_MODE_LEN]; + char sub_mode_str[PROX_MODE_LEN]; void (*early_init)(struct task_args *targ); void (*init)(struct task_base *tbase, struct task_args *targ); int (*handle)(struct task_base *tbase, struct rte_mbuf **mbufs, const uint16_t n_pkts); @@ -77,7 +81,6 @@ struct task_init { size_t size; uint16_t flag_req_data; /* flags from prox_shared.h */ uint64_t flag_features; - uint32_t mbuf_size; LIST_ENTRY(task_init) entries; }; @@ -87,9 +90,9 @@ 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 }; @@ -103,7 +106,6 @@ struct task_args { struct lcore_cfg *lconf; uint32_t nb_mbuf; uint32_t mbuf_size; - uint8_t mbuf_size_set_explicitely; uint32_t nb_cache_mbuf; uint8_t nb_slave_threads; uint8_t nb_worker_threads; @@ -124,11 +126,14 @@ struct task_args { uint8_t nb_rxports; uint32_t byte_offset; uint32_t gateway_ipv4; - uint32_t number_gen_ip; uint32_t local_ipv4; + uint32_t remote_ipv4; + uint32_t arp_timeout; + uint32_t arp_update_time; struct ipv6_addr local_ipv6; /* For IPv6 Tunnel, it's the local tunnel endpoint address */ 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; @@ -190,7 +195,7 @@ struct task_args { uint32_t bucket_size; uint32_t lat_enabled; uint32_t pkt_size; - uint8_t pkt_inline[ETHER_MAX_LEN]; + uint8_t pkt_inline[MAX_PKT_SIZE]; uint32_t probability; char nat_table[256]; uint32_t use_src; @@ -222,6 +227,13 @@ struct task_args { struct rte_hash *private_ip_port_hash; struct rte_hash *private_ip_hash; struct private_ip_info *private_ip_info; + struct rte_ring **ctrl_rx_rings; + struct rte_ring **ctrl_tx_rings; + int n_ctrl_rings; + uint irq_debug; + struct task_base *tmaster; + char sub_mode_str[PROX_MODE_LEN]; + uint32_t igmp_address; }; /* Return the first port that is reachable through the task. If the @@ -233,6 +245,7 @@ struct prox_port_cfg *find_reachable_port(struct task_args *from); struct task_base *init_task_struct(struct task_args *targ); struct task_init *to_task_init(const char *mode_str, const char *sub_mode_str); void tasks_list(void); +int task_is_master(struct task_args *targ); void reg_task(struct task_init* t);