summaryrefslogtreecommitdiffstats
path: root/common/VIL/pipeline_txrx/pipeline_txrx_be.c
diff options
context:
space:
mode:
authorVishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>2017-06-08 02:53:22 +0530
committerVishwesh M Rudramuni <vishwesh.m.rudramuni@intel.com>2017-07-18 13:10:56 +0530
commit5997f97a236457f2994820d39e3738dfd61076e4 (patch)
tree1b5c6d25d90f960ddd6447091f1c36cee9b9d5ce /common/VIL/pipeline_txrx/pipeline_txrx_be.c
parent0e51437be874b6831e95639f4c1ad6b0133c2a28 (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.c28
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