if (PREDICT_TRUE (error0 == ICMP6_ERROR_NONE && o0 != 0 &&
!ip6_sadd_unspecified))
{
+ /* *INDENT-OFF* */
ip_neighbor_learn_t learn = {
.sw_if_index = sw_if_index0,
- .type = IP46_TYPE_IP6,
- .ip.ip6 = (is_solicitation ?
- ip0->src_address : h0->target_address),
+ .ip = {
+ .version = AF_IP6,
+ .ip.ip6 = (is_solicitation ?
+ ip0->src_address :
+ h0->target_address),
+ }
};
+ /* *INDENT-ON* */
memcpy (&learn.mac, o0->ethernet_address, sizeof (learn.mac));
ip_neighbor_learn_dp (&learn);
}
/* It's an address that belongs to one of our interfaces
* that's good. */
}
- else
- if (fib_entry_is_sourced
- (fei, FIB_SOURCE_IP6_ND_PROXY) ||
- fib_entry_is_sourced (fei, FIB_SOURCE_IP6_ND))
+ else if (FIB_ENTRY_FLAG_LOCAL &
+ fib_entry_get_flags_for_source (
+ fei, FIB_SOURCE_IP6_ND))
+ {
+ /* It's one of our link local addresses
+ * that's good. */
+ }
+ else if (fib_entry_is_sourced (fei,
+ FIB_SOURCE_IP6_ND_PROXY))
{
/* The address was added by IPv6 Proxy ND config.
* We should only respond to these if the NS arrived on
icmp6_register_type (vm, ICMP6_neighbor_advertisement,
ip6_icmp_neighbor_advertisement_node.index);
- ip_neighbor_register (IP46_TYPE_IP6, &ip6_nd_impl_vft);
+ ip_neighbor_register (AF_IP6, &ip6_nd_impl_vft);
ip6_nd_delegate_id = ip6_link_delegate_register (&ip6_nd_delegate_vft);