} else if (iface->ra == RELAYD_SERVER && !iface->master) {
iface->timer_rs.cb = trigger_router_advert;
uloop_timeout_set(&iface->timer_rs, 1000);
+ ndp_rqs_addr6_dump();
}
if (iface->ra == RELAYD_RELAY || (iface->ra == RELAYD_SERVER && !iface->master))
static uint64_t send_router_advert(struct interface *iface, const struct in6_addr *from)
{
time_t now = odhcpd_time();
- int mtu = odhcpd_get_interface_config(iface->ifname, "mtu");
+ uint32_t mtu = iface->ra_mtu;
int hlim = odhcpd_get_interface_config(iface->ifname, "hop_limit");
+ if (mtu == 0)
+ mtu = odhcpd_get_interface_config(iface->ifname, "mtu");
+
if (mtu < 1280)
mtu = 1280;
struct in6_addr dns_pref, *dns_addr = &dns_pref;
size_t dns_cnt = 1;
- odhcpd_get_linklocal_interface_address(iface->ifindex, &dns_pref);
+ odhcpd_get_interface_dns_addr(iface, &dns_pref);
for (ssize_t i = 0; i < ipcnt; ++i) {
struct odhcpd_ipaddr *addr = &addrs[i];
size_t rewrite_cnt = iface->dns_cnt;
if (rewrite_cnt == 0) {
- if (odhcpd_get_linklocal_interface_address(iface->ifindex, &addr))
+ if (odhcpd_get_interface_dns_addr(iface, &addr))
continue; // Unable to comply
rewrite = &addr;