static void ipv6aide_check(int sig) { char tmp[64]; char *p = NULL; char *q; if (get_ipv6_service() != IPV6_NATIVE_DHCP) goto END; memset(tmp, 0, sizeof(tmp)); q = tmp; p = strtok_r(ipv6_gateway_address(), " ", &q); if (!p || !strlen(p) || !strlen(q)) { alarmtimer(NORMAL_PERIOD, 0); return; } dbG("ipv6 gateway: %s (dev %s)\n", p, q); eval("route", "-A", "inet6", "add", "2000::/3", "gw", p, "dev", q); END: ipv6aide_exit(sig); }
static void ipv6aide_check(int sig) { char tmp[64]; char *p = NULL; char *q, *r; if (get_ipv6_service() != IPV6_NATIVE_DHCP) goto END; p = nvram_safe_get("ipv6_gw_addr"); if (strlen(p)) { eval("route", "-A", "inet6", "add", "2000::/3", "gw", p, "dev", (char*)get_wan6face()); goto END; } r = strdup(ipv6_gateway_address()); if (!r) return; memset(tmp, 0, sizeof(tmp)); q = tmp; p = strtok_r(r, " ", &q); if (!p || !strlen(p) || !strlen(q)) { alarmtimer(NORMAL_PERIOD, 0); return; } dbG("ipv6 gateway: %s (dev %s)\n", p, q); eval("route", "-A", "inet6", "add", "2000::/3", "gw", p, "dev", q); free(r); END: ipv6aide_exit(sig); }