diff options
author | Neale Ranns <nranns@cisco.com> | 2019-09-30 10:53:31 +0000 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2019-12-17 10:56:20 +0000 |
commit | cbe25aab3be72154f2c706c39eeba6a77f34450f (patch) | |
tree | 131fb53b5ec973be045ffb9e2eb797af01d112a0 /src/plugins | |
parent | 96453fd2417ebd1d69354a7fb692976129cea80e (diff) |
ip: Protocol Independent IP Neighbors
Type: feature
- ip-neighbour: generic neighbour handling; APIs, DBs, event handling,
aging
- arp: ARP protocol implementation
- ip6-nd; IPv6 neighbor discovery implementation; separate ND,
MLD, RA
- ip6-link; manage link-local addresses
- l2-arp-term; events separated from IP neighbours, since they are not
the same.
vnet retains just enough education to perform ND/ARP packet
construction.
arp and ip6-nd to be moved to plugins soon.
Change-Id: I88dedd0006b299344f4c7024a0aa5baa6b9a8bbe
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/abf/test/test_abf.py | 1 | ||||
-rw-r--r-- | src/plugins/acl/test/test_acl_plugin_conns.py | 2 | ||||
-rw-r--r-- | src/plugins/acl/test/test_acl_plugin_l2l3.py | 5 | ||||
-rw-r--r-- | src/plugins/dhcp/dhcp6_ia_na_client_cp.c | 16 | ||||
-rw-r--r-- | src/plugins/dhcp/dhcp6_ia_na_client_dp.c | 10 | ||||
-rw-r--r-- | src/plugins/dhcp/dhcp6_pd_client_cp.c | 37 | ||||
-rw-r--r-- | src/plugins/dhcp/dhcp6_pd_client_dp.c | 10 | ||||
-rw-r--r-- | src/plugins/dhcp/test/test_dhcp.py | 6 | ||||
-rw-r--r-- | src/plugins/gbp/gbp_endpoint.c | 22 | ||||
-rw-r--r-- | src/plugins/gbp/gbp_route_domain.c | 1 | ||||
-rw-r--r-- | src/plugins/l3xc/test/test_l3xc.py | 1 | ||||
-rw-r--r-- | src/plugins/mactime/builtins.c | 28 | ||||
-rw-r--r-- | src/plugins/mactime/mactime.c | 40 | ||||
-rw-r--r-- | src/plugins/mactime/mactime.h | 4 | ||||
-rw-r--r-- | src/plugins/mactime/test/test_mactime.py | 2 | ||||
-rw-r--r-- | src/plugins/nat/nat64_in2out.c | 4 | ||||
-rwxr-xr-x | src/plugins/ping/ping.c | 12 | ||||
-rw-r--r-- | src/plugins/srv6-ad/test/test_srv6_ad.py | 2 | ||||
-rw-r--r-- | src/plugins/srv6-am/test/test_srv6.py | 2 | ||||
-rwxr-xr-x | src/plugins/srv6-as/test/test_srv6_as.py | 2 | ||||
-rw-r--r-- | src/plugins/svs/test/test_svs.py | 1 |
21 files changed, 94 insertions, 114 deletions
diff --git a/src/plugins/abf/test/test_abf.py b/src/plugins/abf/test/test_abf.py index 7cffdac74b2..6ba6039dd1e 100644 --- a/src/plugins/abf/test/test_abf.py +++ b/src/plugins/abf/test/test_abf.py @@ -141,7 +141,6 @@ class TestAbf(VppTestCase): for i in self.pg_interfaces: i.unconfig_ip4() i.unconfig_ip6() - i.ip6_disable() i.admin_down() super(TestAbf, self).tearDown() diff --git a/src/plugins/acl/test/test_acl_plugin_conns.py b/src/plugins/acl/test/test_acl_plugin_conns.py index ac9e7c11f2f..f4cf5947043 100644 --- a/src/plugins/acl/test/test_acl_plugin_conns.py +++ b/src/plugins/acl/test/test_acl_plugin_conns.py @@ -152,7 +152,7 @@ class ACLPluginConnTestCase(VppTestCase): super(ACLPluginConnTestCase, self).tearDown() def show_commands_at_teardown(self): - self.logger.info(self.vapi.cli("show ip arp")) + self.logger.info(self.vapi.cli("show ip neighbors")) self.logger.info(self.vapi.cli("show ip6 neighbors")) self.logger.info(self.vapi.cli("show acl-plugin sessions")) self.logger.info(self.vapi.cli("show acl-plugin acl")) diff --git a/src/plugins/acl/test/test_acl_plugin_l2l3.py b/src/plugins/acl/test/test_acl_plugin_l2l3.py index 6aaf4203770..3379871e0b9 100644 --- a/src/plugins/acl/test/test_acl_plugin_l2l3.py +++ b/src/plugins/acl/test/test_acl_plugin_l2l3.py @@ -113,7 +113,7 @@ class TestACLpluginL2L3(VppTestCase): def tearDown(self): """Run standard test teardown and log ``show l2patch``, ``show l2fib verbose``,``show bridge-domain <bd_id> detail``, - ``show ip arp``. + ``show ip neighbors``. """ super(TestACLpluginL2L3, self).tearDown() @@ -123,8 +123,7 @@ class TestACLpluginL2L3(VppTestCase): self.logger.info(self.vapi.cli("show l2fib verbose")) self.logger.info(self.vapi.cli("show bridge-domain %s detail" % self.bd_id)) - self.logger.info(self.vapi.cli("show ip arp")) - self.logger.info(self.vapi.cli("show ip6 neighbors")) + self.logger.info(self.vapi.cli("show ip neighbors")) cmd = "show acl-plugin sessions verbose 1" self.logger.info(self.vapi.cli(cmd)) self.logger.info(self.vapi.cli("show acl-plugin acl")) diff --git a/src/plugins/dhcp/dhcp6_ia_na_client_cp.c b/src/plugins/dhcp/dhcp6_ia_na_client_cp.c index f9c379cffe8..b48559929e4 100644 --- a/src/plugins/dhcp/dhcp6_ia_na_client_cp.c +++ b/src/plugins/dhcp/dhcp6_ia_na_client_cp.c @@ -20,6 +20,7 @@ #include <dhcp/dhcp6_ia_na_client_dp.h> #include <vnet/ip/ip.h> #include <vnet/ip/ip6.h> +#include <vnet/ip/ip6_link.h> #include <float.h> #include <math.h> @@ -144,17 +145,6 @@ send_client_message_start_stop (u32 sw_if_index, u32 server_index, static void interrupt_process (void); -static u32 -ip6_enable (u32 sw_if_index) -{ - dhcp6_client_cp_main_t *rm = &dhcp6_client_cp_main; - clib_error_t *rv; - - rv = enable_ip6_interface (rm->vlib_main, sw_if_index); - - return rv != 0; -} - static u8 ip6_addresses_equal (ip6_address_t * address1, ip6_address_t * address2) { @@ -422,7 +412,7 @@ dhcp6_client_cp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, clib_warning ("Failed to delete interface address"); pool_put (rm->address_pool, address_info); /* make sure ip6 stays enabled */ - ip6_enable (sw_if_index); + ip6_link_enable (sw_if_index); client_state = &rm->client_state_by_sw_if_index[sw_if_index]; if (--client_state->address_count == 0) { @@ -650,7 +640,7 @@ dhcp6_client_enable_disable (u32 sw_if_index, u8 enable) dhcp6_clients_enable_disable (1); } - ip6_enable (sw_if_index); + ip6_link_enable (sw_if_index); send_client_message_start_stop (sw_if_index, ~0, DHCPV6_MSG_SOLICIT, 0, 1); } diff --git a/src/plugins/dhcp/dhcp6_ia_na_client_dp.c b/src/plugins/dhcp/dhcp6_ia_na_client_dp.c index 8ad7d765f69..3cf2fb1b349 100644 --- a/src/plugins/dhcp/dhcp6_ia_na_client_dp.c +++ b/src/plugins/dhcp/dhcp6_ia_na_client_dp.c @@ -20,7 +20,7 @@ #include <vnet/mfib/ip6_mfib.h> #include <vnet/fib/fib.h> #include <vnet/adj/adj_mcast.h> -#include <vnet/ip/ip6_neighbor.h> +#include <vnet/ip/ip6_link.h> #include <dhcp/dhcp6_ia_na_client_dp.h> #include <dhcp/dhcp6_client_common_dp.h> #include <vnet/ip/ip_types_api.h> @@ -89,16 +89,16 @@ create_buffer_for_client_message (vlib_main_t * vm, u32 sw_if_index, ip6_header_t *ip; udp_header_t *udp; dhcpv6_header_t *dhcp; - ip6_address_t src_addr; + const ip6_address_t *src_addr; u32 dhcp_opt_len = 0; client_state->transaction_start = vlib_time_now (vm); u32 n_addresses; u32 i; /* Get a link-local address */ - src_addr = ip6_neighbor_get_link_local_address (sw_if_index); + src_addr = ip6_get_link_local_address (sw_if_index); - if (src_addr.as_u8[0] != 0xfe) + if (src_addr->as_u8[0] != 0xfe) { clib_warning ("Could not find source address to send DHCPv6 packet"); return NULL; @@ -123,7 +123,7 @@ create_buffer_for_client_message (vlib_main_t * vm, u32 sw_if_index, udp = (udp_header_t *) (ip + 1); dhcp = (dhcpv6_header_t *) (udp + 1); - ip->src_address = src_addr; + ip->src_address = *src_addr; ip->hop_limit = 255; ip->ip_version_traffic_class_and_flow_label = clib_host_to_net_u32 (0x6 << 28); diff --git a/src/plugins/dhcp/dhcp6_pd_client_cp.c b/src/plugins/dhcp/dhcp6_pd_client_cp.c index ec9e5c64b07..18466270800 100644 --- a/src/plugins/dhcp/dhcp6_pd_client_cp.c +++ b/src/plugins/dhcp/dhcp6_pd_client_cp.c @@ -19,7 +19,8 @@ #include <dhcp/dhcp6_pd_client_dp.h> #include <vnet/ip/ip.h> #include <vnet/ip/ip6.h> -#include <vnet/ip/ip6_neighbor.h> +#include <vnet/ip/ip6_link.h> +#include <vnet/ip6-nd/ip6_ra.h> #include <float.h> #include <math.h> #include <string.h> @@ -243,17 +244,6 @@ send_client_message_start_stop (u32 sw_if_index, u32 server_index, static void interrupt_process (void); -static u32 -ip6_enable (u32 sw_if_index) -{ - dhcp6_pd_client_cp_main_t *rm = &dhcp6_pd_client_cp_main; - clib_error_t *rv; - - rv = enable_ip6_interface (rm->vlib_main, sw_if_index); - - return rv != 0; -} - static u8 ip6_prefixes_equal (ip6_address_t * prefix1, ip6_address_t * prefix2, u8 len) { @@ -807,16 +797,15 @@ cp_ip6_advertise_prefix (prefix_info_t * prefix_info, addr.as_u64[0] &= im->fib_masks[address_info->prefix_length].as_u64[0]; addr.as_u64[1] &= im->fib_masks[address_info->prefix_length].as_u64[1]; - rv = ip6_neighbor_ra_prefix (vm, address_info->sw_if_index, - &addr, address_info->prefix_length, - 0 /* use_default */ , - prefix_info->valid_lt, - prefix_info->preferred_lt, - 0 /* no_advertise */ , - 0 /* off_link */ , - 0 /* no_autoconfig */ , - 0 /* no_onlink */ , - enable == 0 /* is_no */ ); + rv = ip6_ra_prefix (vm, address_info->sw_if_index, + &addr, address_info->prefix_length, + 0 /* use_default */ , + prefix_info->valid_lt, + prefix_info->preferred_lt, 0 /* no_advertise */ , + 0 /* off_link */ , + 0 /* no_autoconfig */ , + 0 /* no_onlink */ , + enable == 0 /* is_no */ ); if (rv != 0) { clib_warning ("ip6_neighbor_ra_prefix returned %d", rv); @@ -1268,7 +1257,7 @@ dhcp6_pd_client_enable_disable (u32 sw_if_index, dhcp6_clients_enable_disable (1); } - ip6_enable (sw_if_index); + ip6_link_enable (sw_if_index); send_client_message_start_stop (sw_if_index, ~0, DHCPV6_MSG_SOLICIT, 0, 1); } @@ -1387,6 +1376,8 @@ VLIB_CLI_COMMAND (dhcp6_pd_client_enable_disable_command, static) = { }; /* *INDENT-ON* */ +#include <vlib/unix/plugin.h> + static clib_error_t * dhcp_pd_client_cp_init (vlib_main_t * vm) { diff --git a/src/plugins/dhcp/dhcp6_pd_client_dp.c b/src/plugins/dhcp/dhcp6_pd_client_dp.c index 7896e9a6403..980c83c7bbe 100644 --- a/src/plugins/dhcp/dhcp6_pd_client_dp.c +++ b/src/plugins/dhcp/dhcp6_pd_client_dp.c @@ -20,10 +20,10 @@ #include <vnet/mfib/ip6_mfib.h> #include <vnet/fib/fib.h> #include <vnet/adj/adj_mcast.h> -#include <vnet/ip/ip6_neighbor.h> #include <dhcp/dhcp6_pd_client_dp.h> #include <dhcp/dhcp6_client_common_dp.h> #include <vnet/ip/ip_types_api.h> +#include <vnet/ip/ip6_link.h> dhcp6_pd_client_main_t dhcp6_pd_client_main; dhcp6_pd_client_public_main_t dhcp6_pd_client_public_main; @@ -90,7 +90,7 @@ create_buffer_for_client_message (vlib_main_t * vm, ip6_header_t *ip; udp_header_t *udp; dhcpv6_header_t *dhcp; - ip6_address_t src_addr; + const ip6_address_t *src_addr; u32 dhcp_opt_len = 0; client_state->transaction_start = vlib_time_now (vm); u32 n_prefixes; @@ -102,9 +102,9 @@ create_buffer_for_client_message (vlib_main_t * vm, */ /* Get a link-local address */ - src_addr = ip6_neighbor_get_link_local_address (sw_if_index); + src_addr = ip6_get_link_local_address (sw_if_index); - if (src_addr.as_u8[0] != 0xfe) + if (src_addr->as_u8[0] != 0xfe) { clib_warning ("Could not find source address to send DHCPv6 packet"); return NULL; @@ -129,7 +129,7 @@ create_buffer_for_client_message (vlib_main_t * vm, udp = (udp_header_t *) (ip + 1); dhcp = (dhcpv6_header_t *) (udp + 1); - ip->src_address = src_addr; + ip->src_address = *src_addr; ip->hop_limit = 255; ip->ip_version_traffic_class_and_flow_label = clib_host_to_net_u32 (0x6 << 28); diff --git a/src/plugins/dhcp/test/test_dhcp.py b/src/plugins/dhcp/test/test_dhcp.py index 07db35d0cd0..065683fbcda 100644 --- a/src/plugins/dhcp/test/test_dhcp.py +++ b/src/plugins/dhcp/test/test_dhcp.py @@ -1297,12 +1297,6 @@ class TestDHCP(VppTestCase): self.assertTrue(find_route(self, self.pg3.local_ip4, 24)) self.assertTrue(find_route(self, self.pg3.local_ip4, 32)) - # remove the left over ARP entry - self.vapi.ip_neighbor_add_del(self.pg3.sw_if_index, - self.pg3.remote_mac, - self.pg3.remote_ip4, - is_add=0) - # # remove the DHCP config # diff --git a/src/plugins/gbp/gbp_endpoint.c b/src/plugins/gbp/gbp_endpoint.c index c6cab3fbfb8..9ef08904041 100644 --- a/src/plugins/gbp/gbp_endpoint.c +++ b/src/plugins/gbp/gbp_endpoint.c @@ -24,13 +24,12 @@ #include <plugins/gbp/gbp_policy_dpo.h> #include <plugins/gbp/gbp_vxlan.h> -#include <vnet/ethernet/arp.h> #include <vnet/l2/l2_input.h> #include <vnet/l2/l2_output.h> #include <vnet/l2/feat_bitmap.h> #include <vnet/l2/l2_fib.h> #include <vnet/fib/fib_table.h> -#include <vnet/ip/ip_neighbor.h> +#include <vnet/ip-neighbor/ip_neighbor.h> #include <vnet/fib/fib_walk.h> #include <vnet/vxlan-gbp/vxlan_gbp.h> @@ -208,12 +207,6 @@ gbp_endpoint_index (const gbp_endpoint_t * ge) return (ge - gbp_endpoint_pool); } -static ip46_type_t -ip46_address_get_type (const ip46_address_t * a) -{ - return (ip46_address_is_ip4 (a) ? IP46_TYPE_IP4 : IP46_TYPE_IP6); -} - static int gbp_endpoint_ip_is_equal (const fib_prefix_t * fp, const ip46_address_t * ip) { @@ -775,14 +768,11 @@ gbb_endpoint_fwd_recalc (gbp_endpoint_t * ge) { gbp_endpoint_add_itf (gbp_itf_get_sw_if_index (gef->gef_itf), gei); - if (FIB_PROTOCOL_IP4 == pfx->fp_proto) - send_ip4_garp_w_addr (vlib_get_main (), - &pfx->fp_addr.ip4, - gg->gg_uplink_sw_if_index); - else - send_ip6_na_w_addr (vlib_get_main (), - &pfx->fp_addr.ip6, - gg->gg_uplink_sw_if_index); + ip_neighbor_advertise (vlib_get_main (), + (FIB_PROTOCOL_IP4 == pfx->fp_proto ? + IP46_TYPE_IP4 : + IP46_TYPE_IP6), + &pfx->fp_addr, gg->gg_uplink_sw_if_index); } } } diff --git a/src/plugins/gbp/gbp_route_domain.c b/src/plugins/gbp/gbp_route_domain.c index f0aa694d44a..99c6e168a53 100644 --- a/src/plugins/gbp/gbp_route_domain.c +++ b/src/plugins/gbp/gbp_route_domain.c @@ -18,7 +18,6 @@ #include <vnet/dpo/dvr_dpo.h> #include <vnet/fib/fib_table.h> -#include <vnet/ip/ip_neighbor.h> /** * A fixed MAC address to use as the source MAC for packets L3 switched diff --git a/src/plugins/l3xc/test/test_l3xc.py b/src/plugins/l3xc/test/test_l3xc.py index add27e718e0..d7a82976cf5 100644 --- a/src/plugins/l3xc/test/test_l3xc.py +++ b/src/plugins/l3xc/test/test_l3xc.py @@ -87,7 +87,6 @@ class TestL3xc(VppTestCase): for i in self.pg_interfaces: i.unconfig_ip4() i.unconfig_ip6() - i.ip6_disable() i.admin_down() super(TestL3xc, self).tearDown() diff --git a/src/plugins/mactime/builtins.c b/src/plugins/mactime/builtins.c index 906164e6a0d..e90ac661a13 100644 --- a/src/plugins/mactime/builtins.c +++ b/src/plugins/mactime/builtins.c @@ -3,6 +3,17 @@ #include <http_static/http_static.h> #include <mactime/mactime.h> #include <vlib/unix/plugin.h> +#include <vnet/ip-neighbor/ip_neighbor.h> + +static walk_rc_t +mactime_ip_neighbor_copy (index_t ipni, void *ctx) +{ + mactime_main_t *mm = ctx; + + vec_add1 (mm->arp_cache_copy, ipni); + + return (WALK_CONTINUE); +} static int handle_get_mactime (http_builtin_method_type_t reqtype, @@ -17,17 +28,14 @@ handle_get_mactime (http_builtin_method_type_t reqtype, int i, j; f64 now; vlib_counter_t allow, drop; - ethernet_arp_ip4_entry_t *n, *pool; + ip_neighbor_t *n; char *q = "\""; u8 *s = 0; int need_comma = 0; + /* Walk all ip4 neighbours on all interfaces */ vec_reset_length (mm->arp_cache_copy); - pool = ip4_neighbors_pool (); - - /* *INDENT-OFF* */ - pool_foreach (n, pool, ({ vec_add1 (mm->arp_cache_copy, n[0]);})); - /* *INDENT-ON* */ + ip_neighbor_walk (IP46_TYPE_IP4, ~0, mactime_ip_neighbor_copy, mm); now = clib_timebase_now (&mm->timebase); @@ -124,11 +132,13 @@ handle_get_mactime (http_builtin_method_type_t reqtype, for (j = 0; j < vec_len (mm->arp_cache_copy); j++) { - n = mm->arp_cache_copy + j; - if (!memcmp (dp->mac_address, n->mac.bytes, sizeof (n->mac))) + n = ip_neighbor_get (mm->arp_cache_copy[j]); + if (!memcmp (dp->mac_address, + ip_neighbor_get_mac (n), sizeof (mac_address_t))) { s = format (s, ", %sip4_address%s: %s%U%s", q, q, - q, format_ip4_address, &n->ip4_address, q); + q, format_ip46_address, + ip_neighbor_get_ip (n), IP46_TYPE_IP4, q); break; } } diff --git a/src/plugins/mactime/mactime.c b/src/plugins/mactime/mactime.c index 9192a26ac23..e7dcb0389cc 100644 --- a/src/plugins/mactime/mactime.c +++ b/src/plugins/mactime/mactime.c @@ -33,6 +33,8 @@ #define REPLY_MSG_ID_BASE mm->msg_id_base #include <vlibapi/api_helper_macros.h> +#include <vnet/ip-neighbor/ip_neighbor.h> + mactime_main_t mactime_main; /** \file time-base src-mac filter device-input feature arc implementation @@ -425,7 +427,12 @@ mactime_init (vlib_main_t * vm) return 0; } -VLIB_INIT_FUNCTION (mactime_init); +/* *INDENT-OFF* */ +VLIB_INIT_FUNCTION (mactime_init) = +{ + .runs_after = VLIB_INITS("ip_neighbor_init"), +}; +/* *INDENT-ON* */ static clib_error_t * mactime_config (vlib_main_t * vm, unformat_input_t * input) @@ -519,6 +526,16 @@ format_bytes_with_width (u8 * s, va_list * va) return s; } +static walk_rc_t +mactime_ip_neighbor_copy (index_t ipni, void *ctx) +{ + mactime_main_t *mm = ctx; + + vec_add1 (mm->arp_cache_copy, ipni); + + return (WALK_CONTINUE); +} + static clib_error_t * show_mactime_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) @@ -533,17 +550,11 @@ show_mactime_command_fn (vlib_main_t * vm, int i, j; f64 now; vlib_counter_t allow, drop; - ethernet_arp_ip4_entry_t *n, *pool; + ip_neighbor_t *ipn; vec_reset_length (mm->arp_cache_copy); - pool = ip4_neighbors_pool (); - - /* *INDENT-OFF* */ - pool_foreach (n, pool, - ({ - vec_add1 (mm->arp_cache_copy, n[0]); - })); - /* *INDENT-ON* */ + /* Walk all ip4 neighbours on all interfaces */ + ip_neighbor_walk (IP46_TYPE_IP4, ~0, mactime_ip_neighbor_copy, mm); now = clib_timebase_now (&mm->timebase); @@ -660,11 +671,12 @@ show_mactime_command_fn (vlib_main_t * vm, /* This is really only good for small N... */ for (j = 0; j < vec_len (mm->arp_cache_copy); j++) { - n = mm->arp_cache_copy + j; - if (!memcmp (dp->mac_address, n->mac.bytes, sizeof (n->mac))) + ipn = ip_neighbor_get (mm->arp_cache_copy[j]); + if (!memcmp + (dp->mac_address, ipn->ipn_mac.bytes, sizeof (ipn->ipn_mac))) { - vlib_cli_output (vm, "%17s%U", " ", format_ip4_address, - &n->ip4_address); + vlib_cli_output (vm, "%17s%U", " ", format_ip46_address, + ip_neighbor_get_ip (ipn), IP46_TYPE_IP4); } } } diff --git a/src/plugins/mactime/mactime.h b/src/plugins/mactime/mactime.h index 61160f87fd0..b6313ea12bc 100644 --- a/src/plugins/mactime/mactime.h +++ b/src/plugins/mactime/mactime.h @@ -21,7 +21,7 @@ #include <vnet/vnet.h> #include <vnet/ip/ip.h> #include <vnet/ethernet/ethernet.h> -#include <vnet/ethernet/arp.h> +//#include <vnet/ethernet/arp.h> #include <vlib/counter.h> #include <vppinfra/hash.h> @@ -71,7 +71,7 @@ typedef struct int feature_initialized; /* arp cache copy, for "show mactime" */ - ethernet_arp_ip4_entry_t *arp_cache_copy; + index_t *arp_cache_copy; /* convenience */ vlib_main_t *vlib_main; diff --git a/src/plugins/mactime/test/test_mactime.py b/src/plugins/mactime/test/test_mactime.py index eb28002c829..fa9516cbe87 100644 --- a/src/plugins/mactime/test/test_mactime.py +++ b/src/plugins/mactime/test/test_mactime.py @@ -44,7 +44,7 @@ class TestMactime(VppTestCase): "bin mactime_enable_disable sw_if_index 1", "set interface state loop0 up", "clear mactime", - "set ip arp loop0 192.168.1.1 00:d0:2d:5e:86:85", + "set ip neighbor loop0 192.168.1.1 00:d0:2d:5e:86:85", "bin mactime_add_del_range name sallow " "mac 00:d0:2d:5e:86:85 allow-static del", "bin mactime_add_del_range name sallow " diff --git a/src/plugins/nat/nat64_in2out.c b/src/plugins/nat/nat64_in2out.c index 225683cd028..8d1d734c459 100644 --- a/src/plugins/nat/nat64_in2out.c +++ b/src/plugins/nat/nat64_in2out.c @@ -453,13 +453,13 @@ unk_proto_st_walk (nat64_db_st_entry_t * ste, void *arg) ip46_address_t saddr, daddr; nat64_db_t *db = &nm->db[ctx->thread_index]; - if (ip46_address_is_equal (&ste->in_r_addr, &ctx->dst_addr)) + if (ip6_address_is_equal (&ste->in_r_addr, &ctx->dst_addr)) { bibe = nat64_db_bib_entry_by_index (db, ste->proto, ste->bibe_index); if (!bibe) return -1; - if (ip46_address_is_equal (&bibe->in_addr, &ctx->src_addr) + if (ip6_address_is_equal (&bibe->in_addr, &ctx->src_addr) && bibe->fib_index == ctx->fib_index) { clib_memset (&saddr, 0, sizeof (saddr)); diff --git a/src/plugins/ping/ping.c b/src/plugins/ping/ping.c index eaf5d29d48b..7045648d872 100755 --- a/src/plugins/ping/ping.c +++ b/src/plugins/ping/ping.c @@ -19,6 +19,7 @@ #include <vnet/fib/ip6_fib.h> #include <vnet/fib/ip4_fib.h> #include <vnet/fib/fib_entry.h> +#include <vnet/ip/ip6_link.h> #include <vnet/plugin/plugin.h> #include <vpp/app/version.h> @@ -730,19 +731,16 @@ ip46_set_src_address (u32 sw_if_index, vlib_buffer_t * b0, int is_ip6) int res; if (is_ip6) { - ip6_main_t *im = &ip6_main; ip6_header_t *ip6 = vlib_buffer_get_current (b0); - res = - ip6_src_address_for_packet (&im->lookup_main, sw_if_index, - &ip6->dst_address, &ip6->src_address); + res = ip6_src_address_for_packet (sw_if_index, + &ip6->dst_address, &ip6->src_address); } else { ip4_main_t *im = &ip4_main; ip4_header_t *ip4 = vlib_buffer_get_current (b0); - res = - ip4_src_address_for_packet (&im->lookup_main, sw_if_index, - &ip4->src_address); + res = ip4_src_address_for_packet (&im->lookup_main, + sw_if_index, &ip4->src_address); /* IP4 and IP6 paths have the inverse logic. Harmonize. */ res = !res; } diff --git a/src/plugins/srv6-ad/test/test_srv6_ad.py b/src/plugins/srv6-ad/test/test_srv6_ad.py index 55f3da0b262..828cb74d0ea 100644 --- a/src/plugins/srv6-ad/test/test_srv6_ad.py +++ b/src/plugins/srv6-ad/test/test_srv6_ad.py @@ -115,7 +115,7 @@ class TestSRv6(VppTestCase): if any(ipv6): self.logger.debug(self.vapi.cli("show ip6 neighbors")) if any(ipv4): - self.logger.debug(self.vapi.cli("show ip arp")) + self.logger.debug(self.vapi.cli("show ip4 neighbors")) self.logger.debug(self.vapi.cli("show interface")) self.logger.debug(self.vapi.cli("show hardware")) diff --git a/src/plugins/srv6-am/test/test_srv6.py b/src/plugins/srv6-am/test/test_srv6.py index ac880f1d881..b1a2d8de0b3 100644 --- a/src/plugins/srv6-am/test/test_srv6.py +++ b/src/plugins/srv6-am/test/test_srv6.py @@ -114,7 +114,7 @@ class TestSRv6(VppTestCase): if any(ipv6): self.logger.debug(self.vapi.cli("show ip6 neighbors")) if any(ipv4): - self.logger.debug(self.vapi.cli("show ip arp")) + self.logger.debug(self.vapi.cli("show ip4 neighbors")) self.logger.debug(self.vapi.cli("show interface")) self.logger.debug(self.vapi.cli("show hardware")) diff --git a/src/plugins/srv6-as/test/test_srv6_as.py b/src/plugins/srv6-as/test/test_srv6_as.py index 9c4f3e274c7..9e8e4252cc7 100755 --- a/src/plugins/srv6-as/test/test_srv6_as.py +++ b/src/plugins/srv6-as/test/test_srv6_as.py @@ -114,7 +114,7 @@ class TestSRv6(VppTestCase): if any(ipv6): self.logger.debug(self.vapi.cli("show ip6 neighbors")) if any(ipv4): - self.logger.debug(self.vapi.cli("show ip arp")) + self.logger.debug(self.vapi.cli("show ip4 neighbors")) self.logger.debug(self.vapi.cli("show interface")) self.logger.debug(self.vapi.cli("show hardware")) diff --git a/src/plugins/svs/test/test_svs.py b/src/plugins/svs/test/test_svs.py index ec986370895..3daf7a50a28 100644 --- a/src/plugins/svs/test/test_svs.py +++ b/src/plugins/svs/test/test_svs.py @@ -55,7 +55,6 @@ class TestSVS(VppTestCase): for i in self.pg_interfaces: i.unconfig_ip4() i.unconfig_ip6() - i.ip6_disable() i.set_table_ip4(0) i.set_table_ip6(0) i.admin_down() |