int launch_wan_usbnet(int unit) { int modem_devnum = 0; char ndis_ifname[16] = {0}; if (get_modem_ndis_ifname(ndis_ifname, &modem_devnum) && is_interface_exist(ndis_ifname)) { int ndis_mtu = nvram_safe_get_int("modem_mtu", 1500, 1000, 1500); check_upnp_wanif_changed(ndis_ifname); set_wan_unit_value(unit, "proto_t", "NDIS Modem"); set_wan_unit_value(unit, "ifname_t", ndis_ifname); /* bring up NDIS interface */ doSystem("ifconfig %s mtu %d up %s", ndis_ifname, ndis_mtu, "0.0.0.0"); /* re-build iptables rules (first stage w/o WAN IP) */ start_firewall_ex(); if (ndis_control_network(ndis_ifname, modem_devnum, 1) == 0) sleep(1); start_udhcpc_wan(ndis_ifname, unit, 0); return 0; } set_wan_unit_value(unit, "ifname_t", ""); return -1; }
void reset_wan6_vars(void) { struct in6_addr addr6; char addr6s[INET6_ADDRSTRLEN] = {0}; char *wan_addr6, *wan_gate6; int wan_size6; wan_gate6 = ""; if (is_wan_addr6_static() == 1) { wan_addr6 = nvram_safe_get("ip6_wan_addr"); wan_size6 = nvram_get_int("ip6_wan_size"); wan_gate6 = nvram_safe_get("ip6_wan_gate"); if (*wan_addr6) { memset(&addr6, 0, sizeof(addr6)); ipv6_from_string(wan_addr6, &addr6); inet_ntop(AF_INET6, &addr6, addr6s, INET6_ADDRSTRLEN); if (wan_size6 > 0 && wan_size6 < 128) sprintf(addr6s, "%s/%d", addr6s, wan_size6); } } set_wan_unit_value(0, "addr6", addr6s); set_wan_unit_value(0, "gate6", wan_gate6); set_wan_unit_value(0, "6rd_relay", nvram_safe_get("ip6_6rd_relay")); set_wan_unit_value(0, "6rd_size", nvram_safe_get("ip6_6rd_size")); build_dns6_var(); }
static void set_wan0_vars(void) { struct nvram_pair *np; char *v; char tmp[100], prefix[16]; snprintf(prefix, sizeof(prefix), "wan%d_", 0); /* Write through to wan0_ variable set */ for (np = router_defaults; np->name; np++) { if (!strncmp(np->name, "wan_", 4)) { if (nvram_get(strcat_r(prefix, &np->name[4], tmp))) continue; v = nvram_get(np->name); nvram_set_temp(tmp, v ? v : np->value); } } set_wan_unit_value(0, "unit", "0"); set_wan_unit_value(0, "primary", "1"); set_wan_unit_value(0, "ifname", IFNAME_WAN); }
void build_dns6_var(void) { char dns6s[INET6_ADDRSTRLEN*3+4] = {0}; char *dnsnv[3]; if (is_wan_dns6_static() == 1) { dnsnv[0] = nvram_safe_get("ip6_dns1"); dnsnv[1] = nvram_safe_get("ip6_dns2"); dnsnv[2] = nvram_safe_get("ip6_dns3"); if (*dnsnv[0] || *dnsnv[1] || *dnsnv[2]) { snprintf(dns6s, sizeof(dns6s), "%s %s %s", dnsnv[0], dnsnv[1], dnsnv[2]); trim_r(dns6s); } } set_wan_unit_value(0, "dns6", dns6s); }
int store_wan_dns6(char *dns6_new) { char dns6s[INET6_ADDRSTRLEN*3+8] = {0}; char *dns6_old; if (!dns6_new) return 0; snprintf(dns6s, sizeof(dns6s), "%s", dns6_new); trim_r(dns6s); if (!(*dns6s)) return 0; dns6_old = get_wan_unit_value(0, "dns6"); if (strcmp(dns6s, dns6_old) != 0) { set_wan_unit_value(0, "dns6", dns6s); return 1; } return 0; }
void wan6_down(char *wan_ifname, int unit) { int ipv6_type; char *wan6_ifname; ipv6_type = get_ipv6_type(); if (ipv6_type == IPV6_DISABLED) return; stop_radvd(); stop_dhcp6c(); control_if_ipv6_radv(wan_ifname, 0); control_if_ipv6_autoconf(wan_ifname, 0); if (ipv6_type == IPV6_6IN4 || ipv6_type == IPV6_6TO4 || ipv6_type == IPV6_6RD) { wan6_ifname = IFNAME_SIT; if (is_interface_exist(IFNAME_SIT)) doSystem("ip link set dev %s down", IFNAME_SIT); } else { wan6_ifname = wan_ifname; } // clear WAN routes6 clear_if_route6(wan6_ifname); // clear WAN addr6 clear_if_addr6(wan6_ifname); // delete SIT tunnel stop_sit_tunnel(); // clear DNS6 for resolv.conf set_wan_unit_value(unit, "dns6", ""); }
static void nvram_convert_misc_values(void) { char buff[64]; int sw_mode; /* check router mode */ sw_mode = nvram_get_int("sw_mode"); if (sw_mode == 1) { /* Internet gateway mode */ nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 4) { /* Pure router mode */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 3) { /* AP mode (Ethernet convertor) */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Bridged"); } else { nvram_set_int("sw_mode", 1); nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } if (strlen(nvram_wlan_get("wl", "ssid")) < 1) nvram_wlan_set("wl", "ssid", DEF_WLAN_5G_SSID); if (strlen(nvram_wlan_get("rt", "ssid")) < 1) nvram_wlan_set("rt", "ssid", DEF_WLAN_5G_SSID); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get("wl", "ssid")); nvram_wlan_set("wl", "ssid2", buff); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get("rt", "ssid")); nvram_wlan_set("rt", "ssid2", buff); if (strlen(nvram_safe_get("wl_wpa_mode")) < 1) nvram_set_int("wl_wpa_mode", 0); if (strlen(nvram_safe_get("wl_gmode")) < 1) nvram_set_int("wl_gmode", 2); // a/n Mixed if (strlen(nvram_safe_get("rt_gmode")) < 1) nvram_set_int("rt_gmode", 2); // b/g/n Mixed if (nvram_get_int("wl_HT_BW") > 1) nvram_set_int("wl_HT_BW", 1); if (nvram_get_int("rt_HT_BW") > 1) nvram_set_int("rt_HT_BW", 1); if (nvram_get_int("wl_stream_tx") > BOARD_NUM_ANT_5G_TX) nvram_set_int("wl_stream_tx", BOARD_NUM_ANT_5G_TX); if (nvram_get_int("wl_stream_rx") > BOARD_NUM_ANT_5G_RX) nvram_set_int("wl_stream_rx", BOARD_NUM_ANT_5G_RX); if (nvram_get_int("rt_stream_tx") > BOARD_NUM_ANT_2G_TX) nvram_set_int("rt_stream_tx", BOARD_NUM_ANT_2G_TX); if (nvram_get_int("rt_stream_rx") > BOARD_NUM_ANT_2G_RX) nvram_set_int("rt_stream_rx", BOARD_NUM_ANT_2G_RX); nvram_set_temp("ntpc_counter", "0000000000"); nvram_set_temp("login_timestamp", "0000000000"); nvram_set_int_temp("networkmap_fullscan", 0); nvram_set_int_temp("link_internet", 2); nvram_set_int_temp("link_wan", 0); nvram_set_int_temp("reload_svc_wl", 0); nvram_set_int_temp("reload_svc_rt", 0); nvram_set_int_temp("usb_hotplug_ms", 0); nvram_set_int_temp("usb_hotplug_lp", 0); nvram_set_int_temp("usb_hotplug_md", 0); nvram_set_int_temp("usb_unplug_lp", 0); nvram_set_int_temp("usb_unplug_md", 0); nvram_set_int_temp("usb_opt_start", 0); nvram_set_int_temp("l2tp_wan_t", 0); nvram_set_int_temp("l2tp_cli_t", 0); nvram_set_int_temp("l2tp_srv_t", 0); nvram_set_int_temp("vpnc_state_t", 0); nvram_set_temp("deferred_wanup_t", "0000000000"); nvram_set_temp("vpnc_dns_t", ""); nvram_set_temp("viptv_ifname", ""); /* setup wan0 variables */ set_wan0_vars(); set_wan_unit_value(0, "uptime", "0000000000"); set_wan_unit_value(0, "dltime", "0000000000"); set_wan_unit_value(0, "bytes_rx", "00000000000000000000"); set_wan_unit_value(0, "bytes_tx", "00000000000000000000"); set_wan_unit_value(0, "ifname_t", ""); set_usb_modem_dev_wan(0, 0); reset_wan_vars(); /* setup lan variables */ reset_lan_vars(); reset_lan_temp(); time_zone_x_mapping(); }
static void nvram_convert_misc_values(void) { char buff[64]; int sw_mode; #if defined (BOARD_GPIO_BTN_ROUTER) int i_router_switch = BTN_PRESSED; if (cpu_gpio_get_pin(BOARD_GPIO_BTN_ROUTER, &i_router_switch) >= 0) { if (i_router_switch != BTN_PRESSED) nvram_set_int("sw_mode", 3); } #endif /* check router mode */ sw_mode = nvram_get_int("sw_mode"); if (sw_mode == 1) { /* Internet gateway mode */ nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 4) { /* Pure router mode */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Routed"); } else if (sw_mode == 3) { /* AP mode (Ethernet convertor) */ nvram_set_int("wan_nat_x", 0); nvram_set("wan_route_x", "IP_Bridged"); } else { sw_mode = 1; nvram_set_int("sw_mode", 1); nvram_set_int("wan_nat_x", 1); nvram_set("wan_route_x", "IP_Routed"); } #if defined (BOARD_GPIO_LED_ROUTER) if (sw_mode != 3) LED_CONTROL(BOARD_GPIO_LED_ROUTER, LED_ON); #endif #if BOARD_HAS_5G_RADIO if (strlen(nvram_wlan_get(1, "ssid")) < 1) nvram_wlan_set(1, "ssid", DEF_WLAN_5G_SSID); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get(1, "ssid")); nvram_wlan_set(1, "ssid2", buff); if (strlen(nvram_wlan_get(1, "wpa_mode")) < 1) nvram_wlan_set_int(1, "wpa_mode", 0); #if BOARD_HAS_5G_11AC if (strlen(nvram_wlan_get(1, "gmode")) < 1) nvram_wlan_set_int(1, "gmode", 4); // a/n/ac Mixed if (nvram_wlan_get_int(1, "HT_BW") > 2) nvram_wlan_set_int(1, "HT_BW", 2); #else if (strlen(nvram_wlan_get(1, "gmode")) < 1) nvram_wlan_set_int(1, "gmode", 2); // a/n Mixed if (nvram_wlan_get_int(1, "HT_BW") > 1) nvram_wlan_set_int(1, "HT_BW", 1); #endif if (nvram_wlan_get_int(1, "stream_tx") > BOARD_NUM_ANT_5G_TX) nvram_wlan_set_int(1, "stream_tx", BOARD_NUM_ANT_5G_TX); if (nvram_wlan_get_int(1, "stream_rx") > BOARD_NUM_ANT_5G_RX) nvram_wlan_set_int(1, "stream_rx", BOARD_NUM_ANT_5G_RX); #endif if (strlen(nvram_wlan_get(0, "ssid")) < 1) nvram_wlan_set(0, "ssid", DEF_WLAN_2G_SSID); memset(buff, 0, sizeof(buff)); char_to_ascii(buff, nvram_wlan_get(0, "ssid")); nvram_wlan_set(0, "ssid2", buff); if (strlen(nvram_wlan_get(0, "gmode")) < 1) nvram_wlan_set_int(0, "gmode", 2); // b/g/n Mixed if (nvram_wlan_get_int(0, "HT_BW") > 1) nvram_wlan_set_int(0, "HT_BW", 1); if (nvram_wlan_get_int(0, "stream_tx") > BOARD_NUM_ANT_2G_TX) nvram_wlan_set_int(0, "stream_tx", BOARD_NUM_ANT_2G_TX); if (nvram_wlan_get_int(0, "stream_rx") > BOARD_NUM_ANT_2G_RX) nvram_wlan_set_int(0, "stream_rx", BOARD_NUM_ANT_2G_RX); nvram_set_temp("ntpc_counter", "0000000000"); nvram_set_temp("login_timestamp", "0000000000"); nvram_set_int_temp("networkmap_fullscan", 0); nvram_set_int_temp("link_internet", 2); nvram_set_int_temp("link_wan", 0); nvram_set_int_temp("reload_svc_wl", 0); nvram_set_int_temp("reload_svc_rt", 0); nvram_set_int_temp("usb_hotplug_ms", 0); nvram_set_int_temp("usb_hotplug_lp", 0); nvram_set_int_temp("usb_hotplug_md", 0); nvram_set_int_temp("usb_unplug_lp", 0); nvram_set_int_temp("usb_unplug_md", 0); nvram_set_int_temp("usb_opt_start", 0); nvram_set_int_temp("l2tp_wan_t", 0); nvram_set_int_temp("l2tp_cli_t", 0); nvram_set_int_temp("l2tp_srv_t", 0); nvram_set_int_temp("vpnc_state_t", 0); nvram_set_temp("deferred_wanup_t", "0000000000"); nvram_set_temp("vpnc_dns_t", ""); nvram_set_temp("vpnc_dom_t", ""); nvram_set_temp("viptv_ifname", ""); nvram_set_temp(RSTATS_NVKEY_24, (sw_mode != 3) ? IFDESC_WAN : IFDESC_LAN); nvram_set_temp(RSTATS_NVKEY_DM, IFDESC_WAN); /* setup wan0 variables */ set_wan0_vars(); set_wan_unit_value(0, "uptime", "0000000000"); set_wan_unit_value(0, "dltime", "0000000000"); set_wan_unit_value(0, "bytes_rx", "00000000000000000000"); set_wan_unit_value(0, "bytes_tx", "00000000000000000000"); set_wan_unit_value(0, "ifname_t", ""); set_usb_modem_dev_wan(0, 0); reset_wan_vars(); /* setup lan variables */ reset_lan_vars(); reset_lan_temp(); time_zone_x_mapping(); }