/* * 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; }
/* * 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; }