Example #1
0
static int renew(char *ifname)
{
	char *a, *b;
	int changed;

	_dprintf("%s: begin\n", __FUNCTION__);

	unlink(renewing);

	changed = env2nv("ip", "wan_ipaddr");
	changed |= env2nv("subnet", "wan_netmask");
	if (changed) {
		ifconfig(ifname, IFUP, nvram_safe_get("wan_ipaddr"), nvram_safe_get("wan_netmask"));
	}

	if (get_wan_proto() == WP_L2TP) {	
		env2nv_gateway("wan_gateway_buf");
	}
	else {
		a = strdup(nvram_safe_get("wan_gateway"));
		env2nv_gateway("wan_gateway");
		b = nvram_safe_get("wan_gateway");
		if ((a) && (strcmp(a, b) != 0)) {
			route_del(ifname, 0, "0.0.0.0", a, "0.0.0.0");
			route_add(ifname, 0, "0.0.0.0", b, "0.0.0.0");
			changed = 1;
		}
		free(a);
	}
	
	changed |= env2nv("domain", "wan_get_domain");
	changed |= env2nv("dns", "wan_get_dns");

	if ((a = getenv("lease")) != NULL) {
		nvram_set("wan_lease", a);
		expires(atoi(a));
	}

	if (changed) {
		set_host_domain_name();
		stop_dnsmasq();
		dns_to_resolv();
		start_dnsmasq();
	}
	
	_dprintf("wan_ipaddr=%s\n", nvram_safe_get("wan_ipaddr"));
	_dprintf("wan_netmask=%s\n", nvram_safe_get("wan_netmask"));
	_dprintf("wan_gateway=%s\n", nvram_safe_get("wan_gateway"));
	_dprintf("wan_get_domain=%s\n", nvram_safe_get("wan_get_domain"));
	_dprintf("wan_get_dns=%s\n", nvram_safe_get("wan_get_dns"));
	_dprintf("wan_lease=%s\n", nvram_safe_get("wan_lease"));
	_dprintf("%s: end\n", __FUNCTION__);
	return 0;
}
Example #2
0
// ==================================================================
static int update_value(void)
{

	char *value;
	int changed = 0;

	if ((value = getenv("ip"))) {
		chomp(value);
		if (nvram_invmatch("wan_ipaddr", value)) {
			nvram_set("wan_ipaddr", value);
			changed++;
		}
	}
	if ((value = getenv("subnet"))) {
		chomp(value);
		if (nvram_invmatch("wan_netmask", value)) {
			nvram_set("wan_netmask", value);
			changed++;
		}
	}
	if ((value = getenv("router"))) {
		chomp(value);
		if (nvram_invmatch("wan_gateway", value)) {
			nvram_set("wan_gateway", value);
			changed++;
		}
	}
	if ((value = getenv("dns"))) {
		chomp(value);
		if (nvram_invmatch("wan_get_dns", value)) {
			nvram_set("wan_get_dns", value);
			changed++;
		}
	}
	/*
	 * if ((value = getenv("wins"))) nvram_set("wan_wins", value); if ((value 
	 * = getenv("hostname"))) sethostname(value, strlen(value) + 1); 
	 */
	if ((value = getenv("domain"))) {
		chomp(value);
		if (nvram_invmatch("wan_get_domain", value)) {
			nvram_set("wan_get_domain", value);
			changed++;
		}
	}
	if ((value = getenv("lease"))) {
		chomp(value);
		if (nvram_invmatch("wan_lease", value)) {
			nvram_set("wan_lease", value);
			changed++;
		}
		expires(atoi(value));
	}

	if (changed) {
		set_host_domain_name();
#ifdef HAVE_UDHCPD
		stop_udhcpd();
		start_udhcpd();
#endif
	}
	return 0;
}