uloop_timeout_cancel(&iface->timer_rs);
iface->timer_rs.cb = NULL;
+ if (iface->ifindex <= 0)
+ return -1;
+
setsockopt(router_event.uloop.fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP,
&all_nodes, sizeof(all_nodes));
setsockopt(router_event.uloop.fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP,
odhcpd_get_mac(iface, adv.lladdr.data);
// If not currently shutting down
- struct odhcpd_ipaddr addrs[8];
+ struct odhcpd_ipaddr addrs[RELAYD_MAX_ADDRS];
ssize_t ipcnt = 0;
int64_t minvalid = INT64_MAX;
memcpy(addrs, iface->ia_addr, ipcnt * sizeof(*addrs));
// Check default route
- if (parse_routes(addrs, ipcnt))
- adv.h.nd_ra_router_lifetime = htons(1);
if (iface->default_router > 1)
adv.h.nd_ra_router_lifetime = htons(iface->default_router);
+ else if (parse_routes(addrs, ipcnt))
+ adv.h.nd_ra_router_lifetime = htons(1);
}
// Construct Prefix Information options