1/*
2 * Router rc control script
3 *
4 * Copyright (C) 2009, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11 *
12 * $Id: rc.h 321991 2012-03-19 07:34:43Z $
13 */
14
15#ifndef _rc_h_
16#define _rc_h_
17
18#include <bcmconfig.h>
19#include <netinet/in.h>
20#ifdef __CONFIG_BUSYBOX__
21#include <Config.h>
22#endif
23
24
25#define IFUP (IFF_UP | IFF_RUNNING | IFF_BROADCAST | IFF_MULTICAST)
26
27#define sin_addr(s) (((struct sockaddr_in *)(s))->sin_addr)
28
29#define MAX_NO_BRIDGE 1     /* Foxconn modified pling 05/16/2007, 2->1 */
30
31#ifdef VLAN_SUPPORT
32#define C_MAX_TOKEN_SIZE        128
33#define C_MAX_VLAN_RULE     10
34typedef struct vlan_rule_t{
35    char vlan_name[C_MAX_VLAN_RULE][C_MAX_TOKEN_SIZE];
36    char vlan_id[6];
37    char vlan_prio[4];
38    char vlan_ports[10];
39    char enable_rule[4];
40}vlan_rule;
41#endif
42/* foxconn modified start, zacker, 01/13/2012, @iptv_igmp */
43#if defined(CONFIG_RUSSIA_IPTV)
44#undef MAX_NO_BRIDGE
45#define MAX_NO_BRIDGE 10		/*Foxconn modified, edward zhang, 2013/07/03, change 2->10 for vlan support*/
46
47#define NVRAM_IPTV_INTF         "iptv_interfaces"
48#define NVRAM_IPTV_ENABLED      "iptv_enabled"
49#define IPTV_LAN1               0x01
50#define IPTV_LAN2               0x02
51#define IPTV_LAN3               0x04
52#define IPTV_LAN4               0x08
53#define IPTV_WLAN1              0x10
54#define IPTV_WLAN2              0x20
55#if defined(R8000)
56#define IPTV_WLAN3              0x40
57#define IPTV_WLAN_GUEST1              0x80
58#define IPTV_WLAN_GUEST2              0x100
59#define IPTV_WLAN_GUEST3              0x200
60#define IPTV_WLAN_ALL           (IPTV_WLAN1 | IPTV_WLAN2 | IPTV_WLAN3)   //0x30
61#define IPTV_MASK               (IPTV_LAN1 | IPTV_LAN2 | IPTV_LAN3 | IPTV_LAN4 | IPTV_WLAN1 | IPTV_WLAN2 | IPTV_WLAN3 | IPTV_WLAN_GUEST1 | IPTV_WLAN_GUEST2 | IPTV_WLAN_GUEST3)   //0x3F
62#else
63#define IPTV_WLAN_GUEST1              0x40
64#define IPTV_WLAN_GUEST2              0x80
65#define IPTV_WLAN_ALL           (IPTV_WLAN1 | IPTV_WLAN2)   //0x30
66#define IPTV_MASK               (IPTV_LAN1 | IPTV_LAN2 | IPTV_LAN3 | IPTV_LAN4 | IPTV_WLAN1 | IPTV_WLAN2 | IPTV_WLAN_GUEST1 | IPTV_WLAN_GUEST2)   //0x3F
67#endif
68
69#define VCFG_PAGE               0xFFFF
70#define VCFG_REG                0xFD
71#define MAC_BYTE0               0x01
72#define MAC_BYTE1               0x02
73#define MAC_BYTE2               0x03
74#define MAC_BYTE3               0x04
75#define MAC_BYTE4               0x05
76#define MAC_BYTE5               0x06
77#define SET_VLAN                0x80
78#endif /* CONFIG_RUSSIA_IPTV */
79/* foxconn modified end, zacker, 01/13/2012, @iptv_igmp */
80/* Foxconn add start, Edward zhang, 09/14/2012, @add ARP PROTECTION support for RU SKU*/
81#define NVRAM_ARP_ENABLED        "arp_enable"
82#define C_MAX_TOKEN_SIZE        128
83#define C_MAX_RESERVED_IP       64
84/* Foxconn add end, Edward zhang, 09/14/2012, @add ARP PROTECTION support for RU SKU*/
85#ifdef LINUX26
86#define AGLOG_MAJOR_NUM             123
87#define WPS_LED_MAJOR_NUM           253
88#endif /* LINUX26 */
89#ifdef BCMQOS
90extern int start_iQos(void);
91extern void stop_iQos(void);
92extern int add_iQosRules(char *pcWANIF);
93extern void del_iQosRules(void);
94extern int _vstrsep(char *buf, const char *sep, ...);
95#endif /* BCMQOS */
96
97/* udhcpc scripts */
98extern int udhcpc_wan(int argc, char **argv);
99extern int udhcpc_lan(int argc, char **argv);
100
101/* ppp scripts */
102extern int ipup_main(int argc, char **argv);
103extern int ipdown_main(int argc, char **argv);
104extern int ppp_ifunit(char *ifname);
105
106/* http functions */
107extern int http_get(const char *server, char *buf, size_t count, off_t offset);
108extern int http_post(const char *server, char *buf, size_t count);
109extern int http_stats(const char *url);
110
111/* init */
112extern int console_init(void);
113extern pid_t run_shell(int timeout, int nowait);
114extern void signal_init(void);
115extern void fatal_signal(int sig);
116
117/* interface */
118extern int ifconfig(char *ifname, int flags, char *addr, char *netmask);
119extern int ifconfig_get(char *name, int *flags, unsigned long *addr, unsigned long *netmask);
120extern int route_add(char *name, int metric, char *dst, char *gateway, char *genmask);
121extern int route_del(char *name, int metric, char *dst, char *gateway, char *genmask);
122extern void config_loopback(void);
123extern int start_vlan(void);
124extern int stop_vlan(void);
125
126/* network */
127extern void start_wl(void);
128extern void start_lan(void);
129extern void stop_lan(void);
130extern void lan_up(char *ifname);
131extern void lan_down(char *ifname);
132extern void start_wan(void);
133extern void stop_wan(void);
134extern void wan_up(char *ifname);
135extern void wan_down(char *ifname);
136extern int hotplug_usb_init(void);
137extern int hotplug_usb_power(int port, int boolOn); /* ports start from 1 */
138extern int hotplug_net(void);
139extern int hotplug_usb(void);
140extern int hotplug_block(void);
141extern int wan_ifunit(char *ifname);
142extern int wan_primary_ifunit(void);
143/* foxconn wklin added start, 10/17/2006 */
144extern void start_wlan(void);
145extern void stop_wlan(void);
146/* foxconn wklin added end, 10/17/2006 */
147/* services */
148extern int start_dhcpd(void);
149extern int stop_dhcpd(void);
150extern int start_dns(void);
151extern int stop_dns(void);
152extern int start_ntpc(void);
153extern int stop_ntpc(void);
154extern int start_eapd(void);
155extern int stop_eapd(void);
156extern int start_nas(void);
157extern int stop_nas(void);
158#ifdef __CONFIG_WAPI__
159extern int start_wapid(void);
160extern int stop_wapid(void);
161#endif /* __CONFIG_WAPI__ */
162extern int start_services(void);
163extern int stop_services(void);
164extern int start_wps(void);
165extern int stop_wps(void);
166/*
167*/
168#ifdef __CONFIG_IPV6__
169#define IPV6_6TO4_ENABLED				0x01
170#define IPV6_NATIVE_ENABLED				0x02
171
172extern int is_ipv6_enabled(void);
173extern int start_ipv6(void);
174extern int stop_ipv6(void);
175extern void add_ipv6_filter(char *wan_ifname);
176#endif /* __CONFIG_IPV6__ */
177/*
178*/
179
180/* firewall */
181#ifdef __CONFIG_NETCONF__
182extern int start_firewall(void);
183extern int stop_firewall(void);
184extern int start_firewall2(char *ifname);
185extern int stop_firewall2(char *ifname);
186#else
187/*
188#define start_firewall() do {} while (0)
189#define stop_firewall() do {} while (0)
190#define start_firewall2(ifname) do {} while (0)
191#define stop_firewall2(ifname) do {} while (0)
192 */
193extern int start_firewall(void);
194extern int stop_firewall(void);
195extern int start_firewall2(char *ifname);
196extern int stop_firewall2(char *ifname);
197#endif
198
199/* routes */
200extern int preset_wan_routes(char *ifname);
201#ifdef SAMBA_ENABLE
202extern int usb_sem_init(void);  // Foxconn added pling 07/13/2009
203#endif
204#endif /* _rc_h_ */
205