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

Last change on this file since 10211 was 10211, checked in by BrainSlayer, 5 years ago

other allnet stuff (sercom mac detection and vlan correction)

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