Merge branch 'tomato-ND-usbmod-base' into tomato-ND-USBmod
[tomato.git] / release / src / router / rc / rc.h
blob97633e8dd21ed55a1139a812da3958a380697ccb
1 /*
2 * Router rc control script
4 * Copyright 2005, Broadcom Corporation
5 * All Rights Reserved.
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.
12 * $Id: rc.h,v 1.39 2005/03/29 02:00:06 honor Exp $
15 #ifndef __RC_H__
16 #define __RC_H__
18 #define _GNU_SOURCE
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <unistd.h>
23 #include <ctype.h> // !!TB
24 #include <string.h>
25 #include <signal.h>
26 #include <syslog.h>
27 #include <netinet/in.h>
28 #include <fcntl.h>
29 #include <net/if.h>
31 #include <bcmnvram.h>
32 #include <utils.h>
33 #include <shutils.h>
34 #include <shared.h>
36 #include <tomato_profile.h>
37 #include <tomato_config.h>
39 #define USE_MINIUPNPD
41 // #define DEBUG_IPTFILE
42 // #define DEBUG_RCTEST
43 // #define DEBUG_NOISY
45 #ifdef DEBUG_NOISY
46 #define _dprintf(args...) cprintf(args)
47 #define TRACE_PT(args...) do { cprintf("[%d:%s +%ld] ", getpid(), __FUNCTION__, get_uptime()); cprintf(args); } while(0)
48 #else
49 #define _dprintf(args...) do { } while(0)
50 #define TRACE_PT(args...) do { } while(0)
51 #endif
53 #define MOUNT_ROOT "/tmp/mnt"
54 #define PROC_SCSI_ROOT "/proc/scsi"
55 #define USB_STORAGE "usb-storage"
57 #define BOOT 0
58 #define REDIAL 1
59 #define CONNECTING 2
61 #define PPPOE0 0
62 #define PPPOE1 1
64 #define GOT_IP 0x01
65 #define RELEASE_IP 0x02
66 #define GET_IP_ERROR 0x03
67 #define RELEASE_WAN_CONTROL 0x04
68 #define USB_DATA_ACCESS 0x05 //For WRTSL54GS
69 #define USB_CONNECT 0x06 //For WRTSL54GS
70 #define USB_DISCONNECT 0x07 //For WRTSL54GS
73 // ?
74 #define SET_LED(val) \
75 { \
76 int filep; \
77 if(check_hw_type() == BCM4704_BCM5325F_CHIP) { \
78 if ((filep = open("/dev/ctmisc", O_RDWR,0))) \
79 { \
80 ioctl(filep, val, 0); \
81 close(filep); \
82 } \
83 } \
87 #define SET_LED(val) do { } while(0)
90 typedef enum { IPT_TABLE_NAT, IPT_TABLE_FILTER, IPT_TABLE_MANGLE } ipt_table_t;
93 // init.c
94 extern void handle_reap(int sig);
95 extern int init_main(int argc, char *argv[]);
96 extern int reboothalt_main(int argc, char *argv[]);
98 // interface.c
99 extern int ifconfig(const char *ifname, int flags, const char *addr, const char *netmask);
100 extern int route_add(char *name, int metric, char *dst, char *gateway, char *genmask);
101 extern int route_del(char *name, int metric, char *dst, char *gateway, char *genmask);
102 extern void config_loopback(void);
103 extern int start_vlan(void);
104 extern int stop_vlan(void);
105 extern int config_vlan(void);
106 extern void config_loopback(void);
108 // listen.c
109 extern int listen_main(int argc, char **argv);
111 // ppp.c
112 extern int ipup_main(int argc, char **argv);
113 extern int ipdown_main(int argc, char **argv);
114 extern int pppevent_main(int argc, char **argv);
115 extern int set_pppoepid_main(int argc, char **argv); // by tallest 1219
116 extern int pppoe_down_main(int argc, char **argv); // by tallest 0407
118 // rc.c
119 extern void restore_defaults(void);
121 // redial.c
122 extern int start_redial(void);
123 extern int stop_redial(void);
124 extern int redial_main(int argc, char **argv);
126 // wan.c
127 extern int start_pptp(int mode);
128 extern int stop_pptp(void);
129 extern void start_pppoe(int);
130 extern void stop_pppoe(void);
131 extern void stop_singe_pppoe(int num);
132 extern void start_l2tp(void);
133 extern void stop_l2tp(void);
134 extern void start_wan(int mode);
135 extern void start_wan_done(char *ifname);
136 extern void stop_wan(void);
137 extern void force_to_dial(void);
139 // network.c
140 extern void set_host_domain_name(void);
141 extern void start_lan(void);
142 extern void stop_lan(void);
143 extern void hotplug_net(void);
144 extern void do_static_routes(int add);
145 extern int radio_main(int argc, char *argv[]);
146 extern int wldist_main(int argc, char *argv[]);
148 // dhcpc.c
149 extern int dhcpc_event_main(int argc, char **argv);
150 extern int dhcpc_release_main(int argc, char **argv);
151 extern int dhcpc_renew_main(int argc, char **argv);
152 extern void start_dhcpc(void);
153 extern void stop_dhcpc(void);
155 // services.c
156 extern void start_cron(void);
157 extern void stop_cron(void);
158 extern void start_zebra(void);
159 extern void stop_zebra(void);
160 extern void start_upnp(void);
161 extern void stop_upnp(void);
162 extern void start_syslog(void);
163 extern void stop_syslog(void);
164 extern void start_igmp_proxy(void);
165 extern void stop_igmp_proxy(void);
166 extern void start_httpd(void);
167 extern void stop_httpd(void);
168 extern void clear_resolv(void);
169 extern void dns_to_resolv(void);
170 extern void start_dnsmasq(void);
171 extern void stop_dnsmasq(void);
172 extern void set_tz(void);
173 extern void start_ntpc(void);
174 extern void stop_ntpc(void);
175 extern void check_services(void);
176 extern void exec_service(void);
177 extern int service_main(int argc, char *argv[]);
178 extern void start_service(const char *name);
179 extern void stop_service(const char *name);
180 extern void restart_service(const char *name);
181 extern void start_services(void);
182 extern void stop_services(void);
183 // !!TB - USB and NAS
184 #ifdef TCONFIG_USB
185 extern int mkdir_if_none(char *dir);
186 extern void restart_nas_services(int start);
187 #else
188 #define mkdir_if_none(args...) (0)
189 #define restart_nas_services(args...) do { } while(0)
190 #endif
192 // !!TB - USB Support
193 // usb.c
194 #ifdef TCONFIG_USB
195 extern void start_usb(void);
196 extern void stop_usb(void);
197 extern void hotplug_usb(void);
198 extern void remove_storage_main(void);
199 #else
200 #define start_usb(args...) do { } while(0)
201 #define stop_usb(args...) do { } while(0)
202 #define hotplug_usb(args...) do { } while(0)
203 #define remove_storage_main(args...) do { } while(0)
204 #endif
206 // wnas.c
207 extern void start_nas(void);
208 extern void stop_nas(void);
209 extern void notify_nas(const char *ifname);
211 // firewall.c
212 extern char wanface[IFNAMSIZ];
213 extern char lanface[IFNAMSIZ];
214 extern char wanaddr[];
215 extern char lan_cclass[];
216 extern const char *chain_in_accept;
217 extern const char *chain_out_drop;
218 extern const char *chain_out_accept;
219 extern const char *chain_out_reject;
220 extern char **layer7_in;
222 extern void enable_ip_forward(void);
223 extern void ipt_write(const char *format, ...);
224 extern int ipt_ipp2p(const char *v, char *opt);
225 extern int ipt_layer7(const char *v, char *opt);
226 extern void ipt_layer7_inbound(void);
227 extern int start_firewall(void);
228 extern int stop_firewall(void);
229 #ifdef DEBUG_IPTFILE
230 extern void create_test_iptfile(void);
231 #endif
233 // forward.c
234 extern void ipt_forward(ipt_table_t table);
235 extern void ipt_triggered(ipt_table_t table);
237 // restrict.c
238 extern int rcheck_main(int argc, char *argv[]);
239 extern void ipt_restrictions(void);
240 extern void sched_restrictions(void);
242 // qos.c
243 extern void ipt_qos(void);
244 extern void start_qos(void);
245 extern void stop_qos(void);
247 // cifs.c
248 #ifdef TCONFIG_CIFS
249 extern void start_cifs(void);
250 extern void stop_cifs(void);
251 extern int mount_cifs_main(int argc, char *argv[]);
252 #else
253 static inline void start_cifs(void) { };
254 static inline void stop_cifs(void) { };
255 #endif
257 // jffs2.c
258 #ifdef TCONFIG_JFFS2
259 extern void init_jffs2(void);
260 extern void start_jffs2(void);
261 extern void stop_jffs2(void);
262 #else
263 static inline void init_jffs2(void) { };
264 static inline void start_jffs2(void) { };
265 static inline void stop_jffs2(void) { };
266 #endif
268 // ddns.c
269 #ifdef TCONFIG_DDNS
270 extern void start_ddns(void);
271 extern void stop_ddns(void);
272 extern int ddns_update_main(int argc, char **argv);
273 #else
274 static inline void start_ddns(void) { };
275 static inline void stop_ddns(void) { };
276 #endif
278 // misc.c
279 extern void usage_exit(const char *cmd, const char *help) __attribute__ ((noreturn));
280 extern int modprobe(const char *mod);
281 extern int modprobe_r(const char *mod);
282 #define xstart(args...) _xstart(args, NULL)
283 extern int _xstart(const char *cmd, ...);
284 extern void run_nvscript(const char *nv, const char *arg1, int wtime);
285 extern void run_userfile (char *folder, char *extension, const char *arg1, int wtime);
286 extern void setup_conntrack(void);
287 extern void set_mac(const char *ifname, const char *nvname, int plus);
288 extern const char *default_wanif(void);
289 // extern const char *default_wlif(void);
290 #define vstrsep(buf, sep, args...) _vstrsep(buf, sep, args, NULL)
291 extern int _vstrsep(char *buf, const char *sep, ...);
292 extern void simple_unlock(const char *name);
293 extern void simple_lock(const char *name);
294 extern void killall_tk(const char *name);
295 long fappend(FILE *out, const char *fname);
297 // telssh.c
298 extern void create_passwd(void);
299 extern void start_sshd(void);
300 extern void stop_sshd(void);
301 extern void start_telnetd(void);
302 extern void stop_telnetd(void);
304 // mtd.c
305 extern int mtd_getinfo(const char *mtdname, int *part, int *size);
306 extern int mtd_erase(const char *mtdname);
307 extern int mtd_unlock(const char *mtdname);
308 extern int mtd_write_main(int argc, char *argv[]);
309 extern int mtd_unlock_erase_main(int argc, char *argv[]);
311 // buttons.c
312 extern int buttons_main(int argc, char *argv[]);
314 // led.c
315 extern int led_main(int argc, char *argv[]);
317 // gpio.c
318 extern int gpio_main(int argc, char *argv[]);
320 // sched.c
321 extern int sched_main(int argc, char *argv[]);
322 extern void start_sched(void);
323 extern void stop_sched(void);
325 //nvram
326 extern int nvram_file2nvram(const char *name, const char *filename);
327 extern int nvram_nvram2file(const char *name, const char *filename);
329 #ifdef TOMATO_SL
330 // usb.c
331 extern void hotplug_usb(void);
332 extern int usbevent_main(int argc, char *argv[]);
333 extern void start_usbevent(void);
334 extern void stop_usbevent(void);
335 extern int usbrescan_main(int argc, char *argv[]);
336 extern int hotdiskadd_main(int argc, char *argv[]);
337 extern int hotdiskremove_main(int argc, char *argv[]);
338 extern int hotdiskerror_main(int argc, char *argv[]);
339 extern int umountx_main(int argc, char *argv[]);
341 void start_test_1(void);
342 void stop_test_1(void);
344 // samba.c
345 extern void start_smbd(void);
346 extern void stop_smbd(void);
347 #endif
350 #endif