.fp_addr.ip4 = *address,
};
- /* set special routes for the prefix if needed */
- ip4_add_interface_prefix_routes (im, sw_if_index, fib_index, a);
-
if (sw_if_index < vec_len (lm->classify_table_index_by_sw_if_index))
{
u32 classify_table_index =
~0,
1, NULL,
FIB_ROUTE_PATH_FLAG_NONE);
+
+ /* set special routes for the prefix if needed */
+ if (a->address_length < 32)
+ ip4_add_interface_prefix_routes (im, sw_if_index, fib_index, a);
}
static void
.fp_addr.ip6 = *address,
};
- /* set special routes for the prefix if needed */
- ip6_add_interface_prefix_routes (im, sw_if_index, fib_index,
- address, a->address_length);
-
pfx.fp_len = 128;
if (sw_if_index < vec_len (lm->classify_table_index_by_sw_if_index))
{
&pfx.fp_addr,
sw_if_index, ~0,
1, NULL, FIB_ROUTE_PATH_FLAG_NONE);
+
+ /* set special routes for the prefix if needed */
+ if (a->address_length < 128)
+ ip6_add_interface_prefix_routes (im, sw_if_index, fib_index, address,
+ a->address_length);
}
static void
# A /31 is a special case where the 'other-side' is an attached host
# packets to that peer generate ARP requests
#
- ip_addr_n = socket.inet_pton(socket.AF_INET, "10.10.10.10")
+ # Let's consider two cases:
+ # Case 1: interface has the second address of /31
+ #
+ self.pg_enable_capture(self.pg_interfaces)
+ self.vapi.sw_interface_add_del_address(
+ sw_if_index=self.pg0.sw_if_index, prefix="10.10.10.11/31"
+ )
+
+ rx = self.pg0.get_capture(1)
+ self.assertEqual(rx[0][ARP].psrc, "10.10.10.11")
+ self.assertEqual(rx[0][ARP].pdst, "10.10.10.10")
+ # remove the sub-net
+ self.vapi.sw_interface_add_del_address(
+ sw_if_index=self.pg0.sw_if_index, prefix="10.10.10.11/31", is_add=0
+ )
+
+ #
+ # Case 2: interface has the first address of /31
+ #
+ self.pg_enable_capture(self.pg_interfaces)
self.vapi.sw_interface_add_del_address(
sw_if_index=self.pg0.sw_if_index, prefix="10.10.10.10/31"
)
+ rx = self.pg0.get_capture(1)
+ self.assertEqual(rx[0][ARP].psrc, "10.10.10.10")
+ self.assertEqual(rx[0][ARP].pdst, "10.10.10.11")
pn = (
Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
self.pg_enable_capture(self.pg_interfaces)
self.pg_start()
rx = self.pg0.get_capture(1)
- rx[ARP]
+ self.assertEqual(rx[0][ARP].psrc, "10.10.10.10")
+ self.assertEqual(rx[0][ARP].pdst, "10.10.10.11")
# remove the sub-net and we are forwarding via the cover again
self.vapi.sw_interface_add_del_address(