Access Point Mode / WET / Media Bridge Mode: Allow to obtain a LAN IP via DHCP

Note: New GUI option (Automatic IP) at basic-network.asp
arm-sdk7
M_ars 3 years ago committed by pedro
parent 19edb48d63
commit b9e68f7c0f

@ -790,6 +790,7 @@ static const nvset_t nvset_list[] = {
{ "lan_state", V_01 },
{ "lan_desc", V_01 },
{ "lan_invert", V_01 },
{ "lan_dhcp", V_01 }, /* DHCP client [0|1] - obtain a LAN (br0) IP via DHCP */
{ "lan_proto", V_WORD }, // static, dhcp
{ "dhcp_start", V_LENGTH(0, 15) }, // remove !
{ "dhcp_num", V_LENGTH(0, 4) }, // remove !

@ -194,6 +194,7 @@ endif
@cd $(INSTALLDIR)/sbin && ln -sf rc dhcpc-event
@cd $(INSTALLDIR)/sbin && ln -sf rc dhcpc-release
@cd $(INSTALLDIR)/sbin && ln -sf rc dhcpc-renew
@cd $(INSTALLDIR)/sbin && ln -sf rc dhcpc-event-lan
@cd $(INSTALLDIR)/sbin && ln -sf rc wldist

@ -45,6 +45,12 @@
#define LOGMSG_DISABLE DISABLE_SYSLOG_OS
#define LOGMSG_NVDEBUG "dhcp_debug"
/* only for mips (incl. mips RT-AC) - no support yet for struct nvram_tuple; sync to nvram default values if changed! */
#ifndef TCONFIG_BCMARM
#define FT_LAN_IP_ADDR "192.168.1.1"
#define FT_LAN_NETMASK "255.255.255.0"
#define FT_LAN_GATEWAY "0.0.0.0"
#endif /* !TCONFIG_BCMARM */
static void expires(unsigned int seconds, char *prefix)
{
@ -353,7 +359,7 @@ int dhcpc_event_main(int argc, char **argv)
if (!wait_action_idle(10))
return 0;
logmsg(LOG_DEBUG, "*** %s: interface=%s wan_prefix=%s event=%s", __FUNCTION__, ifname, prefix, argv[1]);
logmsg(LOG_DEBUG, "*** %s: interface=%s wan_prefix=%s event=%s", __FUNCTION__, ifname, prefix, argv[1] ? : "");
if ((!argv[1]) || (ifname == NULL))
return EINVAL;
@ -432,6 +438,234 @@ int dhcpc_renew_main(int argc, char **argv)
return 0;
}
static void restart_basic_services(void) {
stop_firewall();
start_firewall();
set_host_domain_name();
stop_dnsmasq();
dns_to_resolv();
start_dnsmasq();
stop_httpd();
start_httpd();
}
static void restart_ntpd(void) {
logmsg(LOG_DEBUG, "*** %s: restart ntpd", __FUNCTION__);
stop_ntpd();
sleep(1); /* wait a little bit before calling start_ntpd() */
start_ntpd();
}
static int expires_lan(unsigned int in)
{
time_t now;
FILE *fp;
char tmp[64];
time(&now);
snprintf(tmp, sizeof(tmp), "/tmp/dhcpc-lan.expires");
if (!(fp = fopen(tmp, "w"))) {
perror(tmp);
return 1;
}
fprintf(fp, "%d", (unsigned int) now + in);
fclose(fp);
return 0;
}
static int deconfig_lan(void)
{
char *lan_ifname = safe_getenv("interface");
logmsg(LOG_DEBUG, "*** %s", __FUNCTION__);
#ifdef TCONFIG_BCMARM
ifconfig(lan_ifname, IFUP | IFF_ALLMULTI, nvram_default_get("lan_ipaddr"), nvram_default_get("lan_netmask")); /* nvram (or FreshTomato) default values */
#else /* mips */
ifconfig(lan_ifname, IFUP | IFF_ALLMULTI, FT_LAN_IP_ADDR, FT_LAN_NETMASK);
#endif
expires_lan(0);
/* Remove default route to gateway if specified */
route_del(lan_ifname, 0, "0.0.0.0", nvram_safe_get("lan_gateway"), "0.0.0.0");
/* clear resolv.conf */
clear_resolv();
/* completely clear old setup and bring back nvram (or FreshTomato) default values */
#ifdef TCONFIG_BCMARM
nvram_set("lan_ipaddr", nvram_default_get("lan_ipaddr"));
nvram_set("lan_netmask", nvram_default_get("lan_netmask"));
nvram_set("lan_gateway", nvram_default_get("lan_gateway"));
#else /* mips */
nvram_set("lan_ipaddr", FT_LAN_IP_ADDR);
nvram_set("lan_netmask", FT_LAN_NETMASK);
nvram_set("lan_gateway", FT_LAN_GATEWAY);
#endif
nvram_set("wan_lease", "");
nvram_set("wan_dns", "");
/* (re)start firewall, dnsmasq and httpd */
restart_basic_services();
return 0;
}
static int bound_lan(void)
{
char *lan_ifname = safe_getenv("interface");
char *value;
logmsg(LOG_DEBUG, "*** %s", __FUNCTION__);
/* get IP/Gateway/Netmask */
env2nv("ip", "lan_ipaddr");
env2nv_gateway("lan_gateway");
value = getenv("subnet") ? : "255.255.255.255";
nvram_set("lan_netmask", value);
if ((value = getenv("lease"))) {
nvram_set("wan_lease", value); /* keep it easy - use wan variable! */
expires_lan(atoi(value));
}
/* get DNS */
env2nv("dns", "wan_dns"); /* keep it easy - use wan variable! (static dns) */
ifconfig(lan_ifname, IFUP | IFF_ALLMULTI, nvram_safe_get("lan_ipaddr"), nvram_safe_get("lan_netmask"));
/* Set default route to gateway if specified */
route_add(lan_ifname, 0, "0.0.0.0", nvram_safe_get("lan_gateway"), "0.0.0.0");
/* (re)start firewall, dnsmasq and httpd */
restart_basic_services();
/* get (sync) time */
restart_ntpd();
return 0;
}
static int renew_lan(void)
{
char *value;
char lan_gateway[32] = {0};
char *lan_ifname = safe_getenv("interface");
int changed = 0, changed_dns = 0;
logmsg(LOG_DEBUG, "*** %s", __FUNCTION__);
snprintf(lan_gateway, sizeof(lan_gateway),"%s", nvram_safe_get("lan_gateway")); /* copy current (old) nvram lan_gateway value first */
/* check IP/Gateway/Netmask - change/new ? */
changed = env2nv("ip", "lan_ipaddr");
changed += env2nv_gateway("lan_gateway");
changed += env2nv("subnet", "lan_netmask");
if (changed) {
/* IP or GATEWAY or NETMASK changed - reconfigure everything */
logmsg(LOG_DEBUG, "*** %s: IP or GATEWAY or NETMASK changed - reconfigure everything", __FUNCTION__);
/* Remove current (old) default route to gateway if specified */
route_del(lan_ifname, 0, "0.0.0.0", lan_gateway, "0.0.0.0");
return bound_lan();
}
if ((value = getenv("lease"))) {
nvram_set("wan_lease", value); /* keep it easy - use wan variable! */
expires_lan(atoi(value));
}
/* check DNS - change/new ? */
changed_dns = env2nv("dns", "wan_dns"); /* keep it easy - use wan variable! (static dns) */
if (changed_dns) {
logmsg(LOG_DEBUG, "*** %s: DNS changed", __FUNCTION__);
dns_to_resolv();
}
return 0;
}
int dhcpc_lan_main(int argc, char **argv)
{
if (!wait_action_idle(10))
return 0;
logmsg(LOG_DEBUG, "*** %s: event=%s", __FUNCTION__, argv[1] ? : "");
if (!argv[1])
return EINVAL;
else if (strstr(argv[1], "deconfig"))
return deconfig_lan();
else if (strstr(argv[1], "bound"))
return bound_lan();
else if ((strstr(argv[1], "renew")) || (strstr(argv[1], "update")))
return renew_lan();
return 0;
}
void start_dhcpc_lan(void)
{
char pid_file[64];
char cmd[256];
char tmp[64];
char *ifname = nvram_safe_get("lan_ifname");
char *argv[128];
int argc = 0;
pid_t pid;
int wan_proto = get_wan_proto(); /* 1. check wan disabled for AP / WET / Media Brige Mode */
int lan_dhcp = nvram_get_int("lan_dhcp"); /* 2. check if DHCP Client for LAN (br0) is enabled! */
stop_dhcpc_lan();
/* check condidtions before we go on! */
if ((wan_proto != WP_DISABLED) || (!lan_dhcp)) {
logmsg(LOG_DEBUG, "*** %s: Not in AP / WET / MB Mode - skipping DHCP Client for Lan (br0)!", __FUNCTION__);
return;
}
memset(pid_file, 0, sizeof(pid_file));
snprintf(pid_file, sizeof(pid_file), "/var/run/udhcpc-lan.pid");
memset(tmp, 0, sizeof(tmp));
if (nvram_invmatch("wan_hostname", "")) {
strcpy(tmp, "-x hostname:");
strcat(tmp, nvram_safe_get("wan_hostname"));
}
memset(cmd, 0, sizeof(cmd));
snprintf(cmd, sizeof(cmd), "/sbin/udhcpc -i %s -s /sbin/dhcpc-event-lan -p %s %s %s",
ifname,
pid_file,
tmp,
nvram_safe_get("dhcpc_custom")
);
logmsg(LOG_DEBUG, "*** %s: ifname=%s cmd=%s", __FUNCTION__, ifname, cmd);
for (argv[argc = 0] = strtok(cmd, " "); argv[argc] != NULL; argv[++argc] = strtok(NULL, " "));
_eval(argv, NULL, 0, &pid);
}
void stop_dhcpc_lan(void)
{
char pid_file[64];
killall("dhcpc-event-lan", SIGTERM);
memset(pid_file, 0, sizeof(pid_file));
snprintf(pid_file, sizeof(pid_file), "/var/run/udhcpc-lan.pid");
kill_pidfile_s(pid_file, SIGUSR2);
kill_pidfile_s(pid_file, SIGTERM);
unlink(pid_file);
}
void start_dhcpc(char *prefix)
{
char pid_file[64];

@ -198,6 +198,7 @@ static const applets_t applets[] = {
{ "dhcpc-event", dhcpc_event_main },
{ "dhcpc-release", dhcpc_release_main },
{ "dhcpc-renew", dhcpc_renew_main },
{ "dhcpc-event-lan", dhcpc_lan_main },
#ifdef TCONFIG_IPV6
{ "dhcp6c-state", dhcp6c_state_main },
#endif

@ -205,8 +205,11 @@ extern void ndp_proxy(const char *ifname, int enable);
extern int dhcpc_event_main(int argc, char **argv);
extern int dhcpc_release_main(int argc, char **argv);
extern int dhcpc_renew_main(int argc, char **argv);
extern int dhcpc_lan_main(int argc, char **argv);
extern void start_dhcpc(char *prefix);
extern void stop_dhcpc(char *prefix);
extern void start_dhcpc_lan(void);
extern void stop_dhcpc_lan(void);
extern void do_connect_file(unsigned int renew, char *prefix);
#ifdef TCONFIG_IPV6
extern int dhcp6c_state_main(int argc, char **argv);

@ -2852,6 +2852,7 @@ void start_services(void)
if (nvram_get_int("sshd_eas"))
start_sshd();
}
start_dhcpc_lan(); /* start very early */
start_nas();
#ifdef TCONFIG_ZEBRA
start_zebra();
@ -2924,6 +2925,7 @@ void start_services(void)
void stop_services(void)
{
stop_dhcpc_lan(); /* stop very early */
clear_resolv();
stop_ntpd();
#ifdef TCONFIG_FANCTRL

@ -1218,9 +1218,15 @@ void start_wan_done(char *wan_ifname, char *prefix)
#endif
if ((wanup || (proto == WP_DISABLED)) && (!nvram_get_int("ntp_ready"))) {
first_ntp_sync = 1;
stop_ntpd();
start_ntpd();
if ((proto == WP_DISABLED) && nvram_get_int("lan_dhcp")) { /* Case: AP / WET / MB Mode with DHCP client for Lan (br0) */
/* nothing to do here! and start ntpd (only) with bound event */
logmsg(LOG_DEBUG, "*** %s: start ntpd with bound event (DHCP client)", __FUNCTION__);
}
else { /* default */
first_ntp_sync = 1;
stop_ntpd();
start_ntpd();
}
}
if ((wanup) || (proto == WP_DISABLED)) {

@ -31,7 +31,7 @@ struct nvram_tuple router_defaults[] = {
{ "lan_hwaddr", "" , 0 }, /* LAN interface MAC address */
/* LAN TCP/IP parameters */
{ "lan_dhcp", "0" , 0 }, /* DHCP client [static|dhcp] */
{ "lan_dhcp", "0" , 0 }, /* DHCP client [0|1] - obtain a LAN (br0) IP via DHCP */
{ "lan_proto", "dhcp" , 0 }, /* DHCP server [static|dhcp] */
{ "lan_ipaddr", "192.168.1.1" , 0 }, /* LAN IP address */
{ "lan_netmask", "255.255.255.0" , 0 }, /* LAN netmask */

@ -20,7 +20,7 @@
<script src="interfaces.js"></script>
<script src="wireless.js"></script>
<script>
// <% nvram("dhcp_lease,dhcp_num,dhcp_start,dhcpd_startip,dhcpd_endip,lan_gateway,lan_ipaddr,lan_netmask,lan_proto,lan_state,lan_desc,lan_invert,wl_security_mode,wl_wds_enable,wl_channel,wl_closed,wl_crypto,wl_key,wl_key1,wl_key2,wl_key3,wl_key4,wl_lazywds,wl_mode,wl_net_mode,wl_passphrase,wl_radio,wl_radius_ipaddr,wl_radius_port,wl_ssid,wl_wds,wl_wep_bit,wl_wpa_gtk_rekey,wl_wpa_psk,wl_radius_key,wl_auth,wl_hwaddr,t_features,wl_nbw_cap,wl_nctrlsb,wl_nband,wl_phytype,lan_ifname,lan_stp,lan1_ifname,lan1_ipaddr,lan1_netmask,lan1_proto,lan1_stp,dhcp1_start,dhcp1_num,dhcp1_lease,dhcpd1_startip,dhcpd1_endip,lan2_ifname,lan2_ipaddr,lan2_netmask,lan2_proto,lan2_stp,dhcp2_start,dhcp2_num,dhcp2_lease,dhcpd2_startip,dhcpd2_endip,lan3_ifname,lan3_ipaddr,lan3_netmask,lan3_proto,lan3_stp,dhcp3_start,dhcp3_num,dhcp3_lease,dhcpd3_startip,dhcpd3_endip,cstats_enable,wan_proto,wan_weight,wan_modem_type,wan_modem_pin,wan_modem_dev,wan_modem_init,wan_modem_apn,wan_modem_speed,wan_modem_band,wan_modem_roam,wan_ppp_username,wan_ppp_passwd,wan_ppp_service,wan_l2tp_server_ip,wan_pptp_dhcp,wan_ipaddr,wan_netmask,wan_gateway,wan_pptp_server_ip,wan_ppp_custom,wan_ppp_demand,wan_ppp_idletime,wan_ppp_demand_dnsip,wan_ppp_redialperiod,wan_pppoe_lei,wan_pppoe_lef,wan_mtu_enable,wan_mtu,wan_ppp_mlppp,wan_modem_ipaddr,wan_sta,wan_dns,wan_dns_auto,wan_ifnameX,wan_ckmtd,wan_ck_pause,wan2_proto,wan2_weight,wan2_modem_type,wan2_modem_pin,wan2_modem_dev,wan2_modem_init,wan2_modem_apn,wan2_modem_speed,wan2_modem_band,wan2_modem_roam,wan2_ppp_username,wan2_ppp_passwd,wan2_ppp_service,wan2_l2tp_server_ip,wan2_pptp_dhcp,wan2_ipaddr,wan2_netmask,wan2_gateway,wan2_pptp_server_ip,wan2_ppp_custom,wan2_ppp_demand,wan2_ppp_idletime,wan2_ppp_demand_dnsip,wan2_ppp_redialperiod,wan2_pppoe_lei,wan2_pppoe_lef,wan2_mtu_enable,wan2_mtu,wan2_ppp_mlppp,wan2_modem_ipaddr,wan2_sta,wan2_dns,wan2_dns_auto,wan2_ifnameX,wan2_ckmtd,wan2_ck_pause,wan3_proto,wan3_weight,wan3_modem_type,wan3_modem_pin,wan3_modem_dev,wan3_modem_init,wan3_modem_apn,wan3_modem_speed,wan3_modem_band,wan3_modem_roam,wan3_ppp_username,wan3_ppp_passwd,wan3_ppp_service,wan3_l2tp_server_ip,wan3_pptp_dhcp,wan3_ipaddr,wan3_netmask,wan3_gateway,wan3_pptp_server_ip,wan3_ppp_custom,wan3_ppp_demand,wan3_ppp_idletime,wan3_ppp_demand_dnsip,wan3_ppp_redialperiod,wan3_pppoe_lei,wan3_pppoe_lef,wan3_mtu_enable,wan3_mtu,wan3_ppp_mlppp,wan3_modem_ipaddr,wan3_sta,wan3_dns,wan3_dns_auto,wan3_ifnameX,wan3_ckmtd,wan3_ck_pause,wan4_proto,wan4_weight,wan4_modem_type,wan4_modem_pin,wan4_modem_dev,wan4_modem_init,wan4_modem_apn,wan4_modem_speed,wan4_modem_band,wan4_modem_roam,wan4_ppp_username,wan4_ppp_passwd,wan4_ppp_service,wan4_l2tp_server_ip,wan4_pptp_dhcp,wan4_ipaddr,wan4_netmask,wan4_gateway,wan4_pptp_server_ip,wan4_ppp_custom,wan4_ppp_demand,wan4_ppp_idletime,wan4_ppp_demand_dnsip,wan4_ppp_redialperiod,wan4_pppoe_lei,wan4_pppoe_lef,wan4_mtu_enable,wan4_mtu,wan4_ppp_mlppp,wan4_modem_ipaddr,wan4_sta,wan4_dns,wan4_dns_auto,wan4_ifnameX,wan4_ckmtd,wan4_ck_pause,mwan_num,mwan_cktime,mwan_ckdst,mwan_tune_gc,wan_hilink_ip,wan2_hilink_ip,wan3_hilink_ip,wan4_hilink_ip,wan_status_script,wan2_status_script,wan3_status_script,wan4_status_script,smart_connect_x,dnscrypt_proxy,dnscrypt_priority,stubby_proxy,stubby_priority"); %>
// <% nvram("dhcp_lease,dhcp_num,dhcp_start,dhcpd_startip,dhcpd_endip,lan_dhcp,lan_gateway,lan_ipaddr,lan_netmask,lan_proto,lan_state,lan_desc,lan_invert,wl_security_mode,wl_wds_enable,wl_channel,wl_closed,wl_crypto,wl_key,wl_key1,wl_key2,wl_key3,wl_key4,wl_lazywds,wl_mode,wl_net_mode,wl_passphrase,wl_radio,wl_radius_ipaddr,wl_radius_port,wl_ssid,wl_wds,wl_wep_bit,wl_wpa_gtk_rekey,wl_wpa_psk,wl_radius_key,wl_auth,wl_hwaddr,t_features,wl_nbw_cap,wl_nctrlsb,wl_nband,wl_phytype,lan_ifname,lan_stp,lan1_ifname,lan1_ipaddr,lan1_netmask,lan1_proto,lan1_stp,dhcp1_start,dhcp1_num,dhcp1_lease,dhcpd1_startip,dhcpd1_endip,lan2_ifname,lan2_ipaddr,lan2_netmask,lan2_proto,lan2_stp,dhcp2_start,dhcp2_num,dhcp2_lease,dhcpd2_startip,dhcpd2_endip,lan3_ifname,lan3_ipaddr,lan3_netmask,lan3_proto,lan3_stp,dhcp3_start,dhcp3_num,dhcp3_lease,dhcpd3_startip,dhcpd3_endip,cstats_enable,wan_proto,wan_weight,wan_modem_type,wan_modem_pin,wan_modem_dev,wan_modem_init,wan_modem_apn,wan_modem_speed,wan_modem_band,wan_modem_roam,wan_ppp_username,wan_ppp_passwd,wan_ppp_service,wan_l2tp_server_ip,wan_pptp_dhcp,wan_ipaddr,wan_netmask,wan_gateway,wan_pptp_server_ip,wan_ppp_custom,wan_ppp_demand,wan_ppp_idletime,wan_ppp_demand_dnsip,wan_ppp_redialperiod,wan_pppoe_lei,wan_pppoe_lef,wan_mtu_enable,wan_mtu,wan_ppp_mlppp,wan_modem_ipaddr,wan_sta,wan_dns,wan_dns_auto,wan_ifnameX,wan_ckmtd,wan_ck_pause,wan2_proto,wan2_weight,wan2_modem_type,wan2_modem_pin,wan2_modem_dev,wan2_modem_init,wan2_modem_apn,wan2_modem_speed,wan2_modem_band,wan2_modem_roam,wan2_ppp_username,wan2_ppp_passwd,wan2_ppp_service,wan2_l2tp_server_ip,wan2_pptp_dhcp,wan2_ipaddr,wan2_netmask,wan2_gateway,wan2_pptp_server_ip,wan2_ppp_custom,wan2_ppp_demand,wan2_ppp_idletime,wan2_ppp_demand_dnsip,wan2_ppp_redialperiod,wan2_pppoe_lei,wan2_pppoe_lef,wan2_mtu_enable,wan2_mtu,wan2_ppp_mlppp,wan2_modem_ipaddr,wan2_sta,wan2_dns,wan2_dns_auto,wan2_ifnameX,wan2_ckmtd,wan2_ck_pause,wan3_proto,wan3_weight,wan3_modem_type,wan3_modem_pin,wan3_modem_dev,wan3_modem_init,wan3_modem_apn,wan3_modem_speed,wan3_modem_band,wan3_modem_roam,wan3_ppp_username,wan3_ppp_passwd,wan3_ppp_service,wan3_l2tp_server_ip,wan3_pptp_dhcp,wan3_ipaddr,wan3_netmask,wan3_gateway,wan3_pptp_server_ip,wan3_ppp_custom,wan3_ppp_demand,wan3_ppp_idletime,wan3_ppp_demand_dnsip,wan3_ppp_redialperiod,wan3_pppoe_lei,wan3_pppoe_lef,wan3_mtu_enable,wan3_mtu,wan3_ppp_mlppp,wan3_modem_ipaddr,wan3_sta,wan3_dns,wan3_dns_auto,wan3_ifnameX,wan3_ckmtd,wan3_ck_pause,wan4_proto,wan4_weight,wan4_modem_type,wan4_modem_pin,wan4_modem_dev,wan4_modem_init,wan4_modem_apn,wan4_modem_speed,wan4_modem_band,wan4_modem_roam,wan4_ppp_username,wan4_ppp_passwd,wan4_ppp_service,wan4_l2tp_server_ip,wan4_pptp_dhcp,wan4_ipaddr,wan4_netmask,wan4_gateway,wan4_pptp_server_ip,wan4_ppp_custom,wan4_ppp_demand,wan4_ppp_idletime,wan4_ppp_demand_dnsip,wan4_ppp_redialperiod,wan4_pppoe_lei,wan4_pppoe_lef,wan4_mtu_enable,wan4_mtu,wan4_ppp_mlppp,wan4_modem_ipaddr,wan4_sta,wan4_dns,wan4_dns_auto,wan4_ifnameX,wan4_ckmtd,wan4_ck_pause,mwan_num,mwan_cktime,mwan_ckdst,mwan_tune_gc,wan_hilink_ip,wan2_hilink_ip,wan3_hilink_ip,wan4_hilink_ip,wan_status_script,wan2_status_script,wan3_status_script,wan4_status_script,smart_connect_x,dnscrypt_proxy,dnscrypt_priority,stubby_proxy,stubby_priority"); %>
/* DUALWAN-BEGIN */
maxwan_num = 2;
@ -440,6 +440,7 @@ function verifyFields(focused, quiet) {
/* --- visibility --- */
var vis = {
_f_automatic_ip: 1,
_f_dns_1: 1,
_f_dns_2: 1,
_lan_gateway: 1
@ -877,10 +878,18 @@ function verifyFields(focused, quiet) {
}
if (wanproto[uidx - 1] != 'disabled' && uidx <= curr_mwan_num) {
vis._f_automatic_ip = 0;
vis._lan_gateway = 0;
vis._f_dns_1 = 0;
vis._f_dns_2 = 0;
}
else { /* hide gateway and dns if automatic ip is turned on! */
if (E('_f_automatic_ip').checked) {
vis._lan_gateway = 0;
vis._f_dns_1 = 0;
vis._f_dns_2 = 0;
}
}
vis['_wan'+u+'_ppp_idletime'] = (E('_wan'+u+'_ppp_demand').value == 1) && vis['_wan'+u+'_ppp_demand'];
vis['_wan'+u+'_ppp_demand_dnsip'] = vis['_wan'+u+'_ppp_idletime'];
@ -1539,6 +1548,8 @@ function save() {
}
}
fom.lan_dhcp.value = fom.f_automatic_ip.checked ? 1 : 0;
fom.lan_state.value = fom.f_lan_state.checked ? 1 : 0;
fom.lan_desc.value = fom.f_lan_desc.checked ? 1 : 0;
fom.lan_invert.value = fom.f_lan_invert.checked ? 1 : 0;
@ -1731,6 +1742,7 @@ function init() {
<input type="hidden" name="_reboot" value="0">
<input type="hidden" name="_service" value="*">
<input type="hidden" name="_moveip" value="0">
<input type="hidden" name="lan_dhcp">
<input type="hidden" name="lan_state">
<input type="hidden" name="lan_desc">
<input type="hidden" name="lan_invert">
@ -1892,6 +1904,7 @@ function init() {
dns = nvram.wan_dns.split(/\s+/);
createFieldTable('', [
{ title: 'Automatic IP', name: 'f_automatic_ip', type: 'checkbox', value: (nvram.lan_dhcp == 1), suffix: ' <small>(obtain IP/Gateway/DNS via DHCP)<\/small>' },
{ title: 'Default Gateway', name: 'lan_gateway', type: 'text', maxlen: 15, size: 17, value: nvram.lan_gateway },
{ title: 'Static DNS', suffix: '&nbsp; <small>IP:port<\/small>', name: 'f_dns_1', type: 'text', maxlen: 21, size: 25, value: dns[0] || '0.0.0.0' },
{ title: '', name: 'f_dns_2', type: 'text', maxlen: 21, size: 25, value: dns[1] || '0.0.0.0' }

Loading…
Cancel
Save