summaryrefslogtreecommitdiffstats
path: root/common/VIL/pipeline_arpicmp/pipeline_arpicmp.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_arpicmp/pipeline_arpicmp.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_arpicmp/pipeline_arpicmp.c')
-rw-r--r--common/VIL/pipeline_arpicmp/pipeline_arpicmp.c47
1 files changed, 15 insertions, 32 deletions
diff --git a/common/VIL/pipeline_arpicmp/pipeline_arpicmp.c b/common/VIL/pipeline_arpicmp/pipeline_arpicmp.c
index 43e0be2d..6b42ad77 100644
--- a/common/VIL/pipeline_arpicmp/pipeline_arpicmp.c
+++ b/common/VIL/pipeline_arpicmp/pipeline_arpicmp.c
@@ -28,9 +28,7 @@
#include "app.h"
#include "vnf_common.h"
-#ifndef VNF_ACL
#include "lib_arp.h"
-#endif
#include <rte_ip.h>
#include <rte_udp.h>
@@ -97,9 +95,7 @@ cmd_arp_add_parsed(void *parsed_result,
} else {
memcpy(ipv6, params->ip.addr.ipv6.s6_addr, 16);
populate_nd_entry(&params->macaddr, ipv6, params->port_id
- #ifndef VNF_ACL
, STATIC_ND
- #endif
);
}
}
@@ -155,30 +151,25 @@ cmd_arp_del_parsed(void *parsed_result,
__rte_unused struct cmdline *cl, __rte_unused void *data)
{
struct cmd_arp_del_result *params = parsed_result;
- uint8_t ipv6[16];
-
- #if 0
- struct pipeline_arp_icmp_arp_key key;
- key.type = PIPELINE_ARP_ICMP_ARP_IPV4;
- key.key.ipv4.ip = rte_cpu_to_be_32(params->ip.addr.ipv4.s_addr);
- key.key.ipv4.port_id = params->port_id;
- remove_arp_entry(rte_bswap32(req->key.key.ipv4.ip),
- req->key.key.ipv4.port_id);
- #endif
- struct arp_key_ipv4 arp_key;
- arp_key.port_id = params->port_id;
- arp_key.ip = rte_cpu_to_be_32(params->ip.addr.ipv4.s_addr);
- arp_key.filler1 = 0;
- arp_key.filler2 = 0;
- arp_key.filler3 = 0;
-
- struct arp_entry_data *new_arp_data = retrieve_arp_entry(arp_key, STATIC_ARP);
if (params->ip.family == AF_INET) {
+ struct arp_key_ipv4 arp_key;
+ arp_key.port_id = params->port_id;
+ arp_key.ip = rte_cpu_to_be_32(params->ip.addr.ipv4.s_addr);
+ arp_key.filler1 = 0;
+ arp_key.filler2 = 0;
+ arp_key.filler3 = 0;
+ struct arp_entry_data *new_arp_data = retrieve_arp_entry(arp_key, STATIC_ARP);
remove_arp_entry(new_arp_data, &arp_key);
} else {
- memcpy(ipv6, params->ip.addr.ipv6.s6_addr, 16);
- remove_nd_entry_ipv6(ipv6, params->port_id);
+ struct nd_key_ipv6 nd_key;
+ nd_key.port_id = params->port_id;
+ memcpy(&nd_key.ipv6[0], params->ip.addr.ipv6.s6_addr, 16);
+ nd_key.filler1 = 0;
+ nd_key.filler2 = 0;
+ nd_key.filler3 = 0;
+ struct nd_entry_data *new_nd_data = retrieve_nd_entry(nd_key, STATIC_ND);
+ remove_nd_entry_ipv6(new_nd_data, &nd_key);
}
}
@@ -250,11 +241,7 @@ cmd_arp_req_parsed(void *parsed_result,
printf("ARP - requesting arp for ip 0x%x, port %d\n",
params->ip.addr.ipv4.s_addr, params->port_id);
- #ifdef VNF_ACL
- request_arp_wrap(params->port_id, params->ip.addr.ipv4.s_addr);
- #else
request_arp(params->port_id, params->ip.addr.ipv4.s_addr);
- #endif
/*give pipeline number too*/
}
@@ -401,7 +388,6 @@ static cmdline_parse_inst_t cmd_show_ports_info = {
},
};
-#ifndef VNF_ACL
struct cmd_arp_dbg_result {
cmdline_fixed_string_t arpdbg_str;
uint32_t flag;
@@ -479,7 +465,6 @@ cmdline_parse_inst_t cmd_arp_timer = {
NULL,
},
};
-#endif
/*
* Forwarding of packets in I/O mode.
@@ -2106,10 +2091,8 @@ static cmdline_parse_ctx_t pipeline_cmds[] = {
/* (cmdline_parse_inst_t *) & cmd_set_hash_input_set_5,*/
(cmdline_parse_inst_t *) &cmd_set_hash_global_config,
(cmdline_parse_inst_t *) &cmd_set_sym_hash_ena_per_port,
- #ifndef VNF_ACL
(cmdline_parse_inst_t *) &cmd_arp_dbg,
(cmdline_parse_inst_t *) &cmd_arp_timer,
- #endif
NULL,
};