/* * 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 = 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; }
int watchdog_main(int argc, char *argv[]) { FILE *fp; sigset_t sigs_to_catch; #ifdef REMOVE /* Run it under background */ switch (fork()) { case -1: exit(0); break; case 0: // start in a new session (void) setsid(); break; default: /* parent process should just die */ _exit(0); } #endif /* write pid */ if ((fp = fopen("/var/run/watchdog.pid", "w")) != NULL) { fprintf(fp, "%d", getpid()); fclose(fp); } doSystem("iwpriv %s set WatchdogPid=%d", WIF, getpid()); doSystem("iwpriv %s set WatchdogPid=%d", WIF2G, getpid()); /* Start GPIO function */ ra_gpio_init(); /* set the signal handler */ sigemptyset(&sigs_to_catch); sigaddset(&sigs_to_catch, SIGUSR1); sigaddset(&sigs_to_catch, SIGUSR2); sigaddset(&sigs_to_catch, SIGTSTP); sigaddset(&sigs_to_catch, SIGALRM); sigaddset(&sigs_to_catch, SIGTTIN); sigprocmask(SIG_UNBLOCK, &sigs_to_catch, NULL); signal(SIGUSR1, catch_sig); signal(SIGUSR2, catch_sig); signal(SIGTSTP, catch_sig); signal(SIGALRM, watchdog); signal(SIGTTIN, catch_sig); nvram_set("btn_rst", "0"); nvram_set("btn_ez", "0"); #if (!defined(W7_LOGO) && !defined(WIFI_LOGO)) // if (!pids("ots")) // start_ots(); #endif setenv("TZ", nvram_safe_get("time_zone_x"), 1); /* set timer */ alarmtimer(NORMAL_PERIOD, 0); if ( nvram_match("wan_route_x", "IP_Routed") && (nvram_match("wan0_proto", "pppoe") || nvram_match("wan0_proto", "pptp") || nvram_match("wan0_proto", "l2tp")) ) { if (nvram_match("wan0_proto", "pppoe") && nvram_match("wan0_pppoe_demand", "1") && !ppp0_as_default_route()) { // system("route add -net default gateway 10.112.112.112 netmask 0.0.0.0 dev ppp0"); preset_wan_routes("ppp0"); } eval("ping", "8.8.8.8", "-c", "3"); } /* Most of time it goes to sleep */ while (1) { pause(); } return 0; }