Beispiel #1
0
void gnrc_ndp_router_set_router(gnrc_ipv6_netif_t *iface, bool enable)
{
    if (enable && !(iface->flags & GNRC_IPV6_NETIF_FLAGS_ROUTER)) {
        gnrc_ipv6_netif_add_addr(iface->pid, &ipv6_addr_all_routers_link_local,
                                 128, GNRC_IPV6_NETIF_ADDR_FLAGS_NON_UNICAST);
        mutex_lock(&iface->mutex);
        iface->flags |= GNRC_IPV6_NETIF_FLAGS_ROUTER;
        iface->max_adv_int = GNRC_IPV6_NETIF_DEFAULT_MAX_ADV_INT;
        iface->min_adv_int = GNRC_IPV6_NETIF_DEFAULT_MIN_ADV_INT;
        iface->adv_ltime = GNRC_IPV6_NETIF_DEFAULT_ROUTER_LTIME;
        mutex_unlock(&iface->mutex);
        gnrc_ndp_router_set_rtr_adv(iface, enable);
    }
    else if (!enable && (iface->flags & GNRC_IPV6_NETIF_FLAGS_ROUTER)) {
        gnrc_ipv6_netif_remove_addr(iface->pid, (ipv6_addr_t *)&ipv6_addr_all_routers_link_local);
        gnrc_ndp_router_set_rtr_adv(iface, enable);
    }
}
Beispiel #2
0
void gnrc_ipv6_netif_set_rtr_adv(gnrc_ipv6_netif_t *netif, bool enable)
{
#if defined(MODULE_GNRC_SIXLOWPAN_ND_ROUTER)
    if (netif->flags & GNRC_IPV6_NETIF_FLAGS_SIXLOWPAN) {
        gnrc_sixlowpan_nd_router_set_rtr_adv(netif, enable);
        return;
    }
#endif
    gnrc_ndp_router_set_rtr_adv(netif, enable);
}