diff options
author | Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com> | 2017-06-08 02:53:22 +0530 |
---|---|---|
committer | Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com> | 2017-07-18 13:10:56 +0530 |
commit | 5997f97a236457f2994820d39e3738dfd61076e4 (patch) | |
tree | 1b5c6d25d90f960ddd6447091f1c36cee9b9d5ce /common/VIL/pipeline_txrx/pipeline_txrx_be.c | |
parent | 0e51437be874b6831e95639f4c1ad6b0133c2a28 (diff) |
[l2l3 stack] implements new nd state machine & nd buffering
JIRA: SAMPLEVNF-32
This patch implements
~New nd state machine implementing new states
like INCOMPLETE, COMPLETE, PROBE, STALE.
~Implementing nd buffering, when nd is unresolved.
~Integratig the new changes with vCGNAPT
~Integrating the new changes with vACL
~Integrating the new changes with vFW.
~Adding locks to synchronize against multiple VNF threads
Change-Id: Iaee4f4599ca3016ebb50ee2d9133fd8c39c5cd04
Signed-off-by: Vishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>
Diffstat (limited to 'common/VIL/pipeline_txrx/pipeline_txrx_be.c')
-rw-r--r-- | common/VIL/pipeline_txrx/pipeline_txrx_be.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/common/VIL/pipeline_txrx/pipeline_txrx_be.c b/common/VIL/pipeline_txrx/pipeline_txrx_be.c index b47ee98e..0f9ec3d7 100644 --- a/common/VIL/pipeline_txrx/pipeline_txrx_be.c +++ b/common/VIL/pipeline_txrx/pipeline_txrx_be.c @@ -30,9 +30,7 @@ #include "pipeline_arpicmp_be.h" #include "vnf_common.h" #include "app.h" -#ifndef VNF_ACL #include "lib_icmpv6.h" -#endif uint8_t TXRX_DEBUG; int pkt_burst_cnt; @@ -265,9 +263,8 @@ pkt_work_txrx(struct rte_mbuf *pkt, uint32_t pkt_num, void *arg) || !memcmp(ipv6_h->dst_addr, solicited_node_multicast_addr, 13)) { rte_pipeline_port_out_packet_insert(p_txrx->p.p, out_port, pkt); - rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask); + rte_pipeline_ah_packet_hijack(p_txrx->p.p, pkt_mask); } else { - printf("Dropping the IPv6 pkt\n"); rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask); } } @@ -414,7 +411,7 @@ pkt4_work_txrx(struct rte_mbuf **pkt, uint32_t pkt_num, void *arg) || !memcmp(ipv6_h0->dst_addr, solicited_node_multicast_addr, 13)) { rte_pipeline_port_out_packet_insert(p_txrx->p.p, out_port, pkt[0]); - rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask0); + rte_pipeline_ah_packet_hijack(p_txrx->p.p, pkt_mask0); } else { rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask0); @@ -473,19 +470,14 @@ pkt4_work_txrx(struct rte_mbuf **pkt, uint32_t pkt_num, void *arg) #ifdef IPV6 case ETH_TYPE_IPV6: if (*protocol1 == ICMPV6_PROTOCOL_ID) { - #ifndef VNF_ACL if (!memcmp(ipv6_h1->dst_addr, link->ipv6, 16) || !memcmp(ipv6_h1->dst_addr, solicited_node_multicast_addr, 13)) { - #endif rte_pipeline_port_out_packet_insert(p_txrx->p.p, out_port, pkt[1]); - rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask1); - #ifndef VNF_ACL + rte_pipeline_ah_packet_hijack(p_txrx->p.p, pkt_mask1); } else { - printf("Dropping the IPv6 pkt\n"); rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask1); } - #endif } break; #endif @@ -539,19 +531,14 @@ pkt4_work_txrx(struct rte_mbuf **pkt, uint32_t pkt_num, void *arg) #ifdef IPV6 case ETH_TYPE_IPV6: if (*protocol2 == ICMPV6_PROTOCOL_ID) { - #ifndef VNF_ACL if (!memcmp(ipv6_h2->dst_addr, link->ipv6, 16) || !memcmp(ipv6_h2->dst_addr, solicited_node_multicast_addr, 13)) { - #endif rte_pipeline_port_out_packet_insert(p_txrx->p.p, out_port, pkt[2]); - rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask2); - #ifndef VNF_ACL + rte_pipeline_ah_packet_hijack(p_txrx->p.p, pkt_mask2); } else { - printf("Dropping the IPv6 pkt\n"); rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask2); } - #endif } break; #endif @@ -605,19 +592,14 @@ pkt4_work_txrx(struct rte_mbuf **pkt, uint32_t pkt_num, void *arg) #ifdef IPV6 case ETH_TYPE_IPV6: if (*protocol3 == ICMPV6_PROTOCOL_ID) { - #ifndef VNF_ACL if (!memcmp(ipv6_h3->dst_addr, link->ipv6, 16) || !memcmp(ipv6_h3->dst_addr, solicited_node_multicast_addr, 13)) { - #endif rte_pipeline_port_out_packet_insert(p_txrx->p.p, out_port, pkt[3]); - rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask3); - #ifndef VNF_ACL + rte_pipeline_ah_packet_hijack(p_txrx->p.p, pkt_mask3); } else { - printf("Dropping the IPv6 pkt\n"); rte_pipeline_ah_packet_drop(p_txrx->p.p, pkt_mask3); } - #endif } break; #endif |