root/src/router/shared/utils.h

Revision 12273, 21.1 kB (checked in by eko, 5 months ago)

wrt54g2v13 / wrt54gs2

Line 
1 #ifndef UTILS_H
2 #define UTILS_H
3
4 #ifdef CDEBUG
5 #include <shutils.h>
6 #include <malloc.h>
7 #include <cy_conf.h>
8 #endif
9 #include <string.h>
10 #include <stdio.h>
11 #include <unistd.h>
12 #include <signal.h>
13
14 /*
15  * 2 byte router ID number; Eko 4.jul.06
16  *
17  * X X X X X X X X R R R P N N N N = 0xXXXX --------------- ----- - -------
18  * router num | | gpio num (1111 = f = disable resetbutton) | | | |---
19  * resetbutton polarity (0: normal, 1 inversed) | |-------- reserved for
20  * future use (maybe USB supp)
21  */
22
23 // Linksys WRT54G, WRT54GS and WRT54GL all models (v2 - v6) except WRT54G
24 // v1.0, v1.1 (fccid: Linksys Q87-WRT54G..., Q87_WT54G...)
25 #define ROUTER_WRT54G 0x0116
26
27 // Linksys WRT54Gv8, WRT54GSv7 (BCM5354 cpu, fccid: Linksys Q87-WRT54GV8,
28 // Q87-WRT54GSV7)
29 // Linksys WRT54Gv8.2, WRT54GSv7.2 (BCM5354 cpu, fccid: Linksys
30 // Q87-WRT54GV82, Q87-WRT54GSV72)
31 // Linksys WRT54Gv7.2 (EMEA only - same hardware as v8)
32 // Linksys WRT54G2v1 (BCM5354 cpu, fccid: Linksys Q87-WRT54G2V1)
33 // Linksys WRT54G2v1.3 (BCM5354 cpu, fccid: Linksys Q87-WRT54G2V13)
34 // Linksys WRT54GS2v1 (BCM5354 cpu, fccid: Linksys Q87-WRT54G2V1)
35 #define ROUTER_WRT54G_V8 0x0216
36
37 // Linksys WRT54G v1.0 and v1.1, Alnet ALL0277 (BCM4702 cpu, fccid: v1:
38 // Linksys PKW-WM54G; v1.1: Linksys Q87-WRT54G11)
39 #define ROUTER_WRT54G1X 0x0316
40
41 // Linksys WRTSL54GS (BCM4704 cpu, BCM5325E switch, fccid: Linksys
42 // Q87-WTSLGS, same without USB: Q87-WRTH54GS)
43 #define ROUTER_WRTSL54GS 0x0416
44
45 // Linksys WRT55AG v1 (BCM4702 cpu, dual minipci (Broadcom + Atheros), fccid:
46 // Linksys PKW-WRT55AG)
47 #define ROUTER_LINKSYS_WRT55AG 0x0516
48
49 // Asus WL-500G-Deluxe (BCM5365 cpu), (fccid: Asus MSQWL500GD)
50 #define ROUTER_ASUS_WL500GD 0x0606
51
52 // Buffalo WBR-G54, WLA-G54 (BCM4702 cpu, WLA-G54 has no switch)
53 #define ROUTER_BUFFALO_WBR54G 0x0704
54
55 // Buffalo WBR2-G54 (BCM4712 + ADM6996 switch, fccid: Buffalo
56 // FDI-04600142-0),
57 // Buffalo WBR2-G54S, WLA2-G54L (= WLA2-G54 in Japan)
58 #define ROUTER_BUFFALO_WBR2G54S 0x0807
59
60 // Buffalo WLA2-G54C == WLI3-TX1-G54 (BCM4712 cpu, no switch, fccid: Buffalo
61 // FDI-09101669-0)
62 #define ROUTER_BUFFALO_WLA2G54C 0x0910
63
64 // Buffalo WHR-G54S (BCM5352E cpu, fccid: Buffalo FDI-04600264-0) and
65 // WHR-HP-G54 (BCM5352E cpu, fccid: Buffalo FDI-09101577-0)
66 // Buffalo WHR-G125, WHR-HP-G125 (BCM5354 cpu, fccid: Buffalo FDI-09101584-0)
67 // Buffalo WHR-HP-G125 new (BCM5354 cpu, fccid: FDI-09101588-0)
68 #define ROUTER_BUFFALO_WHRG54S 0x0a04
69
70 // Buffalo WZR-RS-G54 (BCM4704 cpu), WZR-G54, WZR-HP-G54 (4704 cpu, fccid:
71 // Buffalo FDI-09101457-0),
72 // Buffalo WHR3-AG54, WVR-G54-NF, WHR2-A54G54
73 #define ROUTER_BUFFALO_WZRRSG54 0x0b04
74
75 // Motorola WR850G v1 (BCM4702 cpu, fccid: Motorola ACQWR850G)
76 #define ROUTER_MOTOROLA_V1 0x0c10
77
78 // Motorola WR850G v2/v3, WR850GP (BCM4712 cpu, ADM6996 switch, fccid:
79 // Motorola ACQWR850GV2)
80 #define ROUTER_MOTOROLA 0x0d15
81
82 // RT210W and RT211W generic and branded (BCM4702 cpu, fccid: Askey
83 // H8N-RT210W, H8N-RT211W)
84 // H8N-RT210W: Siemens se505 v1, Belkin F5D7230-4 v1000, v1xxx < 1444
85 // H8N-RT211W: Belkin F5D7130
86 #define ROUTER_RT210W 0x0e0f
87
88 // RT480W generic and branded (BCM4712 cpu, ADM6996 switch, fccid: Askey
89 // H8NRT480W),
90 // Siemens se505 v2, Belkin F5D7230-4 v1444 (2MB flash, fccid: Belkin
91 // K7S-F5D72304)
92 #define ROUTER_RT480W 0x0f0f
93
94 // Microtik RouterBOARD 500
95 #define ROUTER_BOARD_500 0x100f
96
97 // NMN A/B/G Router Protoype (266 Mhz Xscale, dual minipci)
98 #define ROUTER_BOARD_XSCALE 0x1101
99
100 // Generic BRCM 4702 boards
101 #define ROUTER_BRCM4702_GENERIC 0x120f
102
103 // Buffalo WLI_TX4_G54HP bridge
104 #define ROUTER_BUFFALO_WLI_TX4_G54HP 0x1304
105
106 // Microsoft MN-700 (BCM4702 cpu), (fccid: Microsoft C3KMN700)
107 #define ROUTER_MICROSOFT_MN700 0x1417
108
109 // Buffalo WLA-G54C == WLI-TX1-G54 (BCM4702 cpu - no switch, fccid:
110 // QDS-BRCM1005)
111 #define ROUTER_BUFFALO_WLAG54C 0x1510
112
113 // Asus WL-500g Premium (BCM4704 cpu, BCM5325E switch, (fccid: Asus
114 // MSQWL500GP)
115 #define ROUTER_ASUS_WL500G_PRE 0x1600
116
117 // Buffalo WZR-G300N MIMO Router (radio fccid: Buffalo FDI-09101466-0)
118 #define ROUTER_BUFFALO_WZRG300N 0x1704
119
120 // Linksys WRT300N v1 (BCM4704 cpu, BCM5325F switch, fccid: Linksys
121 // Q87-WRT300N or Q87-WRT300NV1)
122 #define ROUTER_WRT300N 0x1816
123
124 // Buffalo WHR-AM54G54
125 #define ROUTER_BUFFALO_WHRAM54G54 0x190f
126
127 // Magicbox PowerPC board
128 #define ROUTER_BOARD_MAGICBOX 0x1a01
129
130 // Magicbox PowerPC board 2.0
131 // #define ROUTER_BOARD_MAGICBOX20 0x1b01
132
133 // Buffalo WLI2-TX1-G54 Access point (BCM4702 cpu, no switch)
134 #define ROUTER_BUFFALO_WLI2_TX1_G54 0x1c10
135
136 // NMN A/B/G Router Protoype (266 Mhz Xscale, four minipci)
137 #define ROUTER_BOARD_GATEWORX 0x1d04
138
139 // Motorola WE800G v1 (BCM4702 cpu, no switch, minipci radio, fccid: Motorola
140 // ACQWE800G, F2NWE800G)
141 #define ROUTER_MOTOROLA_WE800G 0x1e10
142
143 // Generic x86 PC / WRAP / Soekris
144 #define ROUTER_BOARD_X86 0x1f0f
145
146 // ?
147 #define ROUTER_SUPERGERRY 0x200f
148
149 // Linksys WRT350N (BCM4705 cpu, Gbit switch, PCMCIA radio card, fccid:
150 // Linksys Q87-WRT350N)
151 #define ROUTER_WRT350N 0x2116
152
153 // Linksys WAP54G v1 and v1.1 (BCM4702 cpu, no switch, fccid: Linksys
154 // PKW-WAP54G)
155 // 2 different boards (same fccid): WX5510_Vxx and WX5541_Vxx
156 #define ROUTER_WAP54G_V1 0x2210
157
158 // Linksys WAP54G v2 (BCM4712 cpu, no switch, fccid: Linksys Q87-WAP54GV2)
159 #define ROUTER_WAP54G_V2 0x2310
160
161 // ViewSonic WAPBR-100 (BCM4712 cpu, no switch, fccid: Viewsonic GSS-VS10407)
162 #define ROUTER_VIEWSONIC_WAPBR_100 0x2417
163
164 // Dell TrueMobile 2300 v1 (BCM4702 cpu, BCM5325 switch, mini pci radio,
165 // fccid: Gemtek MXF-R920401G)
166 #define ROUTER_DELL_TRUEMOBILE_2300 0x2510
167
168 // Dell TrueMobile 2300 v2 (BCM4712 cpu, ADM6996 switch, fccid: Gemtek
169 // MXF-R921212G)
170 // Sparklan WX-6615GT (4712 cpu, ADM6996 switch, fccid: Gemtek MXF-R930116G)
171 #define ROUTER_DELL_TRUEMOBILE_2300_V2 0x2610
172
173 // Fonera (Atheros SoC, no switch, fccid: Accton HED-FON2100)
174 #define ROUTER_BOARD_FONERA 0x2701
175
176 // Buffalo WHR-HP-AG108 (Atheros A+G, Kendin KS8895XA switch, fccid: Buffalo
177 // FDI-09101540-0)
178 #define ROUTER_BOARD_WHRAG108 0x2801
179
180 // swapped phy definition
181 #define ROUTER_BOARD_GATEWORX_SWAP 0x290f
182
183 // Netgear WNR834Bv1 (BCM4704 cpu, BCM5325 switch, cardbus radio, fccid:
184 // Netgear PY306100032)
185 #define ROUTER_NETGEAR_WNR834B 0x2a17
186
187 // swapped phy definition and Kendin switch
188 #define ROUTER_BOARD_GATEWORX_GW2345 0x2b0f
189
190 // Linksys WRT54G3G (BCM4712 cpu, 5325E switch, PCMCIA slot, fccid: Linksys
191 // Q87-WRT54G3G)
192 #define ROUTER_WRT54G3G 0x2c16
193
194 // Sitecom WL-105(b) (BCM4702 cpu, no switch, fccid: Gemtek MXF-A910910AB -
195 // no A-band)
196 #define ROUTER_SITECOM_WL105B 0x2d10
197
198 // Linksys WRT150N (BCM4704 cpu, BCM5325F switch, fccid: Linksys Q87-WRT150N)
199 #define ROUTER_WRT150N 0x2e16
200
201 // ?
202 #define ROUTER_BOARD_LS2 0x2f01
203
204 // Buffalo WAPM-HP-AM54G54 (only available on japanese market, dual radio 2.4
205 // and 5 GHz Broadcom)
206 #define ROUTER_BUFFALO_WAPM_HP_AM54G54 0x3005
207
208 // Buffalo WLAH-G54 (only available on japanese market, single radio 2.4 ghz)
209 #define ROUTER_BUFFALO_WLAH_G54 0x3104
210
211 // Buffalo WZR-G144HH (only available on japanese market, 802.11n, Gigabit
212 // switch. Similar to WRT350N)
213 #define ROUTER_BUFFALO_WZRG144NH 0x3217
214
215 // U.S.Robotics USR5430 bridge (BCM4712 cpu, no switch, fccid: Gemtek
216 // MXF-EB921201G)
217 #define ROUTER_USR_5430 0x3310
218
219 // U.S.Robotics USR5432 bridge (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
220 // U.S.Robotics USR5441 range-ext. (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
221 // U.S.Robotics USR5451 AP (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
222 // U.S.Robotics USR5461 router (BCM5350 cpu, fccid: Universal Scientific Industrial Co. IXM-RTGBR02)
223 #define ROUTER_USR_5461 0x340f
224
225 // Meraki Mini (Atheros SoC, no switch, fccid: Meraki UDX-MERAKI-MINI)
226 #define ROUTER_BOARD_MERAKI 0x350f
227
228 // Asus WL300g (BCM4702 cpu, no switch, fccid: Asus MSQWL300G)
229 // Asus WL500g (BCM4702 cpu, fccid: Asus MSQWL500G)
230 #define ROUTER_ASUS_WL500G 0x3606
231
232 // ?
233 // #ifdef HAVE_ALPHA
234 // #define ROUTER_BOARD_CA8 0x3706
235 // #else
236 #define ROUTER_BOARD_CA8 0x3706
237 // #endif
238
239 // Fonera (Atheros SoC,...)
240 #define ROUTER_BOARD_FONERA2200 0x3801
241
242 // ?
243 #define ROUTER_BOARD_TW6600 0x3901
244
245 // Atheros PB42 prototype (AR5416 MIMO Wifi, 400 Mhz Mips CPU, 32 MB RAM)
246 #define ROUTER_BOARD_PB42 0x3a01
247
248 // Asus WL-500W (MIMO, 4704 cpu, fccid: Asus MSQWL500W)
249 #define ROUTER_ASUS_WL500W 0x3b06
250
251 // Asus WL550gE (BCM5352E cpu, fccid: Asus MSQWL550GE)
252 // Asus WL320gP/gE (BCM5352E cpu, 1 LAN only, fccid: Asus MSQWL320GP / MSQWL320GE)
253 #define ROUTER_ASUS_WL550GE 0x3c01
254
255 // Sitecom WL-111 (BCM4702 cpu, fccid: ?)
256 #define ROUTER_SITECOM_WL111 0x3d10
257
258 // D-Link DIR-320 (BCM5354 cpu, fccid: D Link KA2DIR320A1)
259 #define ROUTER_DLINK_DIR320 0x3e17
260
261 // Linksys WTR54GS travel router (BCM5350 cpu, 2 ports, fccid: v1, v2:
262 // Linksys Q87-WTR54GS; v2.1 Q87-WTR54GSV21)
263 #define ROUTER_LINKSYS_WTR54GS 0x3f13
264
265 // Belkin F5D7230 v2000 (BCM4712 cpu, 5325E switch, serial flash, fccid:
266 // Belkin K7SF5D7234A)
267 #define ROUTER_BELKIN_F5D7230_V2000 0x400f
268
269 // Belkin F5D7231-4 v1212UK (BCM5352E cpu, fccid: Askey H8NRT2406W)
270 #define ROUTER_BELKIN_F5D7231 0x410f
271
272 // Linksys WAP54G v3, WAP54G v3.1 (BCM5352E cpu, fccid: Linksys Q87-WAP54GV3,
273 // Q87-WAP54GV31)
274 #define ROUTER_WAP54G_V3 0x4210
275
276 // Asus WL-520G (WL-500G-C in China) (BCM5350 cpu, fccid: Asus MSQWL520G)
277 #define ROUTER_ASUS_WL520G 0x430f
278
279 // Asus WL-520GU / WL-520GC (BCM5354 cpu, fccid: Asus MSQWL520GUGC)
280 #define ROUTER_ASUS_WL520GUGC 0x4412
281
282 // Netgear WG602 v3 (BCM5350 cpu, fccid: Netgear PY3WG602V3)
283 #define ROUTER_NETGEAR_WG602_V3 0x4511
284
285 // Netgear WG602 v4 (BCM5354 cpu, fccid: Netgear PY3WG602V4)
286 #define ROUTER_NETGEAR_WG602_V4 0x4617
287
288 // Linksys WRT600N (BCM4705 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
289 // Broadcom, fccid: Linksys Q87-WRT600NV1, Q87-WRT600NV11)
290 #define ROUTER_WRT600N 0x4717
291
292 // Linksys WRH54G (BCM5354 cpu, fccid: Linksys Q87-WRH54G)
293 #define ROUTER_LINKSYS_WRH54G 0x4816
294
295 // Linksys WRT150N v1.1 (BCM4704 cpu, BCM5325F switch, fccid: Linksys
296 // Q87-WRT150NV11)
297 #define ROUTER_WRT150NV11 0x4916
298
299 // Linksys WRT150N v1.2 (fccid: Linksys ?)
300 #define ROUTER_WRT150NV12 0x4a16
301
302 // Linksys WRT160N v1 (BCM4703 cpu, ?? switch, fccid: Linksys Q87-WRT160N)
303 #define ROUTER_WRT160N 0x4b16
304
305 // Linksys WRT300N v1.1 (BCM4705 cpu, 5325 switch, fccid: Linksys
306 // Q87-WRT300NV11)
307 #define ROUTER_WRT300NV11 0x4c16
308
309 // Linksys WRT310N v1 (BCM4705 cpu, fccid: Linksys Q87-WRT310N)
310 #define ROUTER_WRT310N 0x4d16
311
312 // D-Link DIR330 (BCM5836 cpu, fccid: D Link KA2DIR330A1)
313 #define ROUTER_DLINK_DIR330 0x4e13
314
315 // Netgear WNDR3300 (BCM4704 cpu, BCM5325F switch, dual radio 2.4-N and 5 GHz
316 // Broadcom, fccid: Netgear PY307300072)
317 #define ROUTER_NETGEAR_WNDR3300 0x4f16
318
319 // Asus WL-330GE (BCM5354, no switch, fccid: MSQWL330GE)
320 #define ROUTER_ASUS_330GE 0x500f
321
322 // Linksys WRT54Gv8.1 (BCM5354 cpu, fccid: Linksys Q87-WRT54GV81)
323 #define ROUTER_WRT54G_V81 0x5117
324
325 // Netgear WGR614L (BCM5354 cpu, serial flash, fccid: Netgear PY306400057)
326 // Netgear WGR614 v8 - same -
327 // Netgear WGR614 v9 - same - half flash, half ram
328 #define ROUTER_NETGEAR_WGR614L 0x5217
329
330 // Netgear WNR834Bv2 (BCM4704 cpu, BCM5325 switch, fccid: Netgear
331 // PY307100061)
332 #define ROUTER_NETGEAR_WNR834BV2 0x5316
333
334 // Asus WL-500g Premium v2 (BCM5354 cpu, fccid: Asus MSQWL500GPV2)
335 #define ROUTER_ASUS_WL500G_PRE_V2 0x5412
336
337 // Wistron CA8-PRO (RDAA-81)
338 #define ROUTER_BOARD_CA8PRO 0x5506
339
340 // Askey board RT2205D-D56 / RT2206D-D56 (BCM4704 cpu, mini-pci)
341 // Belkin MIMO F5D8230_v2 or F5D8230_v1001ea (fccid: Airgo networks Inc.
342 // SA3-AGN0901AP0100)
343 #define ROUTER_ASKEY_RT220XD 0x5617
344
345 // U.S.Robotics USR5455 (BCM5354 cpu, no switch, fccid: Universal Scientific
346 // Industrial Co. IXM-APGBR03)
347 // U.S.Robotics USR5465 (BCM5354 cpu, fccid: Universal Scientific Industrial
348 // Co. IXM-RTGBR03)
349 #define ROUTER_USR_5465 0x570f
350
351 #define ROUTER_ALLNET01 0x5813
352
353 // Linksys WRT610N (BCM4785 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
354 // Broadcom, fccid: Linksys Q87-WRT610N)
355 #define ROUTER_WRT610N 0x5916
356
357 // Belkin F5D7230 v3000 (BCM5350 cpu, flash ?? , fccid: Belkin PD5F5D72304)
358 #define ROUTER_BELKIN_F5D7230_V3000 0x6011
359
360 #define ROUTER_BOARD_DANUBE 0x610f
361
362 #define ROUTER_BOARD_STORM 0x6201       // value 1 is a fake to enable reset button code. real gpio is 60
363
364 #define ROUTER_BOARD_ADM5120 0x630f
365
366 #define ROUTER_BUFFALO_WCAG 0x6404
367
368 #define ROUTER_BOARD_WHRG300N 0x651a
369
370 #define ROUTER_BOARD_RT2880 0x660f
371
372 // Wistron RCAA01 (RCAA-01)
373 #define ROUTER_BOARD_RCAA01 0x6706
374
375 // Wistron RDAT81 (RDAT81)
376 #define ROUTER_BOARD_RDAT81 0x6806
377
378 // Senao ECB9750
379 #define ROUTER_BOARD_ECB9750 0x691b
380
381 // Compex WP54G (and compatible)
382 #define ROUTER_BOARD_WP54G 0x7004
383
384 // Compex NP28G (and compatible)
385 #define ROUTER_BOARD_NP28G 0x710f
386
387 // Belkin F5D7231-4 v2000 (BCM5352E cpu, fccid: Belkin K7SF5D7231B)
388 #define ROUTER_BELKIN_F5D7231_V2000 0x7213
389
390 #define ROUTER_BOARD_ESR6650 0x730f
391
392 #define NVROUTER "DD_BOARD"
393
394 static inline int startswith(char *source, char *cmp)
395 {
396         return !strncmp(source, cmp, strlen(cmp));
397 }
398
399 extern char *getBridge(char *ifname);
400 extern char *getRealBridge(char *ifname);
401 extern char *getSTA(void);
402 extern char *getWET(void);
403 extern int contains(const char *string, char value);
404 extern int getcpurev(void);
405 extern int cpu_plltype(void);
406 extern int check_vlan_support(void);
407
408 extern int startswith(char *source, char *cmp);
409 extern int count_occurences(char *source, int cmp);
410 extern int pos_nthoccurence(char *source, int cmp, int which);
411 extern char *substring(int start, int stop, const char *src, char *dst);
412 extern void strtrim_right(char *p, int c);
413 extern unsigned int daysformonth(unsigned int month, unsigned int year);
414 extern int weekday(int month, int day, int year);
415 extern int getRouterBrand(void);
416 extern char *getRouter(void);
417 extern int diag_led(int type, int act);
418 extern int C_led(int i);
419 extern int get_single_ip(char *ipaddr, int which);
420 extern char *get_mac_from_ip(char *ip);
421 extern struct dns_lists *get_dns_list(void);
422 extern int dns_to_resolv(void);
423 extern char *get_wan_face(void);
424
425 extern int check_wan_link(int num);
426 extern char *get_complete_ip(char *from, char *to);
427 extern char *get_complete_lan_ip(char *ip);
428 extern int get_int_len(int num);
429 extern int file_to_buf(char *path, char *buf, int len);
430 extern int buf_to_file(char *path, char *buf);
431 extern pid_t *find_pid_by_name(char *pidName);
432 extern int find_pid_by_ps(char *pidName);
433 extern int *find_all_pid_by_ps(char *pidName);
434 extern char *find_name_by_proc(int pid);
435 extern int get_ppp_pid(char *file);
436 extern long convert_ver(char *ver);
437 extern int check_flash(void);
438 extern int check_action(void);
439 extern int check_now_boot(void);
440 extern int check_hw_type(void);
441 extern int is_exist(char *filename);
442 extern void set_ip_forward(char c);
443 struct mtu_lists *get_mtu(char *proto);
444 extern void set_host_domain_name(void);
445
446 extern void encode(char *buf, int len);
447 extern void decode(char *buf, int len);
448 extern char *zencrypt(char *passwd);
449
450 extern void getLANMac(char *newmac);
451 extern void getWirelessMac(char *newmac);
452 extern void getWANMac(char *newmac);
453
454 extern int led_control(int type, int act);
455 enum { LED_POWER, LED_DIAG, LED_DMZ, LED_CONNECTED, LED_BRIDGE, LED_VPN,
456         LED_SES, LED_SES2, LED_WLAN, LED_USB, LED_SEC0, LED_SEC1
457 };
458 enum { LED_ON, LED_OFF, LED_FLASH };
459
460 #ifdef CDEBUG
461 extern int mcoreleft(void);
462 extern int coreleft(void);
463 static void cdebug(char *function)
464 {
465         // FILE *in = fopen ("/tmp/console.log", "a");
466         fprintf(stderr, "free ram in %s = %d (malloc %d)\n", function,
467                 coreleft(), mcoreleft());
468         // fclose (in);
469 }
470
471 #else
472 #define cdebug(a)
473 #endif
474 extern int first_time(void);
475
476 extern int set_register_value(unsigned short port_addr,
477                               unsigned short option_content);
478 extern unsigned long get_register_value(unsigned short id, unsigned short num);
479 // extern int sys_netdev_ioctl(int family, int socket, char *if_name, int
480 // cmd, struct ifreq *ifr);
481
482 int ct_openlog(const char *ident, int option, int facility, char *log_name);
483 void ct_syslog(int level, int enable, const char *fmt, ...);
484 void ct_logger(int level, const char *fmt, ...);
485 struct wl_assoc_mac *get_wl_assoc_mac(int instance, int *c);
486
487 extern struct detect_wans *detect_protocol(char *wan_face, char *lan_face,
488                                            char *type);
489
490 enum { WL = 0,
491         DIAG = 1,
492         // SES_LED1 = 2,
493         // SES_LED2 = 3,
494         SES_BUTTON = 4,
495         DMZ = 7
496 };
497
498 enum { START_LED, STOP_LED, MALFUNCTION_LED };
499
500 typedef enum { ACT_IDLE,
501         ACT_TFTP_UPGRADE,
502         ACT_WEB_UPGRADE,
503 #ifdef HAVE_HTTPS
504         ACT_WEBS_UPGRADE,
505 #endif
506         ACT_SW_RESTORE,
507         ACT_HW_RESTORE,
508         ACT_ERASE_NVRAM,
509         ACT_NVRAM_COMMIT,
510         ACT_UNKNOWN
511 } ACTION;
512
513 enum { UNKNOWN_BOOT = -1, PMON_BOOT, CFE_BOOT };
514
515 enum { BCM4702_CHIP, BCM4712_CHIP, BCM5325E_CHIP, BCM5350_CHIP, BCM5365_CHIP,
516         BCM4704_BCM5325F_CHIP,
517         BCM5352E_CHIP, BCM4712_BCM5325E_CHIP, BCM4704_BCM5325F_EWC_CHIP,
518         BCM4705_BCM5397_EWC_CHIP, BCM5354G_CHIP, BCM4705L_BCM5325E_EWC_CHIP,
519         BCM4705G_BCM5395S_EWC_CHIP,
520         NO_DEFINE_CHIP
521 };
522
523 enum { FIRST, SECOND };
524
525 enum { SYSLOG_LOG = 1, SYSLOG_DEBUG, CONSOLE_ONLY, LOG_CONSOLE, DEBUG_CONSOLE };
526
527 #define ACTION(cmd)     buf_to_file(ACTION_FILE, cmd)
528
529 struct dns_lists {
530         int num_servers;
531         char dns_server[4][16];
532 };
533
534 #define NOT_USING       0
535 #define USING           1
536
537 struct wl_assoc_mac {
538         char mac[18];
539 };
540
541 struct mtu_lists {
542         char *proto;            /* protocol */
543         char *min;              /* min mtu */
544         char *max;              /* max mtu */
545 };
546
547 struct detect_wans {
548         int proto;
549         int count;
550         char *name;
551         char desc[1024];
552 };
553
554 #define PROTO_DHCP      0
555 #define PROTO_STATIC    1
556 #define PROTO_PPPOE     2
557 #define PROTO_PPTP      3
558 #define PROTO_L2TP      4
559 #define PROTO_HB        5
560 #define PROTO_ERROR     -1
561
562 #define PPP_PSEUDO_IP   "10.64.64.64"
563 #define PPP_PSEUDO_NM   "255.255.255.255"
564 #define PPP_PSEUDO_GW   "10.112.112.112"
565
566 #define PING_TMP        "/tmp/ping.log"
567 // #define TRACEROUTE_TMP "/tmp/traceroute.log"
568
569 #define RESOLV_FILE     "/tmp/resolv.conf"
570 #define RESOLV_FORW     "/tmp/resolv.dnsmasq"
571 #define HOSTS_FILE      "/tmp/hosts"
572
573 #define LOG_FILE        "/var/log/mess"
574
575 #define ACTION_FILE     "/tmp/action"
576
577 #define split(word, wordlist, next, delim) \
578         for (next = wordlist, \
579              strncpy(word, next, sizeof(word)), \
580              word[(next=strstr(next, delim)) ? strstr(word, delim) - word : sizeof(word) - 1] = '\0', \
581              next = next ? next + sizeof(delim) - 1 : NULL ; \
582              strlen(word); \
583              next = next ? : "", \
584              strncpy(word, next, sizeof(word)), \
585              word[(next=strstr(next, delim)) ? strstr(word, delim) - word : sizeof(word) - 1] = '\0', \
586              next = next ? next + sizeof(delim) - 1 : NULL)
587
588 #define STRUCT_LEN(name)    sizeof(name)/sizeof(name[0])
589
590 #define printHEX(str,len) { \
591         int i; \
592         for (i=0 ; i<len ; i++) { \
593                 printf("%02X ", (unsigned char)*(str+i)); \
594                 if(((i+1)%16) == 0) printf("- "); \
595                 if(((i+1)%32) == 0) printf("\n"); \
596         } \
597         printf("\n\n"); \
598 }
599
600 #define printASC(str,len) { \
601         int i; \
602         for (i=0 ; i<len ; i++) { \
603                 printf("%c", (unsigned char)*(str+i)); \
604                 if(((i+1)%16) == 0) printf("- "); \
605                 if(((i+1)%32) == 0) printf("\n"); \
606         } \
607         printf("\n\n"); \
608 }
609
610 void set_gpio(int gpio, int value);
611
612 int get_gpio(int gpio);
613
614 #ifdef HAVE_OLED
615 void lcdmessage(char *message);
616 void initlcd(void);
617 void lcdmessaged(char *dual, char *message);
618 #else
619 #define initlcd()
620 #define lcdmessage(a)
621 #define lcdmessaged(a,b)
622 #endif
623
624 #ifdef HAVE_AQOS
625 extern void add_usermac(char *mac, int idx, char *upstream, char *downstream);
626 extern void add_userip(char *ip, int idx, char *upstream, char *downstream);
627 #endif
628
629 void getHostName(char *buf, char *ip);
630 int ishexit(char c);
631 int haswifi(void);
632 int sv_valid_hwaddr(char *value);
633 int sv_valid_ipaddr(char *value);
634 int sv_valid_range(char *value, int low, int high);
635 int sv_valid_statics(char *value);
636 void get_network(char *ipaddr, char *netmask);
637 void get_broadcast(char *ipaddr, char *netmask);
638 int route_manip(int cmd, char *name, int metric, char *dst, char *gateway,
639                 char *genmask);
640 int route_add(char *name, int metric, char *dst, char *gateway, char *genmask);
641 int route_del(char *name, int metric, char *dst, char *gateway, char *genmask);
642 extern char *psname(int pid, char *buffer, int maxlen);
643 extern int pidof(const char *name);
644 extern int killall(const char *name, int sig);
645 extern int getifcount(const char *ifprefix);
646 extern int getIfList(char *buffer, const char *ifprefix);
647 extern void getIfLists(char *eths, int size);
648 extern int ifexists(const char *ifname);
649 extern void getinterfacelist(const char *ifprefix, char *buffer);
650 extern int count_processes(char *pidName);
651
652 int isGrep(char *string, char *cmp);
653 int softkill(char *name);
654
655 int getmask(char *netmask);
656 int doMultiCast(void);
657 int getMTD(char *name);
658 void getIPFromName(char *name, char *ip);
659
660 #define DEFAULT_USER "bJ/GddyoJuiU2"
661 #define DEFAULT_PASS "bJz7PcC1rCRJQ"
662
663 #define MAX_WDS_DEVS 10
664
665 #define OLD_NAME_IP     "/tmp/.old_name_ip"
666
667 #ifndef MAX_LEASES
668 #define MAX_LEASES 254
669 #endif
670
671 struct wl_client_mac {
672         char hostname[32];
673         char ipaddr[20];
674         char hwaddr[20];
675         int status;             // 0:offline 1:online
676         int check;
677 };
678
679 extern int dd_timer_delete(timer_t timer);
680 extern int dd_timer_create(clockid_t clock_id,  /* clock ID (always CLOCK_REALTIME) */
681                            struct sigevent *evp,        /* user event handler */
682                            timer_t * pTimer     /* ptr to return value */
683     );
684
685 int endswith(char *str, char *cmp);
686
687 int isListed(char *listname, char *value);
688 void addList(char *listname, char *value);
689 int searchfor(FILE * fp, char *str, int scansize);
690 int insmod(char *module);
691 void rmmod(char *module);
692
693 int do80211priv(const char *ifname, int op, void *data, size_t len);
694 int getsocket(void);
695 int isEMP(char *ifname);
696 char *get3GControlDevice(void);
697 char *getIsoName(const char *country);
698
699 #ifdef HAVE_RT2880
700 char *getRADev(char *prefix);
701 #endif
702
703 #ifndef HAVE_SYSLOG
704 #define dd_syslog(a, args...) do { } while(0);
705 #else
706 #define dd_syslog(a, args...) syslog( a,## args);
707 #endif
708 #endif
Note: See TracBrowser for help on using the browser.