2 * Router rc control script
4 * Copyright 2005, Broadcom Corporation
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 $
23 #include <ctype.h> // !!TB
27 #include <netinet/in.h>
36 #include <tomato_profile.h>
37 #include <tomato_config.h>
41 // #define DEBUG_IPTFILE
42 // #define DEBUG_RCTEST
43 // #define 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)
49 #define _dprintf(args...) do { } while(0)
50 #define TRACE_PT(args...) do { } while(0)
53 #define MOUNT_ROOT "/tmp/mnt"
54 #define DEV_DISCS_ROOT "/dev/discs"
55 #define PROC_SCSI_ROOT "/proc/scsi"
56 #define USB_STORAGE "usb-storage"
66 #define RELEASE_IP 0x02
67 #define GET_IP_ERROR 0x03
68 #define RELEASE_WAN_CONTROL 0x04
69 #define USB_DATA_ACCESS 0x05 //For WRTSL54GS
70 #define USB_CONNECT 0x06 //For WRTSL54GS
71 #define USB_DISCONNECT 0x07 //For WRTSL54GS
75 #define SET_LED(val) \
78 if(check_hw_type() == BCM4704_BCM5325F_CHIP) { \
79 if ((filep = open("/dev/ctmisc", O_RDWR,0))) \
81 ioctl(filep, val, 0); \
88 #define SET_LED(val) do { } while(0)
91 typedef enum { IPT_TABLE_NAT
, IPT_TABLE_FILTER
, IPT_TABLE_MANGLE
} ipt_table_t
;
95 extern void handle_reap(int sig
);
96 extern int init_main(int argc
, char *argv
[]);
97 extern int reboothalt_main(int argc
, char *argv
[]);
100 extern int ifconfig(const char *ifname
, int flags
, const char *addr
, const char *netmask
);
101 extern int route_add(char *name
, int metric
, char *dst
, char *gateway
, char *genmask
);
102 extern int route_del(char *name
, int metric
, char *dst
, char *gateway
, char *genmask
);
103 extern void config_loopback(void);
104 extern int start_vlan(void);
105 extern int stop_vlan(void);
106 extern int config_vlan(void);
107 extern void config_loopback(void);
110 extern int listen_main(int argc
, char **argv
);
113 extern int ipup_main(int argc
, char **argv
);
114 extern int ipdown_main(int argc
, char **argv
);
115 extern int pppevent_main(int argc
, char **argv
);
116 extern int set_pppoepid_main(int argc
, char **argv
); // by tallest 1219
117 extern int pppoe_down_main(int argc
, char **argv
); // by tallest 0407
120 extern void restore_defaults(void);
123 extern int start_redial(void);
124 extern int stop_redial(void);
125 extern int redial_main(int argc
, char **argv
);
128 extern int start_pptp(int mode
);
129 extern int stop_pptp(void);
130 extern void start_pppoe(int);
131 extern void stop_pppoe(void);
132 extern void stop_singe_pppoe(int num
);
133 extern void start_l2tp(void);
134 extern void stop_l2tp(void);
135 extern void start_wan(int mode
);
136 extern void start_wan_done(char *ifname
);
137 extern void stop_wan(void);
138 extern void force_to_dial(void);
141 extern void set_host_domain_name(void);
142 extern void start_lan(void);
143 extern void stop_lan(void);
144 extern void hotplug_net(void);
145 extern void do_static_routes(int add
);
146 extern int radio_main(int argc
, char *argv
[]);
147 extern int wldist_main(int argc
, char *argv
[]);
150 extern int dhcpc_event_main(int argc
, char **argv
);
151 extern int dhcpc_release_main(int argc
, char **argv
);
152 extern int dhcpc_renew_main(int argc
, char **argv
);
153 extern void start_dhcpc(void);
154 extern void stop_dhcpc(void);
157 extern void start_cron(void);
158 extern void stop_cron(void);
159 extern void start_zebra(void);
160 extern void stop_zebra(void);
161 extern void start_upnp(void);
162 extern void stop_upnp(void);
163 extern void start_syslog(void);
164 extern void stop_syslog(void);
165 extern void start_igmp_proxy(void);
166 extern void stop_igmp_proxy(void);
167 extern void start_httpd(void);
168 extern void stop_httpd(void);
169 extern void clear_resolv(void);
170 extern void dns_to_resolv(void);
171 extern void start_dnsmasq(void);
172 extern void stop_dnsmasq(void);
173 extern void set_tz(void);
174 extern void start_ntpc(void);
175 extern void stop_ntpc(void);
176 extern void check_services(void);
177 extern void exec_service(void);
178 extern int service_main(int argc
, char *argv
[]);
179 extern void start_service(const char *name
);
180 extern void stop_service(const char *name
);
181 extern void restart_service(const char *name
);
182 extern void start_services(void);
183 extern void stop_services(void);
184 // !!TB - USB and NAS
185 extern int mkdir_if_none(char *dir
);
186 extern void restart_nas_services(int start
);
188 // !!TB - USB Support
190 extern void start_usb(void);
191 extern void stop_usb(void);
192 extern void hotplug_usb(void);
193 extern void probe_usb_mass(char *product
, int connected_only
);
194 extern void hotplug_usb_mass(char *product
);
195 extern void remove_storage_main(void);
198 extern void start_nas(void);
199 extern void stop_nas(void);
200 extern void notify_nas(const char *ifname
);
203 extern char wanface
[IFNAMSIZ
];
204 extern char lanface
[IFNAMSIZ
];
205 extern char wanaddr
[];
206 extern char lan_cclass
[];
207 extern const char *chain_in_accept
;
208 extern const char *chain_out_drop
;
209 extern const char *chain_out_accept
;
210 extern const char *chain_out_reject
;
211 extern char **layer7_in
;
213 extern void enable_ip_forward(void);
214 extern void ipt_write(const char *format
, ...);
215 extern int ipt_ipp2p(const char *v
, char *opt
);
216 extern int ipt_layer7(const char *v
, char *opt
);
217 extern void ipt_layer7_inbound(void);
218 extern int start_firewall(void);
219 extern int stop_firewall(void);
221 extern void create_test_iptfile(void);
225 extern void ipt_forward(ipt_table_t table
);
226 extern void ipt_triggered(ipt_table_t table
);
229 extern int rcheck_main(int argc
, char *argv
[]);
230 extern void ipt_restrictions(void);
231 extern void sched_restrictions(void);
234 extern void ipt_qos(void);
235 extern void start_qos(void);
236 extern void stop_qos(void);
240 extern void start_cifs(void);
241 extern void stop_cifs(void);
242 extern int mount_cifs_main(int argc
, char *argv
[]);
244 static inline void start_cifs(void) { };
245 static inline void stop_cifs(void) { };
250 extern void init_jffs2(void);
251 extern void start_jffs2(void);
252 extern void stop_jffs2(void);
254 static inline void init_jffs2(void) { };
255 static inline void start_jffs2(void) { };
256 static inline void stop_jffs2(void) { };
261 extern void start_ddns(void);
262 extern void stop_ddns(void);
263 extern int ddns_update_main(int argc
, char **argv
);
265 static inline void start_ddns(void) { };
266 static inline void stop_ddns(void) { };
270 extern void usage_exit(const char *cmd
, const char *help
) __attribute__ ((noreturn
));
271 extern int modprobe(const char *mod
);
272 extern int modprobe_r(const char *mod
);
273 #define xstart(args...) _xstart(args, NULL)
274 extern int _xstart(const char *cmd
, ...);
275 extern void run_nvscript(const char *nv
, const char *arg1
, int wtime
);
276 extern void setup_conntrack(void);
277 extern void set_mac(const char *ifname
, const char *nvname
, int plus
);
278 extern const char *default_wanif(void);
279 // extern const char *default_wlif(void);
280 #define vstrsep(buf, sep, args...) _vstrsep(buf, sep, args, NULL)
281 extern int _vstrsep(char *buf
, const char *sep
, ...);
282 extern void simple_unlock(const char *name
);
283 extern void simple_lock(const char *name
);
284 extern void killall_tk(const char *name
);
285 long fappend(FILE *out
, const char *fname
);
288 extern void create_passwd(void);
289 extern void start_sshd(void);
290 extern void stop_sshd(void);
291 extern void start_telnetd(void);
292 extern void stop_telnetd(void);
295 extern int mtd_getinfo(const char *mtdname
, int *part
, int *size
);
296 extern int mtd_erase(const char *mtdname
);
297 extern int mtd_unlock(const char *mtdname
);
298 extern int mtd_write_main(int argc
, char *argv
[]);
299 extern int mtd_unlock_erase_main(int argc
, char *argv
[]);
302 extern int buttons_main(int argc
, char *argv
[]);
305 extern int led_main(int argc
, char *argv
[]);
308 extern int gpio_main(int argc
, char *argv
[]);
311 extern int sched_main(int argc
, char *argv
[]);
312 extern void start_sched(void);
313 extern void stop_sched(void);
318 extern void hotplug_usb(void);
319 extern int usbevent_main(int argc
, char *argv
[]);
320 extern void start_usbevent(void);
321 extern void stop_usbevent(void);
322 extern int usbrescan_main(int argc
, char *argv
[]);
323 extern int hotdiskadd_main(int argc
, char *argv
[]);
324 extern int hotdiskremove_main(int argc
, char *argv
[]);
325 extern int hotdiskerror_main(int argc
, char *argv
[]);
326 extern int umountx_main(int argc
, char *argv
[]);
328 void start_test_1(void);
329 void stop_test_1(void);
332 extern void start_smbd(void);
333 extern void stop_smbd(void);