/* * Called when link goes down */ int ipdown_main(int argc, char **argv) { char *wan_ifname = safe_getenv("IFNAME"); char *wan_linkname = safe_getenv("LINKNAME"); char tmp[100], prefix[] = "wanXXXXXXXXXX_"; int unit; _dprintf("%s():: %s\n", __FUNCTION__, argv[0]); /* Get unit from LINKNAME: ppp[UNIT] */ if ((unit = ppp_linkunit(wan_linkname)) < 0) return 0; _dprintf("%s: unit=%d ifname=%s\n", __FUNCTION__, unit, wan_ifname); snprintf(prefix, sizeof(prefix), "wan%d_", unit); #ifdef RTCONFIG_IPV6 wait_ppp_count = -2; #endif wan_down(wan_ifname); // override wan_state to get real reason update_wan_state(prefix, WAN_STATE_STOPPED, pppstatus()); unlink(strcat_r("/tmp/ppp/link.", wan_ifname, tmp)); preset_wan_routes(wan_ifname); _dprintf("%s:: done\n", __FUNCTION__); return 0; }
/* * deconfig: This argument is used when udhcpc starts, and when a * leases is lost. The script should put the interface in an up, but * deconfigured state. */ static int deconfig(void) { char *wan_ifname = safe_getenv("interface"); ifconfig(wan_ifname, IFUP, "0.0.0.0", NULL); expires(wan_ifname, 0); wan_down(wan_ifname); dprintf("done\n"); return 0; }
/* * deconfig: This argument is used when udhcpc starts, and when a * leases is lost. The script should put the interface in an up, but * deconfigured state. */ static int deconfig(void) { char *wan_ifname = safe_getenv("interface"); if (nvram_match("wan0_proto", "l2tp") || nvram_match("wan0_proto", "pptp")) { /* fix hang-up issue */ logmessage("dhcp client", "skipping resetting IP address to 0.0.0.0"); } else ifconfig(wan_ifname, IFUP, "0.0.0.0", NULL); expires(wan_ifname, 0); wan_down(wan_ifname); logmessage("dhcp client", "%s: lease is lost", udhcpstate); wanmessage("lost IP from server"); return 0; }
/* * Called when link goes down */ int ipdown_main(int argc, char **argv) { char *wan_ifname = safe_getenv("IFNAME"); int unit; char tmp[100], prefix[] = "wanXXXXXXXXXX_"; if ((unit = ppp_ifunit(wan_ifname)) < 0) return -1; snprintf(prefix, sizeof(prefix), "wan%d_", unit); wan_down(wan_ifname); unlink(strcat_r("/tmp/ppp/link.", wan_ifname, tmp)); preset_wan_routes(wan_ifname); return 0; }
/* * Called when link goes down */ int ipdown_main(int argc, char **argv) { char *wan_ifname; char tmp[100], prefix[WAN_PREFIX_SZ]; if (ppp_prefix(&wan_ifname, prefix) < 0) return -1; umask(022); wan_down(wan_ifname); unlink(strcat_r("/tmp/ppp/link.", wan_ifname, tmp)); preset_wan_routes(wan_ifname); logmessage(nvram_safe_get("wan_proto_t"), "Disconnected"); wanmessage(pppstatus(tmp)); return 0; }