root/src/router/rc/rc.c

Revision 3898, 18.3 kB (checked in by BrainSlayer, 3 years ago)

watchdog for magicbox added

Line 
1 /*
2  * Router rc control script
3  *
4  * Copyright 2001-2003, Broadcom Corporation
5  * All Rights Reserved.
6  *
7  * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8  * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9  * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10  * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11  *
12  * $Id: rc.c,v 1.12 2005/11/30 11:54:21 seg Exp $
13  */
14
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <limits.h>
18 #include <time.h>
19 #include <unistd.h>
20 #include <errno.h>
21 #include <syslog.h>
22 #include <signal.h>
23 #include <string.h>
24 #include <sys/klog.h>
25 #include <sys/types.h>
26 #include <sys/mount.h>
27 #include <sys/reboot.h>
28 #include <sys/stat.h>
29 #include <sys/sysmacros.h>
30 #include <sys/time.h>
31 #include <sys/utsname.h>
32 #include <sys/wait.h>
33 #include <dirent.h>
34
35 #include <epivers.h>
36 #include <bcmnvram.h>
37 #include <mtd.h>
38 #include <shutils.h>
39 #include <rc.h>
40 #include <netconf.h>
41 #include <nvparse.h>
42 #include <bcmdevs.h>
43
44 #include <wlutils.h>
45 #include <utils.h>
46 #include <cyutils.h>
47 #include <code_pattern.h>
48 #include <cy_conf.h>
49 #include <typedefs.h>
50 #include <bcmnvram.h>
51 #include <bcmutils.h>
52 #include <shutils.h>
53 #include <wlutils.h>
54 #include <cy_conf.h>
55
56 #include <revision.h>
57
58
59
60 /* States */
61 enum
62 {
63   RESTART,
64   STOP,
65   START,
66   TIMER,
67   USER,
68   IDLE,
69 };
70 static int state = START;
71 static int signalled = -1;
72
73 /* Signal handling */
74 static void
75 rc_signal (int sig)
76 {
77   if (state == IDLE)
78     {
79       if (sig == SIGHUP)
80         {
81           printf ("signalling RESTART\n");
82           signalled = RESTART;
83         }
84       else if (sig == SIGUSR2)
85         {
86           printf ("signalling START\n");
87           signalled = START;
88         }
89       else if (sig == SIGINT)
90         {
91           printf ("signalling STOP\n");
92           signalled = STOP;
93         }
94       else if (sig == SIGALRM)
95         {
96           printf ("signalling TIMER\n");
97           signalled = TIMER;
98         }
99       else if (sig == SIGUSR1)
100         {                       // Receive from WEB
101           printf ("signalling USER1\n");
102           signalled = USER;
103         }
104
105     }
106 }
107
108 /* Timer procedure */
109 int
110 do_timer (void)
111 {
112   //do_ntp();
113   return 0;
114 }
115 static int noconsole = 0;
116
117 /* Main loop */
118 void
119 main_loop (void)
120 {
121   sigset_t sigset;
122   pid_t shell_pid = 0;
123   uint boardflags;
124   //setenv("PATH", "/sbin:/bin:/usr/sbin:/usr/bin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin", 1);
125   //system("/etc/nvram/nvram");
126   /* Basic initialization */
127   if (console_init ())
128     noconsole = 1;
129
130   start_service ("sysinit");
131
132   /* Setup signal handlers */
133   signal_init ();
134   signal (SIGHUP, rc_signal);
135   signal (SIGUSR1, rc_signal);  // Start single service from WEB, by honor
136   signal (SIGUSR2, rc_signal);
137   signal (SIGINT, rc_signal);
138   signal (SIGALRM, rc_signal);
139   sigemptyset (&sigset);
140
141   /* Give user a chance to run a shell before bringing up the rest of the system */
142
143   if (!noconsole)
144     ddrun_shell (1, 0);
145
146   start_service ("nvram");
147
148   /* Restore defaults if necessary */
149 #ifdef HAVE_SKYTEL
150   nvram_set ("vlan0ports", "0 1 2 3 4 5*");
151   nvram_set ("vlan1ports", "");
152 #else
153
154   if (nvram_match ("fullswitch", "1")
155       && (nvram_invmatch ("wl_mode", "ap")
156           || nvram_match ("wan_proto", "disabled")))
157     {
158       nvram_set ("vlan0ports", "0 1 2 3 4 5*");
159       nvram_set ("vlan1ports", "");
160     }
161   else
162     {
163       if (nvram_match ("vlan0ports", "0 1 2 3 4 5*"))
164         {
165           nvram_set ("vlan0ports", "");
166           nvram_set ("vlan1ports", "");
167         }
168     }
169 #endif
170   start_service ("restore_defaults");
171
172
173   /* Add vlan */
174   boardflags = strtoul (nvram_safe_get ("boardflags"), NULL, 0);
175   nvram_set ("wanup", "0");
176
177
178   int brand = getRouterBrand ();
179 #ifndef HAVE_RB500
180   switch (brand)
181     {
182     case ROUTER_ASUS:
183     case ROUTER_MOTOROLA:
184     case ROUTER_SIEMENS:
185     case ROUTER_BELKIN_F5D7230:
186       start_service ("config_vlan");
187       break;
188     default:
189       if (check_vlan_support ())
190         {
191           start_service ("config_vlan");
192         }
193       break;
194
195     }
196 #endif
197
198   set_ip_forward ('1');
199   system ("/etc/preinit");      //sets default values for ip_conntrack
200
201 #ifndef HAVE_RB500
202   char *rwpart = "mtd4";
203   int itworked = 0;
204   if (nvram_match ("sys_enable_jffs2", "1"))
205     {
206       if (nvram_match ("sys_clean_jffs2", "1"))
207         {
208           nvram_set ("sys_clean_jffs2", "0");
209           nvram_commit ();
210           itworked = mtd_erase (rwpart);
211           eval ("insmod", "crc32");
212           eval ("insmod", "jffs2");
213
214           itworked +=
215             mount ("/dev/mtdblock/4", "/jffs", "jffs2", MS_MGC_VAL, NULL);
216           if (itworked)
217             {
218               nvram_set ("jffs_mounted", "0");
219             }
220           else
221             {
222               nvram_set ("jffs_mounted", "1");
223             }
224
225         }
226       else
227         {
228           itworked = mtd_unlock ("mtd4");
229           eval ("insmod", "crc32");
230           eval ("insmod", "jffs2");
231           itworked +=
232             mount ("/dev/mtdblock/4", "/jffs", "jffs2", MS_MGC_VAL, NULL);
233           if (itworked)
234             {
235               nvram_set ("jffs_mounted", "0");
236             }
237           else
238             {
239               nvram_set ("jffs_mounted", "1");
240             }
241
242         }
243     }
244
245 #endif
246 #ifdef HAVE_MMC
247   if (nvram_match ("mmc_enable", "1"))
248     {
249       if (!eval ("insmod", "mmc"))
250         {
251           //device detected
252           eval ("insmod", "ext2");
253           if (mount
254               ("/dev/mmc/disc0/part1", "/mmc", "ext2", MS_MGC_VAL, NULL))
255             {
256               //device not formated
257               eval ("/sbin/mke2fs", "-F", "-b", "1024",
258                     "/dev/mmc/disc0/part1");
259               mount ("/dev/mmc/disc0/part1", "/mmc", "ext2", MS_MGC_VAL,
260                      NULL);
261             }
262         }
263     }
264
265 #endif
266
267
268   start_service ("mkfiles");
269   char *hostname;
270
271   /* set hostname to wan_hostname or router_name */
272   if (strlen (nvram_safe_get ("wan_hostname")) > 0)
273     hostname = nvram_safe_get ("wan_hostname");
274   else if (strlen (nvram_safe_get ("router_name")) > 0)
275     hostname = nvram_safe_get ("router_name");
276   else
277     hostname = "dd-wrt";
278
279   sethostname (hostname, strlen (hostname));
280   stop_service ("httpd");
281   if (brand == ROUTER_SIEMENS)
282     {
283       start_service ("powerled_ctrl_1");
284     }
285 //create loginprompt
286   FILE *fp = fopen ("/tmp/loginprompt", "wb");
287
288 #ifndef HAVE_MSSID
289 #ifdef DIST
290   if (strlen (DIST) > 0)
291     fprintf (fp,
292              "DD-WRT v23 SP2 %s (c) 2006 NewMedia-NET GmbH\nRelease: "
293              BUILD_DATE " (SVN revision: %s)\n", DIST, SVN_REVISION);
294   else
295     fprintf (fp,
296              "DD-WRT v23 SP2 custom (c) 2006 NewMedia-NET GmbH\nRelease: "
297              BUILD_DATE " (SVN revision: %s)\n", SVN_REVISION);
298 #else
299   fprintf (fp,
300            "DD-WRT v23 SP2 custom (c) 2006 NewMedia-NET GmbH\nRelease: "
301            BUILD_DATE " (SVN revision: %s)\n", SVN_REVISION);
302 #endif
303 #else
304 #ifdef DIST
305   if (strlen (DIST) > 0)
306     fprintf (fp,
307              "DD-WRT v24 %s (c) 2006 NewMedia-NET GmbH\nRelease: " BUILD_DATE
308              " (SVN revision: %s)\n", DIST, SVN_REVISION);
309   else
310     fprintf (fp,
311              "DD-WRT v24 custom (c) 2006 NewMedia-NET GmbH\nRelease: "
312              BUILD_DATE " (SVN revision: %s)\n", SVN_REVISION);
313 #else
314   fprintf (fp,
315            "DD-WRT v24 custom (c) 2006 NewMedia-NET GmbH\nRelease: "
316            BUILD_DATE " (SVN revision: %s)\n", SVN_REVISION);
317 #endif
318 #endif
319
320
321   fclose (fp);
322
323   /* Loop forever */
324   for (;;)
325     {
326       switch (state)
327         {
328         case USER:              // Restart single service from WEB of tftpd, by honor
329           cprintf ("USER1\n");
330           start_single_service ();
331 #ifdef HAVE_CHILLI
332           start_service ("chilli");
333 #endif
334
335           state = IDLE;
336           break;
337         case RESTART:
338           start_service ("overclocking");
339           cprintf ("RESET NVRAM VARS\n");
340           nvram_set ("wl0_lazy_wds", nvram_safe_get ("wl_lazy_wds"));
341 #ifndef HAVE_MSSID
342           nvram_set ("wl0_akm", nvram_safe_get ("wl_akm"));
343           if (nvram_match ("wl_wep", "tkip"))
344             {
345               nvram_set ("wl_crypto", "tkip");
346             }
347           else if (nvram_match ("wl_wep", "aes"))
348             {
349               nvram_set ("wl_crypto", "aes");
350             }
351           else if (nvram_match ("wl_wep", "tkip+aes"))
352             {
353               nvram_set ("wl_crypto", "tkip+aes");
354             }
355           if (nvram_match ("wl_wep", "restricted"))
356             nvram_set ("wl_wep", "enabled");    // the nas need this value, the "restricted" is no longer need. (20040624 by honor)
357 #endif
358
359           cprintf ("RESTART\n");
360 #ifndef HAVE_MSSID
361
362           if (nvram_match ("wl_akm", "wpa") ||
363               nvram_match ("wl_akm", "psk") ||
364               nvram_match ("wl_akm", "radius") ||
365               nvram_match ("wl_akm", "psk2") ||
366               nvram_match ("wl_akm", "wpa2") ||
367               nvram_match ("wl_akm", "wpa wpa2") ||
368               nvram_match ("wl_akm", "psk psk2"))
369             {
370               eval ("wlconf", nvram_safe_get ("wl0_ifname"), "down");
371               sleep (4);
372               start_service ("wlconf");
373
374             }
375 #endif
376           /* Fall through */
377         case STOP:
378           cprintf ("STOP\n");
379           system ("killall -9 udhcpc");
380           setenv ("PATH",
381                   "/sbin:/bin:/usr/sbin:/usr/bin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin",
382                   1);
383           setenv ("LD_LIBRARY_PATH",
384                   "/lib:/usr/lib:/jffs/lib:/jffs/usr/lib:/mmc/lib:/mmc/usr/lib:",
385                   1);
386           cprintf ("STOP WAN\n");
387           stop_service ("wan");
388           cprintf ("STOP SERVICES\n");
389           stop_services ();
390           cprintf ("STOP LAN\n");
391           stop_service ("lan");
392 #ifndef HAVE_RB500
393           cprintf ("STOP RESETBUTTON\n");
394           if ((brand & 0x000f) != 0x000f)
395 /*       
396                   if ((brand == ROUTER_WRT54G) ||
397               (brand == ROUTER_WRT54G1X) ||
398               (brand == ROUTER_WRTSL54GS) ||
399               (brand == ROUTER_LINKSYS_WRT55AG) ||
400               (brand == ROUTER_ASUS) ||
401               (brand == ROUTER_BUFFALO_WBR54G) ||
402               (brand == ROUTER_BUFFALO_WHRG54S) ||
403               (brand == ROUTER_MOTOROLA_V1) ||
404               (brand == ROUTER_BOARD_500) ||
405               (brand == ROUTER_BUFFALO_WZRRSG54) ||
406               (brand == ROUTER_BUFFALO_WBR2G54S))  */
407             {
408               stop_service ("resetbutton");
409             }
410 #endif
411           start_service ("create_rc_shutdown");
412           system ("/tmp/.rc_shutdown");
413           if (state == STOP)
414             {
415               state = IDLE;
416               break;
417             }
418           /* Fall through */
419         case START:
420           nvram_set ("wl0_lazy_wds", nvram_safe_get ("wl_lazy_wds"));
421 #ifndef HAVE_MSSID
422           nvram_set ("wl0_akm", nvram_safe_get ("wl_akm"));
423 #endif
424           cprintf ("START\n");
425           setenv ("PATH",
426                   "/sbin:/bin:/usr/sbin:/usr/bin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin",
427                   1);
428           setenv ("LD_LIBRARY_PATH",
429                   "/lib:/usr/lib:/jffs/lib:/jffs/usr/lib:/mmc/lib:/mmc/usr/lib:",
430                   1);
431           start_service ("ipv6");
432 #ifndef HAVE_RB500
433           if ((brand & 0x000f) != 0x000f)
434 /*
435           if ((brand == ROUTER_WRT54G) ||
436               (brand == ROUTER_WRT54G1X) ||
437               (brand == ROUTER_WRTSL54GS) ||
438               (brand == ROUTER_LINKSYS_WRT55AG) ||
439               (brand == ROUTER_ASUS) ||
440               (brand == ROUTER_BUFFALO_WBR54G) ||
441               (brand == ROUTER_BUFFALO_WHRG54S) ||
442               (brand == ROUTER_MOTOROLA_V1) ||
443               (brand == ROUTER_BOARD_500) ||
444               (brand == ROUTER_BUFFALO_WZRRSG54) ||
445               (brand == ROUTER_BUFFALO_WBR2G54S))  */
446             {
447               start_service ("resetbutton");
448             }
449 #endif
450           start_service ("setup_vlans");
451           start_service ("lan");
452           cprintf ("start services\n");
453           start_services ();
454           cprintf ("start wan boot\n");
455           start_service ("wan_boot");
456           cprintf ("diaG STOP LED\n");
457           diag_led (DIAG, STOP_LED);
458           cprintf ("set led release wan control\n");
459           SET_LED (RELEASE_WAN_CONTROL);
460           cprintf ("ifconfig wl up\n");
461           if (nvram_match ("wl_mode", "sta")
462               || nvram_match ("wl_mode", "wet")
463               || nvram_match ("wl_mode", "apsta"))
464             {
465               //fix for client mode
466               if (wl_probe ("eth2"))
467                 eval ("/sbin/ifconfig", "eth1", "up");
468               else
469                 eval ("/sbin/ifconfig", "eth2", "up");
470             }
471           cprintf ("start nas\n");
472           start_service ("nas_wan");
473           cprintf ("create rc file\n");
474           start_service ("create_rc_startup");
475           chmod ("/tmp/.rc_startup", 0700);
476           system ("/tmp/.rc_startup");
477           system ("/etc/init.d/rcS");   // start openwrt startup script (siPath impl)
478           cprintf ("start modules\n");
479           start_service ("modules");
480 #ifdef HAVE_CHILLI
481           start_service ("chilli");
482 #endif
483           cprintf ("start syslog\n");
484           startstop ("syslog");
485
486           system ("/etc/postinit");
487
488           diag_led (DIAG, STOP_LED);
489           /* Fall through */
490         case TIMER:
491           cprintf ("TIMER\n");
492           do_timer ();
493           /* Fall through */
494         case IDLE:
495           cprintf ("IDLE\n");
496           state = IDLE;
497           /* Wait for user input or state change */
498           while (signalled == -1)
499             {
500               if (!noconsole && (!shell_pid || kill (shell_pid, 0) != 0))
501                 shell_pid = ddrun_shell (0, 1);
502               else
503                 sigsuspend (&sigset);
504
505             }
506           state = signalled;
507           signalled = -1;
508           break;
509         default:
510           cprintf ("UNKNOWN\n");
511           return;
512         }
513     }
514
515 }
516
517
518
519 int
520 main (int argc, char **argv)
521 {
522   char *base = strrchr (argv[0], '/');
523
524   base = base ? base + 1 : argv[0];
525
526   /* init */
527   if (strstr (base, "init"))
528     {
529       main_loop ();
530       return 0;
531     }
532
533   /* Set TZ for all rc programs */
534   setenv ("TZ", nvram_safe_get ("time_zone"), 1);
535
536   if (strstr (base, "startservice"))
537     {
538       if (argc < 2)
539         {
540           puts ("try to be professional\n");
541           return 0;
542         }
543       return start_service (argv[1]);
544     }
545   if (strstr (base, "stopservice"))
546     {
547       if (argc < 2)
548         {
549           puts ("try to be professional\n");
550           return 0;
551         }
552       return stop_service (argv[1]);
553     }
554
555   /* ppp */
556   if (strstr (base, "ip-up"))
557     return start_main ("ipup", argc, argv);
558   else if (strstr (base, "ip-down"))
559     return start_main ("ipdown", argc, argv);
560 //  else if (strstr(base, "set-pppoepid")) //tallest 1219
561 //     return start_main("set_pppoepid_to_nv",argc, argv);
562   else if (strstr (base, "disconnected_pppoe")) //by tallest 0407
563     return start_main ("disconnected_pppoe", argc, argv);
564 //  else if (strstr(base, "ppp_event"))
565 //    return start_main("pppevent_main",argc, argv);
566
567   /* udhcpc [ deconfig bound renew ] */
568   else if (strstr (base, "udhcpc"))
569     return start_main ("udhcpc", argc, argv);
570 #ifdef HAVE_PPTP
571   /* poptop [ stop start restart ]  */
572   else if (strstr (base, "poptop"))
573     return pptpd_main (argc, argv);
574 #endif
575 #ifndef HAVE_RB500
576   /* erase [device] */
577   else if (strstr (base, "erase"))
578     {
579       int brand = getRouterBrand ();
580       if (brand == ROUTER_MOTOROLA)
581         {
582           if (argv[1] && strcmp (argv[1], "nvram"))
583             {
584               fprintf (stderr,
585                        "Sorry, erasing nvram will get the motorola unit unuseable\n");
586               return 0;
587             }
588         }
589       else
590         {
591           if (argv[1])
592             return mtd_erase (argv[1]);
593           else
594             {
595               fprintf (stderr, "usage: erase [device]\n");
596               return EINVAL;
597             }
598         }
599     }
600
601   /* write [path] [device] */
602   else if (strstr (base, "write"))
603     {
604       if (argc >= 3)
605         return mtd_write (argv[1], argv[2]);
606       else
607         {
608           fprintf (stderr, "usage: write [path] [device]\n");
609           return EINVAL;
610         }
611     }
612 #endif
613   /* hotplug [event] */
614   else if (strstr (base, "hotplug"))
615     {
616       if (argc >= 2)
617         {
618           cprintf ("hotplug %s\n", argv[1]);
619           if (!strcmp (argv[1], "net"))
620             return start_service ("hotplug_net");
621 #ifdef HAVE_MEDIASERVER
622           if (!strcmp (argv[1], "usb"))
623             return start_service ("hotplug_usb");
624 #endif
625 #ifdef HAVE_XSCALE
626           if (!strcmp (argv[1], "firmware"))
627             return eval ("/etc/upload", argv[1]);
628 #endif
629         }
630       else
631         {
632           fprintf (stderr, "usage: hotplug [event]\n");
633           return EINVAL;
634         }
635     }
636   /* rc [stop|start|restart ] */
637   else if (strstr (base, "rc"))
638     {
639       if (argv[1])
640         {
641           if (strncmp (argv[1], "start", 5) == 0)
642             return kill (1, SIGUSR2);
643           else if (strncmp (argv[1], "stop", 4) == 0)
644             return kill (1, SIGINT);
645           else if (strncmp (argv[1], "restart", 7) == 0)
646             return kill (1, SIGHUP);
647         }
648       else
649         {
650           fprintf (stderr, "usage: rc [start|stop|restart]\n");
651           return EINVAL;
652         }
653     }
654
655   //////////////////////////////////////////////////////
656   //
657   else if (strstr (base, "filtersync"))
658     return start_service ("filtersync");
659   /* filter [add|del] number */
660   else if (strstr (base, "filter"))
661     {
662       if (argv[1] && argv[2])
663         {
664           int num = 0;
665           if ((num = atoi (argv[2])) > 0)
666             {
667               if (strcmp (argv[1], "add") == 0)
668                 return start_servicei ("filter_add", num);
669               else if (strcmp (argv[1], "del") == 0)
670                 return start_servicei ("filter_del", num);
671             }
672         }
673       else
674         {
675           fprintf (stderr, "usage: filter [add|del] number\n");
676           return EINVAL;
677         }
678     }
679   else if (strstr (base, "redial"))
680     return redial_main (argc, argv);
681
682   else if (strstr (base, "resetbutton"))
683     {
684 #ifndef HAVE_RB500
685
686       int brand = getRouterBrand ();
687       if ((brand & 0x000f) != 0x000f)
688         {
689           return resetbutton_main (argc, argv);
690         }
691       else
692         {
693           fprintf (stderr,
694                    "Your router model doesnt support the resetbutton!\n");
695           return 0;
696         }
697 /*             
698       int brand = getRouterBrand ();
699 //      fprintf(stderr,"brand = %d\n",brand);
700       switch (brand)
701         {
702         case ROUTER_WRT54G:
703         case ROUTER_WRT54G1X:
704         case ROUTER_WRTSL54GS:
705         case ROUTER_LINKSYS_WRT55AG:
706         case ROUTER_ASUS:
707         case ROUTER_BUFFALO_WBR54G:
708         case ROUTER_BUFFALO_WHRG54S:
709         case ROUTER_MOTOROLA_V1:
710         case ROUTER_BUFFALO_WBR2G54S:
711         case ROUTER_BUFFALO_WZRRSG54:
712           return resetbutton_main (argc, argv);
713         default:
714           fprintf (stderr,
715                    "Your router model doesnt support the resetbutton!\n");
716           return 0;
717         }
718 */
719 #endif
720     }
721 #ifndef HAVE_MADWIFI
722   else if (strstr (base, "wland"))
723     return wland_main (argc, argv);
724 #endif
725 //  else if (strstr (base, "write_boot"))
726 //    return write_boot ("/tmp/boot.bin", "pmon");
727
728 #ifdef DEBUG_IPTABLE
729   else if (strstr (base, "iptable_range"))
730     return range_main (argc, argv);
731   else if (strstr (base, "iptable_rule"))
732     return rule_main (argc, argv);
733 #endif
734
735
736
737   else if (strstr (base, "hb_connect"))
738     return start_main ("hb_connect", argc, argv);
739   else if (strstr (base, "hb_disconnect"))
740     return start_main ("hb_disconnect", argc, argv);
741
742   else if (strstr (base, "gpio"))
743     return start_main ("gpio", argc, argv);
744   else if (strstr (base, "listen"))
745     return listen_main (argc, argv);
746   else if (strstr (base, "check_ps"))
747     return check_ps_main (argc, argv);
748   else if (strstr (base, "ddns_success"))
749     return start_main ("ddns_success", argc, argv);
750 //      else if (strstr(base, "eou_status"))
751 //                return eou_status_main();
752   else if (strstr (base, "process_monitor"))
753     return process_monitor_main ();
754   else if (strstr (base, "radio_timer"))
755     return radio_timer_main ();
756   else if (strstr (base, "restart_dns"))
757     {
758       stop_service ("dnsmasq");
759       stop_service ("udhcpd");
760       start_service ("udhcpd");
761       start_service ("dnsmasq");
762     }
763   else if (strstr (base, "site_survey"))
764     return start_main ("site_survey", argc, argv);
765   else if (strstr (base, "setpasswd"))
766     start_service ("mkfiles");
767 #ifdef HAVE_WOL
768   else if (strstr (base, "wol"))
769     wol_main ();
770 #endif
771   else if (strstr (base, "sendudp"))
772     return sendudp_main (argc, argv);
773   else if (strstr (base, "check_ses_led"))
774     return check_ses_led_main (argc, argv);
775 #ifdef HAVE_MICRO
776   else if (strstr (base, "brctl"))
777     return start_main ("brctl", argc, argv);
778 #endif
779 #ifdef HAVE_MAGICBOX
780   else if (strstr (base, "watchdog"))
781     return watchdog_main (argc, argv);
782 #endif
783 //  else if (strstr (base, "reboot"))
784 //    shutdown_system();
785
786 }
Note: See TracBrowser for help on using the browser.