Beispiel #1
0
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);
}
Beispiel #2
0
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);
}