Merge branch 'tomato-K26-usbmod-base' into tomato-ND-USBmod
[tomato.git] / release / src / router / shared / shared.h
bloba202101cefb5ceedc2da60b00d61906ce113bffa
1 #ifndef __SHARED_H__
2 #define __SHARED_H__
4 #include <tomato_profile.h>
5 #include <tomato_config.h>
7 #include <netinet/in.h>
8 #include <stdint.h>
9 #include <errno.h>
11 #ifdef TCONFIG_USB
12 #include <mntent.h> // !!TB
13 #endif
15 #define Y2K 946684800UL // seconds since 1970
17 #define ASIZE(array) (sizeof(array) / sizeof(array[0]))
19 #ifdef LINUX26
20 #define MTD_DEV(arg) "/dev/mtd"#arg
21 #define MTD_BLKDEV(arg) "/dev/mtdblock"#arg
22 #define DEV_GPIO(arg) "/dev/gpio"#arg
23 #else
24 #define MTD_DEV(arg) "/dev/mtd/"#arg
25 #define MTD_BLKDEV(arg) "/dev/mtdblock/"#arg
26 #define DEV_GPIO(arg) "/dev/gpio/"#arg
27 #endif
29 //version.c
30 extern const char *tomato_version;
31 extern const char *tomato_buildtime;
32 extern const char *tomato_shortver;
35 #ifdef DEBUG_NOISY
36 #define _dprintf cprintf
37 #else
38 #define _dprintf(args...) do { } while(0)
39 #endif
42 // misc.c
43 #define WP_DISABLED 0 // order must be synced with def in misc.c
44 #define WP_STATIC 1
45 #define WP_DHCP 2
46 #define WP_L2TP 3
47 #define WP_PPPOE 4
48 #define WP_PPTP 5
50 enum {
51 ACT_IDLE,
52 ACT_TFTP_UPGRADE_UNUSED,
53 ACT_WEB_UPGRADE,
54 ACT_WEBS_UPGRADE_UNUSED,
55 ACT_SW_RESTORE,
56 ACT_HW_RESTORE,
57 ACT_ERASE_NVRAM,
58 ACT_NVRAM_COMMIT,
59 ACT_REBOOT,
60 ACT_UNKNOWN
63 typedef struct {
64 int count;
65 struct {
66 struct in_addr addr;
67 unsigned short port;
68 } dns[3];
69 } dns_list_t;
71 extern int get_wan_proto(void);
72 extern int using_dhcpc(void);
73 extern void notice_set(const char *path, const char *format, ...);
74 extern int check_wanup(void);
75 extern const dns_list_t *get_dns(void);
76 extern void set_action(int a);
77 extern int check_action(void);
78 extern int wait_action_idle(int n);
79 extern int wl_client(void);
80 extern const char *get_wanip(void);
81 extern long get_uptime(void);
82 extern int get_radio(void);
83 extern void set_radio(int on);
84 extern int nvram_get_int(const char *key);
85 // extern long nvram_xget_long(const char *name, long min, long max, long def);
86 extern int nvram_get_file(const char *key, const char *fname, int max);
87 extern int nvram_set_file(const char *key, const char *fname, int max);
88 extern int nvram_contains_word(const char *key, const char *word);
89 extern int nvram_is_empty(const char *key);
90 extern void nvram_commit_x(void);
91 extern int connect_timeout(int fd, const struct sockaddr *addr, socklen_t len, int timeout);
92 //!!TB
93 #ifdef TCONFIG_USB
94 extern int file_lock(char *tag);
95 extern void file_unlock(int lockfd);
96 #else
97 #define file_lock(args...) (-1)
98 #define file_unlock(args...) do { } while(0)
99 #endif
101 #ifdef TCONFIG_USB
102 extern char *detect_fs_type(char *device);
103 extern struct mntent *findmntents(char *file, int swp,
104 int (*func)(struct mntent *mnt, uint flags), uint flags);
105 extern int find_label_or_uuid(char *dev_name, char *label, char *uuid);
106 extern void add_remove_usbhost(char *host, int add);
108 #define DEV_DISCS_ROOT "/dev/discs"
110 /* Flags used in exec_for_host calls
112 #define EFH_1ST_HOST 0x00000001 /* func is called for the 1st time for this host */
113 #define EFH_1ST_DISC 0x00000002 /* func is called for the 1st time for this disc */
114 #define EFH_HUNKNOWN 0x00000004 /* host is unknown */
115 #define EFH_USER 0x00000008 /* process is user-initiated - either via Web GUI or a script */
116 #define EFH_SHUTDN 0x00000010 /* exec_for_host is called at shutdown - system is stopping */
117 #define EFH_HP_ADD 0x00000020 /* exec_for_host is called from "add" hotplug event */
118 #define EFH_HP_REMOVE 0x00000040 /* exec_for_host is called from "remove" hotplug event */
119 #define EFH_PRINT 0x00000080 /* output partition list to the web response */
121 typedef int (*host_exec)(char *dev_name, int host_num, char *dsc_name, char *pt_name, uint flags);
122 extern int exec_for_host(int host, int obsolete, uint flags, host_exec func);
123 #ifdef LINUX26
124 extern int is_no_partition(const char *discname);
125 #endif
126 #endif //TCONFIG_USB
128 // id.c
129 enum {
130 MODEL_UNKNOWN,
131 MODEL_WRT54G,
132 MODEL_WRTSL54GS,
133 MODEL_WHRG54S,
134 MODEL_WHRHPG54,
135 MODEL_WR850GV1,
136 MODEL_WR850GV2,
137 MODEL_WZRG54,
138 MODEL_WL500W,
139 MODEL_WL500GP,
140 MODEL_WL500GPv2,
141 MODEL_WL500GE,
142 MODEL_WL520GU,
143 MODEL_DIR320,
144 MODEL_WBRG54,
145 MODEL_WBR2G54,
146 MODEL_WX6615GT,
147 MODEL_WZRHPG54,
148 MODEL_WZRRSG54,
149 MODEL_WZRRSG54HP,
150 MODEL_WVRG54NF,
151 MODEL_WHR2A54G54,
152 MODEL_WHR3AG54,
153 MODEL_RT390W,
154 MODEL_RTN10,
155 MODEL_RTN12,
156 MODEL_RTN16,
157 MODEL_MN700,
158 MODEL_WRH54G,
159 MODEL_WHRG125,
160 MODEL_WZRG108,
161 MODEL_WTR54GS,
162 MODEL_WR100,
163 MODEL_WLA2G54L,
164 MODEL_TM2300
166 #if TOMATO_N
168 MODEL_WZRG300N,
169 MODEL_WRT300N
170 #endif
173 enum {
174 HW_BCM4702,
175 HW_BCM4712,
176 HW_BCM5325E,
177 HW_BCM4704_BCM5325F,
178 HW_BCM5352E,
179 HW_BCM5354G,
180 HW_BCM4712_BCM5325E,
181 HW_BCM4704_BCM5325F_EWC,
182 HW_BCM4705L_BCM5325E_EWC,
183 HW_BCM5350,
184 HW_BCM5356,
185 HW_BCM4716,
186 HW_BCM4718,
187 HW_UNKNOWN
190 #define SUP_SES (1 << 0)
191 #define SUP_BRAU (1 << 1)
192 #define SUP_AOSS_LED (1 << 2)
193 #define SUP_WHAM_LED (1 << 3)
194 #define SUP_HPAMP (1 << 4)
195 #define SUP_NONVE (1 << 5)
196 #define SUP_80211N (1 << 6)
198 extern int check_hw_type(void);
199 // extern int get_hardware(void) __attribute__ ((weak, alias ("check_hw_type")));
200 extern int get_model(void);
201 extern int supports(unsigned long attr);
205 // process.c
206 extern char *psname(int pid, char *buffer, int maxlen);
207 extern int pidof(const char *name);
208 extern int killall(const char *name, int sig);
211 // files.c
212 #define FW_CREATE 0
213 #define FW_APPEND 1
214 #define FW_NEWLINE 2
216 extern unsigned long f_size(const char *path);
217 extern int f_exists(const char *file);
218 extern int f_read(const char *file, void *buffer, int max); // returns bytes read
219 extern int f_write(const char *file, const void *buffer, int len, unsigned flags, unsigned cmode); //
220 extern int f_read_string(const char *file, char *buffer, int max); // returns bytes read, not including term; max includes term
221 extern int f_write_string(const char *file, const char *buffer, unsigned flags, unsigned cmode); //
222 extern int f_read_alloc(const char *path, char **buffer, int max);
223 extern int f_read_alloc_string(const char *path, char **buffer, int max);
224 extern int f_wait_exists(const char *name, int max);
225 extern int f_wait_notexists(const char *name, int max);
228 // led.c
229 #define LED_WLAN 0
230 #define LED_DIAG 1
231 #define LED_WHITE 2
232 #define LED_AMBER 3
233 #define LED_DMZ 4
234 #define LED_AOSS 5
235 #define LED_BRIDGE 6
236 #define LED_MYSTERY 7 // (unmarked LED between wireless and bridge on WHR-G54S)
237 #define LED_COUNT 8
239 #define LED_OFF 0
240 #define LED_ON 1
241 #define LED_BLINK 2
242 #define LED_PROBE 3
244 extern const char *led_names[];
246 extern int gpio_open();
247 extern void gpio_write(uint32_t bit, int en);
248 extern uint32_t gpio_read(void);
249 extern uint32_t _gpio_read(int f);
250 extern int nvget_gpio(const char *name, int *gpio, int *inv);
251 extern int led(int which, int mode);
254 // base64.c
255 extern int base64_encode(unsigned char *in, char *out, int inlen); // returns amount of out buffer used
256 extern int base64_decode(const char *in, unsigned char *out, int inlen); // returns amount of out buffer used
257 extern int base64_encoded_len(int len);
258 extern int base64_decoded_len(int len); // maximum possible, not actual
261 // strings.c
262 extern const char *find_word(const char *buffer, const char *word);
263 extern int remove_word(char *buffer, const char *word);
265 #endif