Merge Tomato 1.26
[tomato.git] / release / src / router / shared / shared.h
blobe07300c9541089a63fa05c4fd886030692fd8d43
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 //version.c
20 extern const char *tomato_version;
21 extern const char *tomato_buildtime;
24 // misc.c
25 #define WP_DISABLED 0 // order must be synced with def in misc.c
26 #define WP_STATIC 1
27 #define WP_DHCP 2
28 #define WP_L2TP 3
29 #define WP_PPPOE 4
30 #define WP_PPTP 5
32 enum {
33 ACT_IDLE,
34 ACT_TFTP_UPGRADE_UNUSED,
35 ACT_WEB_UPGRADE,
36 ACT_WEBS_UPGRADE_UNUSED,
37 ACT_SW_RESTORE,
38 ACT_HW_RESTORE,
39 ACT_ERASE_NVRAM,
40 ACT_NVRAM_COMMIT,
41 ACT_REBOOT,
42 ACT_UNKNOWN
45 typedef struct {
46 int count;
47 struct {
48 struct in_addr addr;
49 unsigned short port;
50 } dns[3];
51 } dns_list_t;
53 extern int get_wan_proto(void);
54 extern int using_dhcpc(void);
55 extern void notice_set(const char *path, const char *format, ...);
56 extern int check_wanup(void);
57 extern const dns_list_t *get_dns(void);
58 extern void set_action(int a);
59 extern int check_action(void);
60 extern int wait_action_idle(int n);
61 extern int wl_client(void);
62 extern const char *get_wanip(void);
63 extern long get_uptime(void);
64 extern int get_radio(void);
65 extern void set_radio(int on);
66 extern int nvram_get_int(const char *key);
67 // extern long nvram_xget_long(const char *name, long min, long max, long def);
68 extern int nvram_get_file(const char *key, const char *fname, int max);
69 extern int nvram_set_file(const char *key, const char *fname, int max);
70 extern int nvram_contains_word(const char *key, const char *word);
71 extern int nvram_is_empty(const char *key);
72 extern void nvram_commit_x(void);
73 extern int connect_timeout(int fd, const struct sockaddr *addr, socklen_t len, int timeout);
74 //!!TB
75 #ifdef TCONFIG_USB
76 extern int file_lock(char *tag);
77 extern void file_unlock(int lockfd);
78 #else
79 #define file_lock(args...) (-1)
80 #define file_unlock(args...) do { } while(0)
81 #endif
83 #ifdef TCONFIG_USB
84 extern char *detect_fs_type(char *device);
85 extern struct mntent *findmntents(char *file, int swp,
86 int (*func)(struct mntent *mnt, uint flags), uint flags);
87 extern int find_label_or_uuid(char *dev_name, char *label, char *uuid);
88 extern void add_remove_usbhost(char *host, int add);
90 #define DEV_DISCS_ROOT "/dev/discs"
92 /* Flags used in exec_for_host calls
94 #define EFH_1ST_HOST 0x00000001 /* func is called for the 1st time for this host */
95 #define EFH_1ST_DISC 0x00000002 /* func is called for the 1st time for this disc */
96 #define EFH_HUNKNOWN 0x00000004 /* host is unknown */
97 #define EFH_USER 0x00000008 /* process is user-initiated - either via Web GUI or a script */
98 #define EFH_SHUTDN 0x00000010 /* exec_for_host is called at shutdown - system is stopping */
100 typedef int (*host_exec)(char *dev_name, int host_num, int disc_num, int part_num, uint flags);
101 extern int exec_for_host(int host, int when_to_update, uint flags, host_exec func);
102 #endif //TCONFIG_USB
104 // id.c
105 enum {
106 MODEL_UNKNOWN,
107 MODEL_WRT54G,
108 MODEL_WRTSL54GS,
109 MODEL_WHRG54S,
110 MODEL_WHRHPG54,
111 MODEL_WR850GV1,
112 MODEL_WR850GV2,
113 MODEL_WZRG54,
114 MODEL_WL500GP,
115 MODEL_WL500GPv2,
116 MODEL_WL500GE,
117 MODEL_WL520GU,
118 MODEL_WBRG54,
119 MODEL_WBR2G54,
120 MODEL_WX6615GT,
121 MODEL_WZRHPG54,
122 MODEL_WZRRSG54,
123 MODEL_WZRRSG54HP,
124 MODEL_WVRG54NF,
125 MODEL_WHR2A54G54,
126 MODEL_WHR3AG54,
127 MODEL_RT390W,
128 MODEL_MN700,
129 MODEL_WRH54G,
130 MODEL_WHRG125,
131 MODEL_WZRG108,
132 MODEL_WTR54GS,
133 MODEL_WR100,
134 MODEL_WLA2G54L,
135 MODEL_TM2300
137 #if TOMATO_N
139 MODEL_WZRG300N,
140 MODEL_WRT300N
141 #endif
144 enum {
145 HW_BCM4702,
146 HW_BCM4712,
147 HW_BCM5325E,
148 HW_BCM4704_BCM5325F,
149 HW_BCM5352E,
150 HW_BCM5354G,
151 HW_BCM4712_BCM5325E,
152 HW_BCM4704_BCM5325F_EWC,
153 HW_BCM4705L_BCM5325E_EWC,
154 HW_BCM5350,
155 HW_UNKNOWN
158 #define SUP_SES (1 << 0)
159 #define SUP_BRAU (1 << 1)
160 #define SUP_AOSS_LED (1 << 2)
161 #define SUP_WHAM_LED (1 << 3)
162 #define SUP_HPAMP (1 << 4)
163 #define SUP_NONVE (1 << 5)
164 #define SUP_80211N (1 << 6)
166 extern int check_hw_type(void);
167 // extern int get_hardware(void) __attribute__ ((weak, alias ("check_hw_type")));
168 extern int get_model(void);
169 extern int supports(unsigned long attr);
173 // process.c
174 extern char *psname(int pid, char *buffer, int maxlen);
175 extern int pidof(const char *name);
176 extern int killall(const char *name, int sig);
179 // files.c
180 #define FW_CREATE 0
181 #define FW_APPEND 1
182 #define FW_NEWLINE 2
184 extern unsigned long f_size(const char *path);
185 extern int f_exists(const char *file);
186 extern int f_read(const char *file, void *buffer, int max); // returns bytes read
187 extern int f_write(const char *file, const void *buffer, int len, unsigned flags, unsigned cmode); //
188 extern int f_read_string(const char *file, char *buffer, int max); // returns bytes read, not including term; max includes term
189 extern int f_write_string(const char *file, const char *buffer, unsigned flags, unsigned cmode); //
190 extern int f_read_alloc(const char *path, char **buffer, int max);
191 extern int f_read_alloc_string(const char *path, char **buffer, int max);
192 extern int f_wait_exists(const char *name, int max);
193 extern int f_wait_notexists(const char *name, int max);
196 // led.c
197 #define LED_WLAN 0
198 #define LED_DIAG 1
199 #define LED_WHITE 2
200 #define LED_AMBER 3
201 #define LED_DMZ 4
202 #define LED_AOSS 5
203 #define LED_BRIDGE 6
204 #define LED_MYSTERY 7 // (unmarked LED between wireless and bridge on WHR-G54S)
205 #define LED_COUNT 8
207 #define LED_OFF 0
208 #define LED_ON 1
209 #define LED_BLINK 2
210 #define LED_PROBE 3
212 extern const char *led_names[];
214 extern void gpio_write(uint32_t bit, int en);
215 extern uint32_t gpio_read(void);
216 extern int nvget_gpio(const char *name, int *gpio, int *inv);
217 extern int led(int which, int mode);
220 // base64.c
221 extern int base64_encode(unsigned char *in, char *out, int inlen); // returns amount of out buffer used
222 extern int base64_decode(const char *in, unsigned char *out, int inlen); // returns amount of out buffer used
223 extern int base64_encoded_len(int len);
224 extern int base64_decoded_len(int len); // maximum possible, not actual
227 // strings.c
228 extern const char *find_word(const char *buffer, const char *word);
229 extern int remove_word(char *buffer, const char *word);
231 #endif