+ } else if (is_route && rta->rta_type == RTA_OIF &&
+ RTA_PAYLOAD(rta) == sizeof(int)) {
+ ifindex = (int*)RTA_DATA(rta);
+ } else if (is_route && rta->rta_type == RTA_GATEWAY) {
+ ifindex = NULL;
+ break;
+ }
+ }
+
+ // Lookup interface
+ struct interface *iface = ifindex ? odhcpd_get_interface_by_index(*ifindex) : NULL;
+ if (!iface)
+ continue;
+
+ // Keep-alive neighbor entries for RA sending
+ if (nh->nlmsg_type == RTM_DELNEIGH && !(ndm->ndm_state & NUD_FAILED) &&
+ addr && IN6_IS_ADDR_LINKLOCAL(addr) && iface->ra == RELAYD_SERVER)
+ ping6(addr, iface);