static gboolean update (NMDnsPlugin *plugin, const NMDnsIPConfigData **configs, const NMGlobalDnsConfig *global_config, const char *hostname) { NMDnsDnsmasq *self = NM_DNS_DNSMASQ (plugin); NMDnsDnsmasqPrivate *priv = NM_DNS_DNSMASQ_GET_PRIVATE (self); GVariantBuilder servers; start_dnsmasq (self); g_variant_builder_init (&servers, G_VARIANT_TYPE ("aas")); if (global_config) add_global_config (self, &servers, global_config); else { while (*configs) { add_ip_config_data (self, &servers, *configs); configs++; } } g_clear_pointer (&priv->set_server_ex_args, g_variant_unref); priv->set_server_ex_args = g_variant_ref_sink (g_variant_new ("(aas)", &servers)); send_dnsmasq_update (self); return TRUE; }
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; }
int pppoe_down_main(int argc, char **argv) { if (argc < 2) return 0; TRACE_PT("num=%s\n", argv[1]); if (atoi(argv[1]) != 0) return 0; if ((nvram_get_int("ppp_demand")) && (nvram_match("action_service", ""))) { stop_singe_pppoe(0); start_pppoe(0); stop_dnsmasq(); dns_to_resolv(); start_dnsmasq(); } return 0; }
// by tallest 0407 int disconnected_pppoe_main(int argc, char **argv) { int pppoe_num = atoi(argv[1]); char ppp_demand[2][20] = { "ppp_demand", "ppp_demand_1" }; if (nvram_match(ppp_demand[pppoe_num], "1") && nvram_match("action_service", "")) { cprintf("tallest:=====( kill pppoe %d )=====\n", pppoe_num); stop_single_pppoe(pppoe_num); start_pppoe(pppoe_num); dns_to_resolv(); stop_dnsmasq(); start_dnsmasq(); return 0; } cprintf("tallest:=====( PPPOE Dial On Demand Error!! )=====\n"); return 0; }