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

Last change on this file since 17793 was 17793, checked in by chris, 19 months ago

qos rewrite pppd/radius needs testing

File size: 27.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#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// Linksys WRE54G v1 (BCM4712 cpu, no ethernet port, fccid: Linksys Q87-WRE54G)
160#define ROUTER_WAP54G_V2 0x2310
161
162// ViewSonic WAPBR-100 (BCM4712 cpu, no switch, fccid: Viewsonic GSS-VS10407)
163#define ROUTER_VIEWSONIC_WAPBR_100 0x2417
164
165// Dell TrueMobile 2300 v1 (BCM4702 cpu, BCM5325 switch, mini pci radio,
166// fccid: Gemtek MXF-R920401G)
167#define ROUTER_DELL_TRUEMOBILE_2300 0x2510
168
169// Dell TrueMobile 2300 v2 (BCM4712 cpu, ADM6996 switch, fccid: Gemtek
170// MXF-R921212G)
171// Sparklan WX-6615GT (4712 cpu, ADM6996 switch, fccid: Gemtek MXF-R930116G)
172#define ROUTER_DELL_TRUEMOBILE_2300_V2 0x2610
173
174// Fonera (Atheros SoC, no switch, fccid: Accton HED-FON2100)
175#define ROUTER_BOARD_FONERA 0x2701
176
177// Buffalo WHR-HP-AG108 (Atheros A+G, Kendin KS8895XA switch, fccid: Buffalo
178// FDI-09101540-0)
179#define ROUTER_BOARD_WHRAG108 0x2801
180
181// swapped phy definition
182#define ROUTER_BOARD_GATEWORX_SWAP 0x290f
183
184// Netgear WNR834Bv1 (BCM4704 cpu, BCM5325 switch, cardbus radio, fccid:
185// Netgear PY306100032)
186#define ROUTER_NETGEAR_WNR834B 0x2a17
187
188// swapped phy definition and Kendin switch
189#ifdef HAVE_MI424WR
190#define ROUTER_BOARD_GATEWORX_GW2345 0x2b0a
191#else
192#define ROUTER_BOARD_GATEWORX_GW2345 0x2b0f
193#endif
194// Linksys WRT54G3G (BCM4712 cpu, 5325E switch, PCMCIA slot, fccid: Linksys
195// Q87-WRT54G3G)
196#define ROUTER_WRT54G3G 0x2c16
197
198// Sitecom WL-105(b) (BCM4702 cpu, no switch, fccid: Gemtek MXF-A910910AB -
199// no A-band)
200#define ROUTER_SITECOM_WL105B 0x2d10
201
202// Linksys WRT150N (BCM4704 cpu, BCM5325F switch, fccid: Linksys Q87-WRT150N)
203#define ROUTER_WRT150N 0x2e16
204
205// ?
206#define ROUTER_BOARD_LS2 0x2f01
207
208// Buffalo WAPM-HP-AM54G54 (only available on japanese market, dual radio 2.4
209// and 5 GHz Broadcom)
210#define ROUTER_BUFFALO_WAPM_HP_AM54G54 0x3005
211
212// Buffalo WLAH-G54 (only available on japanese market, single radio 2.4 ghz)
213#define ROUTER_BUFFALO_WLAH_G54 0x3104
214
215// Buffalo WZR-G144HH (only available on japanese market, 802.11n, Gigabit
216// switch. Similar to WRT350N)
217#define ROUTER_BUFFALO_WZRG144NH 0x3217
218
219// U.S.Robotics USR5430 bridge (BCM4712 cpu, no switch, fccid: Gemtek
220// MXF-EB921201G)
221#define ROUTER_USR_5430 0x3310
222
223// U.S.Robotics USR5432 bridge (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
224// U.S.Robotics USR5441 range-ext. (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
225// U.S.Robotics USR5451 AP (BCM5350 cpu, 1 port, fccid: Universal Scientific Industrial Co. IXM-APGBR02)
226// U.S.Robotics USR5461 router (BCM5350 cpu, fccid: Universal Scientific Industrial Co. IXM-RTGBR02)
227#define ROUTER_USR_5461 0x340f
228
229// Meraki Mini (Atheros SoC, no switch, fccid: Meraki UDX-MERAKI-MINI)
230#define ROUTER_BOARD_MERAKI 0x350f
231
232// Asus WL300g (BCM4702 cpu, no switch, fccid: Asus MSQWL300G)
233// Asus WL500g (BCM4702 cpu, fccid: Asus MSQWL500G)
234#define ROUTER_ASUS_WL500G 0x3606
235
236// ?
237// #ifdef HAVE_ALPHA
238// #define ROUTER_BOARD_CA8 0x3706
239// #else
240#define ROUTER_BOARD_CA8 0x3706
241// #endif
242
243// Fonera (Atheros SoC,...)
244#define ROUTER_BOARD_FONERA2200 0x3801
245
246// ?
247#define ROUTER_BOARD_TW6600 0x3901
248
249// Atheros PB42 prototype (AR5416 MIMO Wifi, 400 Mhz Mips CPU, 32 MB RAM)
250#define ROUTER_BOARD_PB42 0x3a01
251
252// Asus WL-500W (MIMO, 4704 cpu, fccid: Asus MSQWL500W)
253#define ROUTER_ASUS_WL500W 0x3b06
254
255// Asus WL550gE (BCM5352E cpu, fccid: Asus MSQWL550GE)
256// Asus WL320gP/gE (BCM5352E cpu, 1 LAN only, fccid: Asus MSQWL320GP / MSQWL320GE)
257#define ROUTER_ASUS_WL550GE 0x3c01
258
259// Sitecom WL-111 (BCM4702 cpu, fccid: MXF-R920220G)
260#define ROUTER_SITECOM_WL111 0x3d10
261
262// D-Link DIR-320 (BCM5354 cpu, fccid: D Link KA2DIR320A1)
263#define ROUTER_DLINK_DIR320 0x3e17
264
265// Linksys WTR54GS travel router (BCM5350 cpu, 2 ports, fccid: v1, v2:
266// Linksys Q87-WTR54GS; v2.1 Q87-WTR54GSV21)
267#define ROUTER_LINKSYS_WTR54GS 0x3f13
268
269// Belkin F5D7230 v2000 (BCM4712 cpu, 5325E switch, serial flash, fccid:
270// Belkin K7SF5D7234A)
271#define ROUTER_BELKIN_F5D7230_V2000 0x400f
272
273// Belkin F5D7231-4 v1212UK (BCM5352E cpu, fccid: Askey H8NRT2406W)
274#define ROUTER_BELKIN_F5D7231 0x410f
275
276// Linksys WAP54G v3, WAP54G v3.1 (BCM5352E cpu, fccid: Linksys Q87-WAP54GV3,
277// Q87-WAP54GV31)
278#define ROUTER_WAP54G_V3 0x4210
279
280// Asus WL-520G (WL-500G-C in China) (BCM5350 cpu, fccid: Asus MSQWL520G)
281#define ROUTER_ASUS_WL520G 0x430f
282
283// Asus WL-520GU / WL-520GC (BCM5354 cpu, fccid: Asus MSQWL520GUGC)
284#define ROUTER_ASUS_WL520GUGC 0x4412
285
286// Netgear WG602 v3 (BCM5350 cpu, fccid: Netgear PY3WG602V3)
287#define ROUTER_NETGEAR_WG602_V3 0x4511
288
289// Netgear WG602 v4 (BCM5354 cpu, fccid: Netgear PY3WG602V4)
290#define ROUTER_NETGEAR_WG602_V4 0x4617
291
292// Linksys WRT600N (BCM4705 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
293// Broadcom, fccid: Linksys Q87-WRT600NV1, Q87-WRT600NV11)
294#define ROUTER_WRT600N 0x4717
295
296// Linksys WRH54G (BCM5354 cpu, fccid: Linksys Q87-WRH54G)
297#define ROUTER_LINKSYS_WRH54G 0x4816
298
299// Linksys WRT150N v1.1 (BCM4704 cpu, BCM5325F switch, fccid: Linksys
300// Q87-WRT150NV11)
301#define ROUTER_WRT150NV11 0x4916
302
303// Linksys WRT150N v1.2 (fccid: Linksys ?)
304#define ROUTER_WRT150NV12 0x4a16
305
306// Linksys WRT160N v1 (BCM4703 cpu, ?? switch, fccid: Linksys Q87-WRT160N)
307#define ROUTER_WRT160N 0x4b16
308
309// Linksys WRT300N v1.1 (BCM4705 cpu, 5325 switch, fccid: Linksys
310// Q87-WRT300NV11)
311#define ROUTER_WRT300NV11 0x4c16
312
313// Linksys WRT310N v1 (BCM4705 cpu, fccid: Linksys Q87-WRT310N)
314#define ROUTER_WRT310N 0x4d16
315
316// Linksys WRT310N v2 (BCM4716 cpu, fccid: Linksys Q87-WRT310NV2)
317// Linksys M20 (BCM4716 cpu, fccid: Linksys Q87-M20)
318#define ROUTER_WRT310NV2 0x4e16
319
320// D-Link DIR330 (BCM5836 cpu, fccid: D Link KA2DIR330A1)
321#define ROUTER_DLINK_DIR330 0x4f13
322
323// Netgear WNDR3300 (BCM4704 cpu, BCM5325F switch, dual radio 2.4-N and 5 GHz
324// Broadcom, fccid: Netgear PY307300072)
325#define ROUTER_NETGEAR_WNDR3300 0x5016
326
327// Asus WL-330GE (BCM5354, no switch, fccid: MSQWL330GE)
328#define ROUTER_ASUS_330GE 0x5112
329
330// Linksys WRT54Gv8.1 (BCM5354 cpu, fccid: Linksys Q87-WRT54GV81)
331#define ROUTER_WRT54G_V81 0x5217
332
333// Netgear WGR614L (BCM5354 cpu, 4M serial flash - 16M ram, fccid: Netgear PY306400057)
334// Netgear WGR614 v8 - same -
335// Netgear WGR614 WW - same -
336#define ROUTER_NETGEAR_WGR614L 0x5317
337
338// Netgear WGR614L (BCM5354 cpu, 2M serial flash - 8M ram, fccid: Netgear PY306400057)
339#define ROUTER_NETGEAR_WGR614V9 0x5417
340
341// Netgear WNR834Bv2 (BCM4704 cpu, BCM5325 switch, fccid: Netgear
342// PY307100061)
343#define ROUTER_NETGEAR_WNR834BV2 0x5516
344
345// Asus WL-500g Premium v2 (BCM5354 cpu, fccid: Asus MSQWL500GPV2)
346#define ROUTER_ASUS_WL500G_PRE_V2 0x5612
347
348// Wistron CA8-PRO (RDAA-81)
349#define ROUTER_BOARD_CA8PRO 0x5706
350
351// Askey board RT2205D-D56 / RT2206D-D56 (BCM4704 cpu, mini-pci)
352// Belkin MIMO F5D8230_v2 or F5D8230_v1001ea (fccid: Airgo networks Inc.
353// SA3-AGN0901AP0100)
354#define ROUTER_ASKEY_RT220XD 0x5817
355
356// U.S.Robotics USR5455 (BCM5354 cpu, no switch, fccid: Universal Scientific
357// Industrial Co. IXM-APGBR03)
358// U.S.Robotics USR5465 (BCM5354 cpu, fccid: Universal Scientific Industrial
359// Co. IXM-RTGBR03)
360#define ROUTER_USR_5465 0x590f
361
362#define ROUTER_ALLNET01 0x5a13
363
364// Linksys WRT610N (BCM4785 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
365// Broadcom, fccid: Linksys Q87-WRT610N)
366#define ROUTER_WRT610N 0x5b16
367
368// Linksys WRT610Nv2 (BCM4718 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
369// Broadcom, fccid: Linksys Q87-WRT610NV2)
370// Linksys E3000 (BCM4718 cpu, Gigabit switch, dual radio 2.4 and 5 GHz
371// Broadcom, fccid: Linksys Q87-E3000)
372#define ROUTER_WRT610NV2 0x5c16
373
374// Belkin F5D7230 v3000 (BCM5350 cpu, flash ?? , fccid: Belkin PD5F5D72304)
375#define ROUTER_BELKIN_F5D7230_V3000 0x6011
376
377#ifdef HAVE_WMBR_G300NH
378#define ROUTER_BOARD_DANUBE 0x6101
379#elif HAVE_VF803
380#define ROUTER_BOARD_DANUBE 0x6101 //dummy. gpio 28
381#else
382#define ROUTER_BOARD_DANUBE 0x610f
383#endif
384#define ROUTER_BOARD_STORM 0x6201       // value 1 is a fake to enable reset button code. real gpio is 60
385
386#define ROUTER_BOARD_ADM5120 0x630f
387
388#define ROUTER_BUFFALO_WCAG 0x6404
389
390#define ROUTER_BOARD_WHRG300N 0x651a
391
392#define ROUTER_BOARD_RT2880 0x660f
393
394// Wistron RCAA01 (RCAA-01)
395#define ROUTER_BOARD_RCAA01 0x6706
396
397// Wistron RDAT81 (RDAT81)
398#define ROUTER_BOARD_RDAT81 0x6806
399
400// Senao ECB9750
401#define ROUTER_BOARD_ECB9750 0x691b
402
403// Compex WP54G (and compatible)
404#define ROUTER_BOARD_WP54G 0x7004
405
406// Compex NP28G (and compatible)
407#define ROUTER_BOARD_NP28G 0x710f
408
409// Belkin F5D7231-4 v2000 (BCM5352E cpu, fccid: Belkin K7SF5D7231B)
410#define ROUTER_BELKIN_F5D7231_V2000 0x7213
411
412#define ROUTER_BOARD_ESR6650 0x731a
413
414// Netgear WNR3500L (BCM4718A cpu, 8MB serial flash, USB, Gigabit switch, fccid: Netgear PY308400093)
415// Netgear WNR3500v2 - same - half flash
416#define ROUTER_NETGEAR_WNR3500L 0x7414  //(18)
417
418// Linksys WRT320N (BCM4717A cpu, 8MB serial flash, Gigabit switch, fccid: Linksys Q87-WRT320N)
419// Linksys E2000 (BCM4717A cpu, 8MB serial flash, Gigabit switch, fccid: Linksys Q87-E2000)
420#define ROUTER_WRT320N 0x7518
421
422#define ROUTER_BOARD_ESR9752 0x7610
423
424#define ROUTER_BOARD_DIR600B 0x771a
425
426#define ROUTER_BOARD_ACXNR22 0x781a
427
428#define ROUTER_BOARD_AR670W 0x7919
429
430#define ROUTER_BOARD_EAP9550 0x8010
431
432#define ROUTER_BOARD_GATEWORX_GW2369 0x8103
433
434// Linksys WRT160Nv3 (BCM4716A cpu, 4MB serial flash, 5325E switch, fccid: Linksys Q87-WRT160NV3)
435// CSE31 ports [W-1-2-3-4], CSE41 and CSE51 ports [W-4-3-2-1]
436// Cisco Valet M10 (BCM4716A cpu, 4MB serial flash, 5325E switch, fccid: Linksys Q87-M10)
437// Linksys E1000 v1 (BCM4716A cpu, 4MB serial flash, 5325E switch, fccid: Linksys Q87-E1000)
438#define ROUTER_WRT160NV3 0x8216
439
440#define ROUTER_BOARD_BS2M 0x831c        //bullet 2m
441#define ROUTER_BOARD_BS5M 0x841c        //bullet 5m
442#define ROUTER_BOARD_R2M 0x851c //rocket 2m
443#define ROUTER_BOARD_R5M 0x861c //rocket 5m
444#define ROUTER_BOARD_NS2M 0x871c        //nanostation 2m
445#define ROUTER_BOARD_NS5M 0x881c        //nanostation 5m
446
447// Asus RT-N10 (BCM5356 cpu, 4MB serial flash / 16MB ram, fccid: Asus MSQ-RTN10)
448#define ROUTER_ASUS_RTN10 0x8913
449
450// Asus RT-N12 (BCM4716B0 cpu, 4MB serial flash / 32MB ram, 5325E switch, fccid: Asus MSQ-RTN12)
451#define ROUTER_ASUS_RTN12 0x8a11
452
453// Asus RT-N16 (BCM4718A cpu, 32MB flash / 128MB ram, BCM53115 giga switch, fccid: Asus MSQRTN16)
454#define ROUTER_ASUS_RTN16 0x8b16
455
456#define ROUTER_BOARD_BR6574N 0x8c1a
457
458#define ROUTER_BOARD_WHRHPGN 0x8d1b     //Buffalo WHR HP GN AR7240 / 4 MB Flash / 32 MB RAM
459
460// Dynex DX-NRUTER (BCM4703 cpu, 4MB flash / 32MB ram, BCM5325E switch, fccid: Belkin K7SDXNRUTER)
461#define ROUTER_DYNEX_DX_NRUTER 0x8e12
462
463#define ROUTER_BOARD_OPENRISC 0x8f00
464
465#define ROUTER_BOARD_ASUS_RTN13U 0x901a
466
467// Linksys WRT160NL (Atheros 9130, 8MB flash / 32MB ram, fccid: Linksys Q87-WRT160NL)
468// Linksys E2100L (Atheros 9130, 8MB flash / 32MB ram, fccid: Linksys Q87-E2100L)
469#define ROUTER_BOARD_WRT160NL 0x9101    // fake id, reset button is gpio 21
470
471// NetCore NW618 / Rosewill RNX-GX4 (BCM5354 cpu, 4MB serial flash / 16MB ram, fccid: Rosewill W6RRNX-GX4)
472#define ROUTER_NETCORE_NW618 0x9216
473
474#define ROUTER_BOARD_W502U 0x931a
475
476#define ROUTER_BOARD_DIR615D 0x941a
477
478#define ROUTER_BOARD_AR690W 0x9519
479
480#define ROUTER_BOARD_RB600 0x960f
481
482// Netgear WNR2000 v2 (BCM4716B0 cpu, 4MB serial flash / 32MB ram, fccid: Netgear PY309100105)
483#define ROUTER_NETGEAR_WNR2000V2 0x9711
484
485#define ROUTER_BOARD_GW2388 0x980f
486
487// Belkin Share Max F5D8235v3 (BCM53115 giga switch, BCM4718 cpu, 8MB flash / 32MB ram, fccid: Belkin K7SF5D8235V3)
488#define ROUTER_BELKIN_F5D8235V3 0x9916
489
490#define ROUTER_BOARD_GW2380 0x9a0f
491
492// Belkin Share Max F7D3301v1 (BCM53115 giga switch, BCM4718 cpu, 8MB flash / 64MB ram, fccid: Belkin K7SF7D3301V1)
493// Belkin Share Max N300 F7D7301v1  - same
494#define ROUTER_BELKIN_F7D3301 0x9b16
495
496// Belkin Share F7D3302v1 (BCM4718 cpu, BCM5325 switch, 8MB flash / 64MB ram, fccid: Belkin K7SF7D3302V1)
497// Belkin Share N300 F7D7302v1  - same
498#define ROUTER_BELKIN_F7D3302 0x9c16
499
500// Belkin Play Max F7D4301v1 (dual radio, BCM53115 giga switch, BCM4718 cpu, 8MB flash / 64MB ram, fccid: Belkin K7SF7D4301V1)
501// Belkin Play N600 HD F7D8301v1 - same
502#define ROUTER_BELKIN_F7D4301 0x9d16
503
504// Belkin Play F7D4302v1 (dual radio, BCM5325 switch, BCM4718 cpu, 8MB flash / 64MB ram, fccid: Belkin K7SF7D4302V1)
505// Belkin Play N600 F7D8302v1 - same
506#define ROUTER_BELKIN_F7D4302 0x9e16
507
508// Asus RT-N10+
509#define ROUTER_ASUS_RTN10PLUS 0x9f1a
510
511// Linksys E1000 v2 (BCM5357 cpu, 4MB serial flash, 32 MB ram, fccid: Linksys Q87-E1000V2)
512// Linksys E1000 v2.1 (BCM5357 cpu, 4MB serial flash, 32 MB ram, fccid: Linksys Q87-E1000V21)
513#define ROUTER_LINKSYS_E1000V2 0xa01a
514
515// Repotec RP-WR5422
516#define ROUTER_BOARD_WR5422 0xa11a
517
518// Asus WL-700ge (BCM4780 cpu, 2MB flash, 64MB ram, BCM5325E switch)
519#define ROUTER_ASUS_WL700GE 0xa217
520
521#define ROUTER_BOARD_F5D8235 0xa31a
522
523// Asus RT-15N
524#define ROUTER_BOARD_RT15N 0xa410c
525
526#define ROUTER_BOARD_TECHNAXX 0xa50f
527
528#define ROUTER_BOARD_NEPTUNE 0xa61a
529
530#define ROUTER_ASUS_RTN12B 0xa7116
531
532// Linksys E4200 (dual radio, BCM53115 giga switch, BCM4718 cpu, 16MB flash / 64MB ram, fccid: Linksys Q87-E4200) >_60K nvram_<
533#define ROUTER_LINKSYS_E4200 0xa816
534
535#define ROUTER_BOARD_RT3352 0xa91a // concept
536
537// Asus RT-N10U (BCM5358 cpu, 8MB serial flash / 32MB ram, USB 2.0)
538#define ROUTER_ASUS_RTN10U 0xaa115
539
540// Linksys E3200 (dual radio, BCM53125 giga switch, BCM5357 cpu, 16MB flash / 64MB ram, fccid: Linksys Q87-E3200) >_60K nvram_<
541#define ROUTER_LINKSYS_E3200 0xab15
542
543// Netgear WNDR4000 (dual radio, BCM53115 giga switch, BCM4718 cpu, 8MB flash / 64MB ram, fccid: Netgear PY310400144) >_64K nvram_<
544#define ROUTER_NETGEAR_WNDR4000 0xac13
545
546#define ROUTER_NETCORE_NW715P 0xad0f
547
548#define ROUTER_BOARD_UNIFI 0xae1c       //bullet 2m
549
550#define ROUTER_ASUS_RTN66 0xaf0f
551                                   
552#define ROUTER_ASUS_RTN53 0xb013        //rtn53
553
554// Netgear WNDR3400 (dual radio, BCM5325E switch, BCM4718 cpu, 8MB flash / 64MB ram, fccid: Netgear PY309300116) >_64K nvram_<
555#define ROUTER_NETGEAR_WNDR3400 0xb014
556
557
558#define NVROUTER "DD_BOARD"
559
560static inline int startswith(char *source, char *cmp)
561{
562        return !strncmp(source, cmp, strlen(cmp));
563}
564
565extern char *getBridge(char *ifname);
566extern char *getRealBridge(char *ifname);
567extern char *getSTA(void);
568extern char *getWET(void);
569extern int contains(const char *string, char value);
570extern int getcpurev(void);
571extern int nvram_used(int *space);
572extern int cpu_plltype(void);
573extern int check_vlan_support(void);
574
575extern int remove_from_list(const char *name, char *list, int listsize);
576extern int add_to_list(const char *name, char *list, int listsize);
577extern char *find_in_list(const char *haystack, const char *needle);
578extern int startswith(char *source, char *cmp);
579extern int count_occurences(char *source, int cmp);
580extern int pos_nthoccurence(char *source, int cmp, int which);
581extern char *substring(int start, int stop, const char *src, char *dst);
582extern void strtrim_right(char *p, int c);
583extern unsigned int daysformonth(unsigned int month, unsigned int year);
584extern int weekday(int month, int day, int year);
585extern int getRouterBrand(void);
586extern char *getRouter(void);
587extern int diag_led(int type, int act);
588extern int C_led(int i);
589extern int get_single_ip(char *ipaddr, int which);
590extern char *get_mac_from_ip(char *ip);
591extern struct dns_lists *get_dns_list(void);
592extern int dns_to_resolv(void);
593extern char *get_wan_face(void);
594
595extern int check_wan_link(int num);
596extern char *get_wan_ipaddr(void);
597extern char *get_complete_ip(char *from, char *to);
598extern char *get_complete_lan_ip(char *ip);
599extern int get_int_len(int num);
600extern int file_to_buf(char *path, char *buf, int len);
601extern int buf_to_file(char *path, char *buf);
602extern pid_t *find_pid_by_name(char *pidName);
603extern int find_pid_by_ps(char *pidName);
604extern int *find_all_pid_by_ps(char *pidName);
605extern char *find_name_by_proc(int pid);
606extern int get_ppp_pid(char *file);
607extern long convert_ver(char *ver);
608extern int check_flash(void);
609extern int check_action(void);
610extern int check_now_boot(void);
611extern int check_hw_type(void);
612extern int is_exist(char *filename);
613extern void set_ip_forward(char c);
614struct mtu_lists *get_mtu(char *proto);
615extern void set_host_domain_name(void);
616
617extern void encode(char *buf, int len);
618extern void decode(char *buf, int len);
619extern char *zencrypt(char *passwd);
620
621extern void getLANMac(char *newmac);
622extern void getWirelessMac(char *newmac);
623extern void getWANMac(char *newmac);
624extern char *cpustring(void);
625extern int isap8x(void);
626extern int led_control(int type, int act);
627enum { LED_POWER, LED_DIAG, LED_DMZ, LED_CONNECTED, LED_DISCONNECTED, LED_BRIDGE, LED_VPN,
628        LED_SES, LED_SES2, LED_WLAN0, LED_WLAN1, LED_USB, LED_SEC0, LED_SEC1, USB_POWER
629};
630enum { LED_ON, LED_OFF, LED_FLASH };
631
632#ifdef CDEBUG
633extern int mcoreleft(void);
634extern int coreleft(void);
635static void cdebug(char *function)
636{
637        // FILE *in = fopen ("/tmp/console.log", "a");
638        fprintf(stderr, "free ram in %s = %d (malloc %d)\n", function,
639                coreleft(), mcoreleft());
640        // fclose (in);
641}
642
643#else
644#define cdebug(a)
645#endif
646extern int first_time(void);
647
648extern int set_register_value(unsigned short port_addr,
649                              unsigned short option_content);
650extern unsigned long get_register_value(unsigned short id, unsigned short num);
651// extern int sys_netdev_ioctl(int family, int socket, char *if_name, int
652// cmd, struct ifreq *ifr);
653
654int ct_openlog(const char *ident, int option, int facility, char *log_name);
655void ct_syslog(int level, int enable, const char *fmt, ...);
656void ct_logger(int level, const char *fmt, ...);
657struct wl_assoc_mac *get_wl_assoc_mac(int instance, int *c);
658
659extern struct detect_wans *detect_protocol(char *wan_face, char *lan_face,
660                                           char *type);
661
662enum { WL = 0,
663        DIAG = 1,
664        // SES_LED1 = 2,
665        // SES_LED2 = 3,
666        SES_BUTTON = 4,
667        DMZ = 7
668};
669
670enum { START_LED, STOP_LED, MALFUNCTION_LED };
671
672typedef enum { ACT_IDLE,
673        ACT_TFTP_UPGRADE,
674        ACT_WEB_UPGRADE,
675#ifdef HAVE_HTTPS
676        ACT_WEBS_UPGRADE,
677#endif
678        ACT_SW_RESTORE,
679        ACT_HW_RESTORE,
680        ACT_ERASE_NVRAM,
681        ACT_NVRAM_COMMIT,
682        ACT_UNKNOWN
683} ACTION;
684
685enum { UNKNOWN_BOOT = -1, PMON_BOOT, CFE_BOOT };
686
687enum { BCM4702_CHIP, BCM4712_CHIP, BCM5325E_CHIP, BCM5350_CHIP, BCM5365_CHIP,
688        BCM4704_BCM5325F_CHIP,
689        BCM5352E_CHIP, BCM4712_BCM5325E_CHIP, BCM4704_BCM5325F_EWC_CHIP,
690        BCM4705_BCM5397_EWC_CHIP, BCM5354G_CHIP, BCM4705L_BCM5325E_EWC_CHIP,
691        BCM4705G_BCM5395S_EWC_CHIP,
692        NO_DEFINE_CHIP
693};
694
695enum { FIRST, SECOND };
696
697enum { SYSLOG_LOG = 1, SYSLOG_DEBUG, CONSOLE_ONLY, LOG_CONSOLE, DEBUG_CONSOLE };
698
699#define ACTION(cmd)     buf_to_file(ACTION_FILE, cmd)
700
701struct dns_lists {
702        int num_servers;
703        char dns_server[4][16];
704};
705
706#define NOT_USING       0
707#define USING           1
708
709struct wl_assoc_mac {
710        char mac[18];
711};
712
713struct mtu_lists {
714        char *proto;            /* protocol */
715        char *min;              /* min mtu */
716        char *max;              /* max mtu */
717};
718
719struct detect_wans {
720        int proto;
721        int count;
722        char *name;
723        char desc[1024];
724};
725
726#define PROTO_DHCP      0
727#define PROTO_STATIC    1
728#define PROTO_PPPOE     2
729#define PROTO_PPTP      3
730#define PROTO_L2TP      4
731#define PROTO_HB        5
732#define PROTO_ERROR     -1
733
734#define PPP_PSEUDO_IP   "10.64.64.64"
735#define PPP_PSEUDO_NM   "255.255.255.255"
736#define PPP_PSEUDO_GW   "10.112.112.112"
737
738#define PING_TMP        "/tmp/ping.log"
739// #define TRACEROUTE_TMP "/tmp/traceroute.log"
740
741#define RESOLV_FILE     "/tmp/resolv.conf"
742#define RESOLV_FORW     "/tmp/resolv.dnsmasq"
743#define HOSTS_FILE      "/tmp/hosts"
744
745#define LOG_FILE        "/var/log/mess"
746
747#define ACTION_FILE     "/tmp/action"
748
749#define split(word, wordlist, next, delim) \
750        for (next = wordlist, \
751             strncpy(word, next, sizeof(word)), \
752             word[(next=strstr(next, delim)) ? strstr(word, delim) - word : sizeof(word) - 1] = '\0', \
753             next = next ? next + sizeof(delim) - 1 : NULL ; \
754             strlen(word); \
755             next = next ? : "", \
756             strncpy(word, next, sizeof(word)), \
757             word[(next=strstr(next, delim)) ? strstr(word, delim) - word : sizeof(word) - 1] = '\0', \
758             next = next ? next + sizeof(delim) - 1 : NULL)
759
760#define STRUCT_LEN(name)    sizeof(name)/sizeof(name[0])
761
762#define printHEX(str,len) { \
763        int i; \
764        for (i=0 ; i<len ; i++) { \
765                printf("%02X ", (unsigned char)*(str+i)); \
766                if(((i+1)%16) == 0) printf("- "); \
767                if(((i+1)%32) == 0) printf("\n"); \
768        } \
769        printf("\n\n"); \
770}
771
772#define printASC(str,len) { \
773        int i; \
774        for (i=0 ; i<len ; i++) { \
775                printf("%c", (unsigned char)*(str+i)); \
776                if(((i+1)%16) == 0) printf("- "); \
777                if(((i+1)%32) == 0) printf("\n"); \
778        } \
779        printf("\n\n"); \
780}
781
782void set_gpio(int gpio, int value);
783
784int get_gpio(int gpio);
785
786#ifdef HAVE_OLED
787void lcdmessage(char *message);
788void initlcd(void);
789void lcdmessaged(char *dual, char *message);
790#else
791#define initlcd()
792#define lcdmessage(a)
793#define lcdmessaged(a,b)
794#endif
795
796#ifdef HAVE_AQOS
797extern void add_usermac(char *mac, int idx, char *upstream, char *downstream, char *lanstream);
798extern void add_userip(char *ip, int idx, char *upstream, char *downstream, char *lanstream);
799#endif
800
801void getHostName(char *buf, char *ip);
802int ishexit(char c);
803int haswifi(void);
804int sv_valid_hwaddr(char *value);
805int sv_valid_ipaddr(char *value);
806int sv_valid_range(char *value, int low, int high);
807int sv_valid_statics(char *value);
808void get_network(char *ipaddr, char *netmask);
809void get_broadcast(char *ipaddr, char *netmask);
810int route_manip(int cmd, char *name, int metric, char *dst, char *gateway,
811                char *genmask);
812int route_add(char *name, int metric, char *dst, char *gateway, char *genmask);
813int route_del(char *name, int metric, char *dst, char *gateway, char *genmask);
814extern char *psname(int pid, char *buffer, int maxlen);
815extern int pidof(const char *name);
816extern int killall(const char *name, int sig);
817extern int getifcount(const char *ifprefix);
818extern int getIfList(char *buffer, const char *ifprefix);
819extern void getIfLists(char *eths, int size);
820extern int ifexists(const char *ifname);
821extern void getinterfacelist(const char *ifprefix, char *buffer);
822extern int count_processes(char *pidName);
823#ifdef HAVE_ATH9K
824extern int is_ath9k(char *prefix);
825extern int getath9kdevicecount(void);
826#endif
827
828
829int isGrep(char *string, char *cmp);
830int softkill(char *name);
831
832int getmask(char *netmask);
833int doMultiCast(void);
834int getMTD(char *name);
835void getIPFromName(char *name, char *ip);
836
837#define DEFAULT_USER "bJ/GddyoJuiU2"
838#define DEFAULT_PASS "bJz7PcC1rCRJQ"
839
840#define MAX_WDS_DEVS 10
841
842#define OLD_NAME_IP     "/tmp/.old_name_ip"
843
844#ifndef MAX_LEASES
845#define MAX_LEASES 254
846#endif
847
848struct wl_client_mac {
849        char hostname[32];
850        char ipaddr[20];
851        char hwaddr[20];
852        int status;             // 0:offline 1:online
853        int check;
854};
855
856extern int dd_timer_delete(timer_t timer);
857extern int dd_timer_create(clockid_t clock_id,  /* clock ID (always CLOCK_REALTIME) */
858                           struct sigevent *evp,        /* user event handler */
859                           timer_t * pTimer     /* ptr to return value */
860    );
861
862int endswith(char *str, char *cmp);
863
864int isListed(char *listname, char *value);
865void addList(char *listname, char *value);
866int searchfor(FILE * fp, char *str, int scansize);
867int insmod(char *module);
868void rmmod(char *module);
869
870int nvram_backup(char *filename);
871
872int nvram_restore(char *filename);
873
874void nvram_clear(void);
875int nvram_critical(char *name);
876
877int do80211priv(const char *ifname, int op, void *data, size_t len);
878int getsocket(void);
879void closesocket(void);
880int isEMP(char *ifname);
881int isXR36(char *ifname);
882char *get3GControlDevice(void);
883char *getIsoName(const char *country);
884int has_gateway(void);          // return 1 if nat/gateway mode is enabled for wan
885#if defined(HAVE_RT2880) || defined(HAVE_RT61)
886char *getRADev(char *prefix);
887#endif
888
889#ifndef HAVE_SYSLOG
890#define dd_syslog(a, args...) do { } while(0);
891#else
892#define dd_syslog(a, args...) syslog( a,## args);
893#endif
894#endif
Note: See TracBrowser for help on using the repository browser.