static void trigger_router_advert(struct uloop_timeout *event);
static void sigusr1_refresh(int signal);
-static struct odhcpd_event router_event = {{.fd = -1}, handle_icmpv6};
+static struct odhcpd_event router_event = {{.fd = -1}, handle_icmpv6, NULL};
static FILE *fp_route = NULL;
#define RA_IOV_LEN 6
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,
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