source: src/router/shared/utils.h @ 10631

Last change on this file since 10631 was 10631, checked in by eko, 5 years ago

Asus WL330GE supp.

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