1/* 2 * Router rc control script 3 * 4 * Copyright 2005, 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,v 1.39 2005/03/29 02:00:06 honor Exp $ 13 */ 14 15#ifndef __RC_H__ 16#define __RC_H__ 17 18#define _GNU_SOURCE 19 20#include <rtconfig.h> 21#include <stdio.h> 22#include <stdlib.h> 23#include <unistd.h> 24#include <ctype.h> // !!TB 25#include <string.h> 26#include <signal.h> 27#include <syslog.h> 28#include <netinet/in.h> 29#include <fcntl.h> 30#include <net/if.h> 31#include <signal.h> 32 33#include <bcmnvram.h> 34#include <bcmparams.h> 35#include <utils.h> 36#include <shutils.h> 37#include <shared.h> 38 39#include "sysdeps.h" 40#include <linux/version.h> 41 42#define IFUP (IFF_UP | IFF_RUNNING | IFF_BROADCAST | IFF_MULTICAST) 43 44#define USBCORE_MOD "usbcore" 45#if defined (RTCONFIG_USB_XHCI) 46#if defined(RTCONFIG_ETRON_XHCI) 47#define USB30_MOD "etxhci-hcd" 48#else 49#define USB30_MOD "xhci-hcd" 50#endif 51#else 52#endif 53 54#if defined(RTN56UB1) || defined(RTN56UB2) //for MT7621 55#define USB20_MOD "xhci-hcd" 56#else 57#define USB20_MOD "ehci-hcd" 58#endif 59 60#define USBSTORAGE_MOD "usb-storage" 61#define SCSI_MOD "scsi_mod" 62#define SD_MOD "sd_mod" 63#define SG_MOD "sg" 64#ifdef LINUX26 65#define USBOHCI_MOD "ohci-hcd" 66#define USBUHCI_MOD "uhci-hcd" 67#define USBPRINTER_MOD "usblp" 68#define SCSI_WAIT_MOD "scsi_wait_scan" 69#define USBFS "usbfs" 70#else 71#define USBOHCI_MOD "usb-ohci" 72#define USBUHCI_MOD "usb-uhci" 73#define USBPRINTER_MOD "printer" 74#define USBFS "usbdevfs" 75#endif 76 77#ifdef RTCONFIG_IPV6 78extern char wan6face[]; 79#endif 80 81/* services.c */ 82extern int g_reboot; 83extern int wan_phyid; 84 85#ifdef RTCONFIG_BCMARM 86#ifndef LINUX_KERNEL_VERSION 87#define LINUX_KERNEL_VERSION LINUX_VERSION_CODE 88#endif 89 90static inline int before(int ver1, int ver2) 91{ 92 return (ver1-ver2) < 0; 93} 94 95#define After(ver2, ver1) before(ver1, ver2) 96#endif 97 98#if defined(LINUX30) || LINUX_VERSION_CODE > KERNEL_VERSION(2,6,34) 99#define DAYS_PARAM " --kerneltz --weekdays " 100#else 101#define DAYS_PARAM " --days " 102#endif 103 104#define LOGNAME get_productid() 105#define is_ap_mode() (nvram_match("sw_mode", "3")) 106#ifdef RTCONFIG_USB_MODEM 107#define is_phyconnected() (nvram_match("link_wan", "1") || nvram_match("link_wan1", "1")) 108#else 109#define is_phyconnected() (nvram_match("link_wan","1")) 110#endif 111 112#define NAT_RULES "/tmp/nat_rules" 113 114#ifndef ARRAY_SIZE 115#define ARRAY_SIZE(ary) (sizeof(ary) / sizeof((ary)[0])) 116#endif 117 118#define XSTR(s) STR(s) 119#define STR(s) #s 120 121// #define DEBUG_IPTFILE 122// #define DEBUG_RCTEST 123// #define DEBUG_NOISY 124 125#ifdef DEBUG_NOISY 126#define TRACE_PT(fmt, args...) \ 127do { \ 128 char psn[16]; \ 129 pid_t pid; \ 130 pid = getpid(); \ 131 psname(pid, psn, sizeof(psn)); \ 132 _dprintf("[%d %s:%s +%ld] " fmt,\ 133 pid, psn, __func__, uptime(), ##args); \ 134} while(0) 135#else 136#define TRACE_PT(args...) do { } while(0) 137#endif 138 139#ifdef RTCONFIG_RESTRICT_GUI 140#define BIT_RES_GUI "0x100" 141#endif 142 143#define MAX_NO_BRIDGE 2 144#define MAX_NO_MSSID 4 145#define PROC_SCSI_ROOT "/proc/scsi" 146#define USB_STORAGE "usb-storage" 147 148#ifndef MAX_WAIT_FILE 149#define MAX_WAIT_FILE 5 150#endif 151#define PPP_DIR "/tmp/ppp/peers" 152#define PPP_CONF_FOR_3G "/tmp/ppp/peers/3g" 153 154#ifdef RTCONFIG_USB_BECEEM 155#define BECEEM_DIR "/tmp/Beceem_firmware" 156#define WIMAX_CONF "/tmp/wimax.conf" 157#define WIMAX_LOG "/tmp/wimax.log" 158#endif 159 160#define NOTIFY_DIR "/tmp/notify" 161#define NOTIFY_TYPE_USB "usb" 162 163#define BOOT 0 164#define REDIAL 1 165#define CONNECTING 2 166 167#define PPPOE0 0 168#define PPPOE1 1 169 170#define GOT_IP 0x01 171#define RELEASE_IP 0x02 172#define GET_IP_ERROR 0x03 173#define RELEASE_WAN_CONTROL 0x04 174#define USB_DATA_ACCESS 0x05 //For WRTSL54GS 175#define USB_CONNECT 0x06 //For WRTSL54GS 176#define USB_DISCONNECT 0x07 //For WRTSL54GS 177 178#define SERIAL_NUMBER_LENGTH 12 //ATE need 179 180#define SET_LED(val) do { } while(0) 181 182typedef enum { IPT_TABLE_NAT, IPT_TABLE_FILTER, IPT_TABLE_MANGLE } ipt_table_t; 183 184#define IFUP (IFF_UP | IFF_RUNNING | IFF_BROADCAST | IFF_MULTICAST) 185 186#define IPT_V4 0x01 187#define IPT_V6 0x02 188#define IPT_ANY_AF (IPT_V4 | IPT_V6) 189#define IPT_AF_IS_EMPTY(f) ((f & IPT_ANY_AF) == 0) 190 191/* api-*.c */ 192extern uint32_t get_phy_status(uint32_t portmask); 193extern uint32_t get_phy_speed(uint32_t portmask); 194extern uint32_t set_phy_ctrl(uint32_t portmask, int ctrl); 195extern uint32_t set_gpio(uint32_t gpio, uint32_t value); 196extern uint32_t get_gpio(uint32_t gpio); 197extern uint32_t gpio_dir(uint32_t gpio, int dir); 198 199/* ate.c */ 200extern int asus_ate_command(const char *command, const char *value, const char *value2); 201extern int ate_dev_status(void); 202extern int isValidMacAddr(const char* mac); 203extern int isValidCountryCode(const char *Ccode); 204extern int isValidSN(const char *sn); 205extern int pincheck(const char *a); 206extern int isValidChannel(int is_2G, char *channel); 207 208/* shared/boardapi.c */ 209extern int wanport_ctrl(int ctrl); 210extern int lanport_ctrl(int ctrl); 211extern int wanport_status(int wan_unit); 212 213/* board API under sysdeps directory */ 214extern void ate_commit_bootlog(char *err_code); 215extern int setAllLedOn(void); 216extern int setAllLedOff(void); 217extern int setATEModeLedOn(void); 218extern int start_wps_method(void); 219extern int stop_wps_method(void); 220extern int is_wps_stopped(void); 221extern int setMAC_2G(const char *mac); 222extern int setMAC_5G(const char *mac); 223#if defined(RTCONFIG_NEW_REGULATION_DOMAIN) 224extern int getRegSpec(void); 225extern int getRegDomain_2G(void); 226extern int getRegDomain_5G(void); 227extern int setRegSpec(const char *regSpec, int do_write); 228extern int setRegDomain_2G(const char *cc); 229extern int setRegDomain_5G(const char *cc); 230#else 231extern int getCountryCode_2G(void); 232extern int setCountryCode_2G(const char *cc); 233#endif 234extern int setCountryCode_5G(const char *cc); 235extern int setSN(const char *SN); 236extern int getSN(void); 237extern int setPIN(const char *pin); 238extern int getPIN(void); 239extern int set40M_Channel_2G(char *channel); 240extern int set40M_Channel_5G(char *channel); 241extern int ResetDefault(void); 242extern int getBootVer(void); 243extern int getMAC_2G(void); 244extern int getMAC_5G(void); 245extern int GetPhyStatus(int verbose); 246extern int Get_ChannelList_2G(void); 247extern int Get_ChannelList_5G(void); 248extern void Get_fail_ret(void); 249extern void Get_fail_reboot_log(void); 250extern void Get_fail_dev_log(void); 251#ifdef RTCONFIG_ODMPID 252extern int setMN(const char *MN); 253extern int getMN(void); 254#endif 255extern int check_imagefile(char *fname); 256#if defined(RTCONFIG_RALINK) 257extern int set_wantolan(void); 258static inline void platform_start_ate_mode(void) { }; 259static inline int setWlOffLed(void) { return 0; } 260#elif defined(RTCONFIG_QCA) 261extern void platform_start_ate_mode(void); 262extern void set_uuid(void); 263static inline int setWlOffLed(void) { return 0; } 264#elif defined(CONFIG_BCMWL5) 265static inline void platform_start_ate_mode(void) { }; 266extern int setWlOffLed(void); 267#else 268extern int setWlOffLed(void); 269#error 270#endif 271 272/* board API under sysdeps/ralink/ralink.c */ 273#ifdef RTCONFIG_RALINK 274extern int FWRITE(const char *da, const char* str_hex); 275extern int FREAD(unsigned int addr_sa, int len); 276#if defined(RTN65U) 277extern void ate_run_in(void); 278#endif 279extern int gen_ralink_config(int band, int is_iNIC); 280extern int get_channel(int band); 281extern int __need_to_start_wps_band(char *prefix); 282extern int need_to_start_wps_band(int wps_band); 283extern void start_wsc_pin_enrollee(void); 284extern void stop_wsc(void); 285extern void stop_wsc_both(void); 286extern void start_wsc(void); 287extern void wps_oob_both(void); 288extern void wsc_user_commit(); 289extern int getrssi(int band); 290extern int asuscfe(const char *PwqV, const char *IF); 291extern int stainfo(int band); 292extern int Set_SwitchPort_LEDs(const char *group, const char *action); 293extern int ralink_mssid_mac_validate(const char *macaddr); 294extern int getWscStatus(int unit); 295extern int wl_WscConfigured(int unit); 296extern int Get_Device_Flags(void); 297extern int Set_Device_Flags(const char *flags_str); 298extern const char *get_wifname(int band); 299extern const char *get_wpsifname(void); 300#endif 301 302/* board API under sysdeps/qca/qca.c */ 303#if defined(RTCONFIG_QCA) 304extern int FWRITE(const char *da, const char* str_hex); 305extern int FREAD(unsigned int addr_sa, int len); 306extern int gen_ath_config(int band, int is_iNIC,int subnet); 307extern int __need_to_start_wps_band(char *prefix); 308extern int need_to_start_wps_band(int wps_band); 309extern int getEEPROM(unsigned char *outbuf, unsigned short *lenpt, char *area); 310extern void hexdump(unsigned char *pt, unsigned short len); 311extern void setCTL(const char *); 312extern int verify_ctl_table(void); 313#ifdef RTCONFIG_ATEUSB3_FORCE 314extern int getForceU3(void); 315extern int setForceU3(const char *val); 316#endif 317extern char *getStaMAC(void); 318extern unsigned int getPapState(int unit); 319typedef unsigned int u_int; 320extern u_int ieee80211_mhz2ieee(u_int freq); 321#endif 322extern int country_to_code(char *ctry, int band); 323 324/* sysdeps/dsl-*.c */ 325extern int check_tc_firmware_crc(void); 326extern int truncate_trx(void); 327extern void do_upgrade_adsldrv(void); 328extern int compare_linux_image(void); 329 330// init.c 331extern int init_main(int argc, char *argv[]); 332extern int reboothalt_main(int argc, char *argv[]); 333extern int console_main(int argc, char *argv[]); 334extern int limit_page_cache_ratio(int ratio); 335extern int init_nvram(void); 336extern void wl_defaults(void); 337extern void wl_defaults_wps(void); 338extern void restore_defaults_module(char *prefix); 339extern void clean_modem_state(int flag); 340extern void clean_vlan_ifnames(void); 341 342// interface.c 343extern int _ifconfig(const char *name, int flags, const char *addr, const char *netmask, const char *dstaddr, int mtu); 344static inline int ifconfig(const char *name, int flags, const char *addr, const char *netmask) 345{ 346 return _ifconfig(name, flags, addr, netmask, NULL, 0); 347} 348extern int _ifconfig_get(const char *name, int *flags, char *addr, char *netmask, char *dstaddr, int *mtu); 349extern int ifconfig_mtu(const char *name, int mtu); 350extern int route_add(char *name, int metric, char *dst, char *gateway, char *genmask); 351extern int route_del(char *name, int metric, char *dst, char *gateway, char *genmask); 352extern int start_vlan(void); 353extern int stop_vlan(void); 354extern int config_vlan(void); 355extern void config_loopback(void); 356#ifdef RTCONFIG_IPV6 357extern int ipv6_mapaddr4(struct in6_addr *addr6, int ip6len, struct in_addr *addr4, int ip4mask); 358#endif 359 360// wan.c 361extern int wan_prefix(char *ifname, char *prefix); 362extern int wan_ifunit(char *wan_ifname); 363extern int wanx_ifunit(char *wan_ifname); 364extern int preset_wan_routes(char *wan_ifname); 365extern int found_default_route(int wan_unit); 366#ifdef RTCONFIG_QCA_PLC_UTILS 367extern int autodet_plc_main(int argc, char *argv[]); 368#endif 369extern int autodet_main(int argc, char *argv[]); 370extern void start_wan(void); 371extern void stop_wan(void); 372extern int add_multi_routes(void); 373extern int add_routes(char *prefix, char *var, char *ifname); 374extern int del_routes(char *prefix, char *var, char *ifname); 375extern void start_wan_if(int unit); 376extern void stop_wan_if(int unit); 377#ifdef RTCONFIG_IPV6 378extern void stop_wan6(void); 379#if 0 380extern void start_ecmh(const char *wan_ifname); 381extern void stop_ecmh(void); 382#endif 383extern void wan6_up(const char *wan_ifname); 384extern void wan6_down(const char *wan_ifname); 385extern void start_wan6(void); 386extern void stop_wan6(void); 387#endif 388#if defined(RTCONFIG_WANRED_LED) 389extern int test_gateway(char *gw, char *wan_ifname); 390#else 391static inline int test_gateway(char *gw, char *wan_ifname) { return 0; } 392#endif 393extern int do_dns_detect(); 394 395// lan.c 396extern void update_lan_state(int state, int reason); 397extern void set_et_qos_mode(void); 398extern void start_wl(void); 399extern void stop_wl(void); 400extern char *get_hwaddr(const char *ifname); 401extern void start_lan(void); 402extern void stop_lan(void); 403extern void do_static_routes(int add); 404extern void hotplug_net(void); 405extern int radio_switch(int subunit); 406extern int radio_main(int argc, char *argv[]); 407extern int wldist_main(int argc, char *argv[]); 408extern int update_lan_resolvconf(void); 409extern void lan_up(char *lan_ifname); 410extern void lan_down(char *lan_ifname); 411extern void stop_lan_wl(void); 412extern void start_lan_wl(void); 413extern void restart_wl(void); 414extern void lanaccess_mssid_ban(const char *ifname_in); 415extern void lanaccess_wl(void); 416extern void restart_wireless(void); 417#ifdef RTCONFIG_BCM_7114 418extern void stop_wl_bcm(void); 419#endif 420extern void restart_wireless_wps(void); 421extern void start_wan_port(void); 422extern void stop_wan_port(void); 423extern void start_lan_port(int dt); 424extern void stop_lan_port(void); 425extern void start_lan_wlport(void); 426extern void stop_lan_wlport(void); 427extern int wl_dev_exist(void); 428#if defined(RTCONFIG_RALINK) || defined(RTCONFIG_QCA) 429extern pid_t pid_from_file(char *pidfile); 430#endif 431extern int delay_main(int argc, char *argv[]); 432#ifdef RTCONFIG_IPV6 433extern void set_default_accept_ra(int flag); 434extern void set_intf_ipv6_accept_ra(const char *ifname, int flag); 435extern void set_intf_ipv6_dad(const char *ifname, int bridge, int flag); 436extern void config_ipv6(int enable, int incl_wan); 437extern void enable_ipv6(const char *ifname); 438extern void disable_ipv6(const char *ifname); 439#endif 440#ifdef RTCONFIG_WIRELESSREPEATER 441extern void start_lan_wlc(void); 442extern void stop_lan_wlc(void); 443#endif 444#if defined(RTCONFIG_QCA) 445extern void stavap_start(void); 446extern void qca_wif_up(const char* wif); 447extern void gen_qca_wifi_cfgs(void); 448#endif 449 450// firewall.c 451extern int start_firewall(int wanunit, int lanunit); 452extern void enable_ip_forward(void); 453extern void convert_routes(void); 454extern void start_default_filter(int lanunit); 455extern int ipt_addr_compact(const char *s, int af, int strict); 456extern void filter_setting(char *wan_if, char *wan_ip, char *lan_if, char *lan_ip, char *logaccept, char *logdrop); 457#ifdef WEB_REDIRECT 458extern void redirect_setting(void); 459#endif 460 461/* pc.c */ 462#ifdef RTCONFIG_PARENTALCTRL 463extern int pc_main(int argc, char *argv[]); 464extern int count_pc_rules(void); 465extern void config_daytime_string(FILE *fp, char *logaccept, char *logdrop); 466#endif 467 468// pc_block.c 469#ifdef RTCONFIG_PARENTALCTRL 470extern int pc_block_main(int argc, char *argv[]); 471extern void config_blocking_redirect(FILE *fp); 472#endif 473 474// ppp.c 475extern int ipup_main(int argc, char **argv); 476extern int ipdown_main(int argc, char **argv); 477extern int ippreup_main(int argc, char **argv); 478#ifdef RTCONFIG_IPV6 479extern int ip6up_main(int argc, char **argv); 480extern int ip6down_main(int argc, char **argv); 481#endif 482extern int authfail_main(int argc, char **argv); 483extern int ppp_ifunit(char *ifname); 484extern int ppp_linkunit(char *linkname); 485 486// pppd.c 487extern int start_pppd(int unit); 488extern void stop_pppd(int unit); 489extern int start_demand_ppp(int unit, int wait); 490extern int start_pppoe_relay(char *wan_if); 491extern void stop_pppoe_relay(void); 492 493// vpnc.c 494#ifdef RTCONFIG_VPNC 495extern int vpnc_ipup_main(int argc, char **argv); 496extern int vpnc_ipdown_main(int argc, char **argv); 497extern int vpnc_ippreup_main(int argc, char **argv); 498extern int vpnc_authfail_main(int argc, char **argv); 499extern void update_vpnc_state(char *prefix, int state, int reason); 500#endif 501 502// network.c 503extern void set_host_domain_name(void); 504extern void start_lan(void); 505extern void stop_lan(void); 506extern void do_static_routes(int add); 507extern void start_wl(void); 508extern void wan_up(char *wan_ifname); 509#ifdef RTCONFIG_IPV6 510extern void wan6_up(const char *wan_ifname); 511#endif 512extern void wan_down(char *wan_ifname); 513extern void update_wan_state(char *prefix, int state, int reason); 514extern int update_resolvconf(void); 515 516/* qos.c */ 517extern int start_iQos(void); 518extern void stop_iQos(void); 519extern void del_iQosRules(void); 520extern int add_iQosRules(char *pcWANIF); 521 522/* rtstate.c */ 523extern void add_rc_support(char *feature); 524 525// udhcpc.c 526extern int udhcpc_wan(int argc, char **argv); 527extern int udhcpc_lan(int argc, char **argv); 528extern int start_udhcpc(char *wan_ifname, int unit, pid_t *ppid); 529extern void stop_udhcpc(int unit); 530extern int zcip_wan(int argc, char **argv); 531extern int start_zcip(char *wan_ifname, int unit, pid_t *ppid); 532extern void stop_zcip(int unit); 533 534#ifdef RTCONFIG_IPV6 535extern int dhcp6c_wan(int argc, char **argv); 536extern int start_dhcp6c(void); 537extern void stop_dhcp6c(void); 538#endif 539 540#ifdef RTCONFIG_WPS 541extern int wpsaide_main(int argc, char *argv[]); 542#ifdef RTCONFIG_QCA 543extern int get_wps_er_main(int argc, char *argv[]); 544#endif 545extern int stop_wpsaide(); 546extern int start_wpsaide(); 547#endif 548 549// auth.c 550extern int start_auth(int unit, int wan_up); 551extern int stop_auth(int unit, int wan_down); 552extern int restart_auth(int unit); 553#ifdef RTCONFIG_EAPOL 554extern int wpacli_main(int argc, char *argv[]); 555#endif 556 557// mtd.c 558extern int mtd_erase(const char *mtdname); 559extern int mtd_unlock(const char *mtdname); 560#ifdef RTCONFIG_BCMARM 561extern int mtd_erase_old(const char *mtdname); 562extern int mtd_write_main_old(int argc, char *argv[]); 563extern int mtd_unlock_erase_main_old(int argc, char *argv[]); 564extern int mtd_write(const char *path, const char *mtd); 565#else 566extern int mtd_write_main(int argc, char *argv[]); 567extern int mtd_unlock_erase_main(int argc, char *argv[]); 568#endif 569 570// jffs2.c 571#if defined(RTCONFIG_UBIFS) 572extern void start_ubifs(void); 573extern void stop_ubifs(int stop); 574static inline void start_jffs2(void) { start_ubifs(); } 575static inline void stop_jffs2(int stop) { stop_ubifs(stop); } 576#elif defined(RTCONFIG_JFFS2) || defined(RTCONFIG_JFFSV1) || defined(RTCONFIG_BRCM_NAND_JFFS2) 577extern void start_jffs2(void); 578extern void stop_jffs2(int stop); 579#else 580static inline void start_jffs2(void) { } 581static inline void stop_jffs2(int stop) { } 582#endif 583 584// watchdog.c 585extern void led_control_normal(void); 586extern void erase_nvram(void); 587extern int init_toggle(void); 588extern void btn_check(void); 589extern int watchdog_main(int argc, char *argv[]); 590extern int watchdog02_main(int argc, char *argv[]); 591extern int sw_devled_main(int argc, char *argv[]); 592extern void init_wllc(void); 593extern void rssi_check_unit(int unit); 594 595// usbled.c 596extern int usbled_main(int argc, char *argv[]); 597#ifdef RTCONFIG_FANCTRL 598// phy_tempsense.c 599extern int phy_tempsense_main(int argc, char *argv[]); 600#endif 601#if defined(RTCONFIG_BCMWL6) && defined(RTCONFIG_PROXYSTA) 602// psta_monitor.c 603extern int psta_monitor_main(int argc, char *argv[]); 604#endif 605 606#ifdef RTCONFIG_QTN 607extern int qtn_monitor_main(int argc, char *argv[]); 608#endif 609 610extern int radio_main(int argc, char *argv[]); 611 612// ntp.c 613extern int ntp_main(int argc, char *argv[]); 614 615// btnsetup.c 616extern int ots_main(int argc, char *argv[]); 617extern void stop_ots(void); 618extern int start_ots(void); 619 620// common.c 621extern in_addr_t inet_addr_(const char *cp); // oleg patch 622extern int inet_equal(char *addr1, char *mask1, char *addr2, char *mask2); 623extern void usage_exit(const char *cmd, const char *help) __attribute__ ((noreturn)); 624#define modprobe(mod, args...) ({ char *argv[] = { "modprobe", "-s", mod, ## args, NULL }; _eval(argv, NULL, 0, NULL); }) 625extern int modprobe_r(const char *mod); 626#define xstart(args...) _xstart(args, NULL) 627extern int _xstart(const char *cmd, ...); 628extern void run_nvscript(const char *nv, const char *arg1, int wtime); 629extern void run_userfile (char *folder, char *extension, const char *arg1, int wtime); 630extern void setup_conntrack(void); 631extern void inc_mac(char *mac, int plus); 632extern void set_mac(const char *ifname, const char *nvname, int plus); 633extern const char *default_wanif(void); 634// extern const char *default_wlif(void); 635extern void simple_unlock(const char *name); 636extern void simple_lock(const char *name); 637extern void killall_tk(const char *name); 638extern void kill_pidfile_tk(const char *pidfile); 639extern long fappend(FILE *out, const char *fname); 640extern long fappend_file(const char *path, const char *fname); 641extern void logmessage(char *logheader, char *fmt, ...); 642extern char *trim_r(char *str); 643extern void restart_lfp(void); 644extern int get_meminfo_item(const char *name); 645extern void setup_timezone(void); 646extern int is_valid_hostname(const char *name); 647extern void setup_ct_timeout(int connflag); 648extern void setup_udp_timeout(int connflag); 649extern void setup_ftp_conntrack(int port); 650extern void setup_pt_conntrack(void); 651extern void remove_conntrack(void); 652extern int pppstatus(void); 653extern void time_zone_x_mapping(void); 654extern void stop_if_misc(void); 655extern int mssid_mac_validate(const char *macaddr); 656#ifdef CONFIG_BCMWL5 657extern int setup_dnsmq(int mode); 658#endif 659 660// ssh.c 661 662// usb.c 663#ifdef RTCONFIG_USB 664FILE* fopen_or_warn(const char *path, const char *mode); 665extern void hotplug_usb(void); 666extern void start_usb(void); 667extern void remove_usb_module(void); 668extern void stop_usb_program(int mode); 669extern void restart_usb(int f_stop); 670extern void stop_usb(int f_force); 671extern void start_lpd(); 672extern void stop_lpd(); 673extern void start_u2ec(); 674extern void stop_u2ec(); 675extern int ejusb_main(int argc, char *argv[]); 676extern void webdav_account_default(void); 677extern void remove_storage_main(int shutdn); 678extern int start_usbled(void); 679extern int stop_usbled(void); 680extern void restart_nas_services(int stop, int start); 681extern void stop_nas_services(int force); 682extern int sd_partition_num(); 683#endif 684#ifdef RTCONFIG_CROND 685extern void start_cron(void); 686extern void stop_cron(void); 687#endif 688extern void start_webdav(void); 689#ifdef RTCONFIG_USB_PRINTER 690extern void start_usblpsrv(void); 691#endif 692#ifdef RTCONFIG_SAMBASRV 693extern void create_custom_passwd(void); 694extern void stop_samba(void); 695extern void start_samba(void); 696#endif 697#ifdef RTCONFIG_WEBDAV 698extern void stop_webdav(void); 699extern void stop_all_webdav(void); 700#else 701static inline void stop_all_webdav(void) { } 702#endif 703#ifdef RTCONFIG_FTP 704extern void stop_ftpd(void); 705extern void start_ftpd(void); 706#endif 707#ifdef RTCONFIG_CLOUDSYNC 708extern void stop_cloudsync(int type); 709extern void start_cloudsync(int fromUI); 710#endif 711#if defined(RTCONFIG_APP_PREINSTALLED) || defined(RTCONFIG_APP_NETINSTALLED) 712extern int stop_app(void); 713extern int start_app(void); 714extern void usb_notify(); 715#endif 716 717#ifdef RTCONFIG_DISK_MONITOR 718extern void start_diskmon(void); 719extern void stop_diskmon(void); 720extern int diskmon_main(int argc, char *argv[]); 721extern void remove_pool_error(const char *device, const char *flag); 722#endif 723extern int diskremove_main(int argc, char *argv[]); 724 725#ifdef RTCONFIG_CIFS 726extern void start_cifs(void); 727extern void stop_cifs(void); 728extern int mount_cifs_main(int argc, char *argv[]); 729#else 730static inline void start_cifs(void) {}; 731static inline void stop_cifs(void) {}; 732#endif 733 734// linkmonitor.c 735extern int linkmonitor_main(int argc, char *argv[]); 736 737// vpn.c 738extern void start_pptpd(void); 739extern void stop_pptpd(void); 740 741// vpnc.c 742#ifdef RTCONFIG_VPNC 743extern int start_vpnc(void); 744extern void stop_vpnc(void); 745#endif 746 747// openvpn.c 748#ifdef RTCONFIG_OPENVPN 749extern void start_vpnclient(int clientNum); 750extern void stop_vpnclient(int clientNum); 751extern void start_vpnserver(int serverNum); 752extern void stop_vpnserver(int serverNum); 753extern void start_vpn_eas(); 754extern void stop_vpn_eas(); 755extern void run_vpn_firewall_scripts(); 756extern void write_vpn_dnsmasq_config(FILE*); 757extern int write_vpn_resolv(FILE*); 758//static inline void start_vpn_eas() { } 759//#define write_vpn_resolv(f) (0) 760extern void create_openvpn_passwd(); 761#endif 762 763// wanduck.c 764extern int update_wan_leds(int wan_unit); 765extern int wanduck_main(int argc, char *argv[]); 766 767// tcpcheck.c 768extern int setupsocket(int sock); 769extern void wakeme(int sig); 770extern void goodconnect(int i); 771extern void failedconnect(int i); 772extern void subtime(struct timeval *a, struct timeval *b, struct timeval *res); 773extern void setupset(fd_set *theset, int *numfds); 774extern void waitforconnects(); 775extern int tcpcheck_main(int argc, char *argv[]); 776 777// readmem.c 778#ifdef BUILD_READMEM 779extern int readmem_main(int argc, char *argv[]); 780#endif 781 782// usb_devices.c 783#ifdef RTCONFIG_USB 784extern int asus_sd(const char *device_name, const char *action); 785extern int asus_lp(const char *device_name, const char *action); 786extern int asus_sr(const char *device_name, const char *action); 787extern int asus_tty(const char *device_name, const char *action); 788extern int asus_usb_interface(const char *device_name, const char *action); 789extern int asus_sg(const char *device_name, const char *action); 790extern int asus_usbbcm(const char *device_name, const char *action); 791#endif 792#ifdef RTCONFIG_USB_MODEM 793extern int is_create_file_dongle(const unsigned int vid, const unsigned int pid); 794#ifdef RTCONFIG_USB_BECEEM 795extern int is_beceem_dongle(const int mode, const unsigned int vid, const unsigned int pid); 796extern int is_samsung_dongle(const int mode, const unsigned int vid, const unsigned int pid); 797extern int is_gct_dongle(const int mode, const unsigned int vid, const unsigned int pid); 798extern int write_beceem_conf(const char *eth_node); 799extern int write_gct_conf(void); 800#endif 801extern int is_android_phone(const int mode, const unsigned int vid, const unsigned int pid); 802extern int is_storage_cd(const int mode, const unsigned int vid, const unsigned int pid); 803extern int write_3g_conf(FILE *fp, int dno, int aut, const unsigned int vid, const unsigned int pid); 804extern int init_3g_param(const char *port_path, const unsigned int vid, const unsigned int pid); 805extern int write_3g_ppp_conf(void); 806#endif 807 808#ifdef RTCONFIG_DSL 809//dsl.c 810extern void dsl_configure(int req); 811extern void start_dsl(void); 812extern void stop_dsl(void); 813extern void remove_dsl_autodet(void); 814extern void dsl_defaults(void); 815#endif 816 817//services.c 818extern void write_static_leases(char *file); 819#ifdef RTCONFIG_DHCP_OVERRIDE 820extern int restart_dnsmasq(int need_link_DownUp); 821#endif 822extern void start_dnsmasq(void); 823extern void stop_dnsmasq(void); 824extern void reload_dnsmasq(void); 825extern int ddns_updated_main(int argc, char *argv[]); 826#ifdef RTCONFIG_IPV6 827extern void add_ip6_lanaddr(void); 828extern void start_ipv6_tunnel(void); 829extern void stop_ipv6_tunnel(void); 830extern void start_ipv6(void); 831extern void stop_ipv6(void); 832extern void ipv6_sysconf(const char *ifname, const char *name, int value); 833extern int ipv6_getconf(const char *ifname, const char *name); 834#ifdef RTCONFIG_6RELAYD 835extern void stop_6relayd(void); 836extern int start_6relayd(void); 837#endif 838#endif 839extern int wps_band_radio_off(int wps_band); 840#ifdef CONFIG_BCMWL5 841#ifdef BCM_ASPMD 842extern int start_aspmd(void); 843extern int stop_aspmd(void); 844#endif /* BCM_ASPMD */ 845extern int start_eapd(void); 846extern void stop_eapd(void); 847extern int start_nas(void); 848extern void stop_nas(void); 849extern void set_acs_ifnames(); 850#endif 851extern void start_nat_rules(void); 852extern void stop_nat_rules(void); 853extern void stop_syslogd(void); 854extern void stop_klogd(void); 855extern int start_syslogd(void); 856extern int start_klogd(void); 857extern int start_logger(void); 858extern void start_dfs(void); 859extern void handle_notifications(void); 860extern void stop_watchdog(void); 861extern int start_watchdog(void); 862extern int get_apps_name(const char *string); 863extern int run_app_script(const char *pkg_name, const char *pkg_action); 864extern void set_hostname(void); 865extern int _start_telnetd(int force); 866extern int start_telnetd(void); 867extern void stop_telnetd(void); 868#ifdef RTCONFIG_SSH 869extern int start_sshd(void); 870extern void stop_sshd(void); 871#endif 872#ifdef RTCONFIG_WTFAST 873extern void start_wtfast(void); 874extern void stop_wtfast(void); 875#endif 876extern void start_hotplug2(void); 877extern void stop_services(void); 878extern void stop_logger(void); 879extern void setup_passwd(void); 880extern void create_passwd(void); 881extern int start_services(void); 882extern void check_services(void); 883extern int no_need_to_start_wps(void); 884extern int wps_band_radio_off(int wps_band); 885extern int start_wanduck(void); 886extern void stop_wanduck(void); 887extern void stop_ntpc(void); 888extern int start_ntpc(void); 889#ifdef RTCONFIG_UPNPC 890extern int start_miniupnpc(void); 891extern void stop_miniupnpc(void); 892#endif 893#ifdef RTCONFIG_BONJOUR 894extern int start_netmonitor(void); 895extern void stop_netmonitor(void); 896#endif 897extern void stop_networkmap(void); 898extern int start_networkmap(int bootwait); 899extern int stop_wps(void); 900extern int start_wps(void); 901extern void stop_upnp(void); 902extern void start_upnp(void); 903extern void reload_upnp(void); 904extern void stop_ddns(void); 905extern int start_ddns(void); 906extern void refresh_ntpc(void); 907extern void start_hotplug2(void); 908extern void stop_hotplug2(void); 909extern void stop_lltd(void); 910extern void stop_httpd(void); 911extern void stop_rstats(void); 912extern void stop_autodet(void); 913extern void start_autodet(void); 914extern int wps_band_ssid_broadcast_off(int wps_band); 915#ifdef RTCONFIG_QCA_PLC_UTILS 916extern void start_plcdet(void); 917#endif 918extern void start_httpd(void); 919extern int wl_wpsPincheck(char *pin_string); 920extern int start_wps_pbc(int unit); 921#if defined(RTCONFIG_RALINK) 922extern int exec_8021x_start(int band, int is_iNIC); 923extern int exec_8021x_stop(int band, int is_iNIC); 924extern int start_8021x(void); 925extern int stop_8021x(void); 926#endif 927#ifdef RTCONFIG_LLDP 928extern void stop_lldpd(void); 929extern int start_lldpd(void); 930#endif 931extern int firmware_check_main(int argc, char *argv[]); 932#ifdef RTCONFIG_HTTPS 933extern int rsasign_check_main(int argc, char *argv[]); 934extern char *pwdec(const char *input); 935extern char *pwdec_dsl(char *input); 936#endif 937extern int service_main(int argc, char *argv[]); 938#ifdef RTCONFIG_DSL 939extern int check_tc_upgrade(void); 940extern int start_tc_upgrade(void); 941#ifdef RTCONFIG_DSL_TCLINUX 942extern void start_dsl_autodet(void); 943extern void stop_dsl_autodet(void); 944extern void stop_dsl_diag(void); 945extern int start_dsl_diag(void); 946#endif 947#endif 948#ifdef RTCONFIG_PUSH_EMAIL 949extern void start_DSLsendmail(void); 950#ifdef RTCONFIG_DSL_TCLINUX 951extern void start_DSLsenddiagmail(void); 952#endif 953#endif 954#ifdef RTCONFIG_SNMPD 955extern void start_snmpd(void); 956extern void stop_snmpd(void); 957#endif 958#ifdef RTCONFIG_TIMEMACHINE 959extern int start_timemachine(void); 960extern void stop_timemachine(void); 961extern int start_afpd(void); 962extern void stop_afpd(void); 963extern int start_cnid_metad(void); 964extern void stop_cnid_metad(void); 965extern int start_avahi_daemon(void); 966extern void stop_avahi_daemon(void); 967#endif 968 969#if defined(RTCONFIG_MDNS) 970extern int generate_mdns_config(void); 971extern int generate_afpd_service_config(void); 972extern int generate_adisk_service_config(void); 973extern int generate_itune_service_config(void); 974extern int start_mdns(void); 975extern void stop_mdns(void); 976extern void restart_mdns(void); 977#endif 978 979#ifdef __CONFIG_NORTON__ 980extern int start_norton(void); 981extern int stop_norton(void); 982#endif 983 984#ifdef RTCONFIG_MEDIA_SERVER 985void force_stop_dms(void); 986void stop_mt_daapd(void); 987void start_dms(void); 988void start_mt_daapd(void); 989void set_invoke_later(int flag); 990int get_invoke_later(void); 991#endif /* RTCONFIG_MEDIA_SERVER */ 992 993#ifdef RTCONFIG_WIRELESSREPEATER 994void start_wlcscan(void); 995void stop_wlcscan(void); 996void start_wlcconnect(void); 997void stop_wlcconnect(void); 998void repeater_nat_setting(void); 999void repeater_filter_setting(int mode); 1000#if defined(RTCONFIG_RALINK) 1001void apcli_start(void); 1002int site_survey_for_channel(int n, const char *wif, int *HT_EXT); 1003#endif 1004#endif /* RTCONFIG_WIRELESSREPEATER */ 1005 1006#ifdef RTCONFIG_PARENTALCTRL 1007extern void stop_pc_block(void); 1008extern void start_pc_block(void); 1009#endif 1010#ifdef RTCONFIG_HTTPS 1011extern int check_rsasign(char *fname); 1012#endif 1013 1014//wireless.c 1015extern int wlcscan_main(void); 1016extern void repeater_pap_disable(void); 1017extern int wlcconnect_main(void); 1018 1019//speedtest.c 1020extern int speedtest_main(int argc, char **argv); 1021extern int speedtest(); 1022 1023#ifdef RTCONFIG_BWDPI 1024extern int bwdpi_main(int argc, char **argv); 1025extern int bwdpi_check_main(int argc, char **argv); 1026extern int bwdpi_wred_alive_main(int argc, char **argv); 1027extern int show_wrs_main(int argc, char **argv); 1028extern int rsasign_sig_check_main(int argc, char *argv[]); 1029extern int bwdpi_db_10_main(int argc, char **argv); 1030#endif 1031 1032// hour_monitor.c 1033extern int hour_monitor_main(int argc, char **argv); 1034extern int hour_monitor_function_check(); 1035extern void check_hour_monitor_service(); 1036extern void hm_traffic_analyzer_save(); 1037extern void hm_traffic_limiter_save(); 1038 1039// traffic_limiter.c 1040#ifdef RTCONFIG_TRAFFIC_LIMITER 1041extern void traffic_limiter_sendSMS(const char *type, int unit); 1042extern void traffic_limiter_limitdata_check(void); 1043extern int traffic_limiter_wanduck_check(int unit); 1044extern void reset_traffic_limiter_counter(int force); 1045extern void init_traffic_limiter(void); 1046#endif 1047 1048 1049#ifdef RTCONFIG_INTERNAL_GOBI 1050extern int lteled_main(int argc, char **argv); 1051extern int start_lteled(void); 1052extern void stop_lteled(void); 1053#endif 1054#ifdef RTCONFIG_TOR 1055extern void start_Tor_proxy(void); 1056#endif 1057#ifdef RTCONFIG_CLOUDCHECK 1058void stop_cloudcheck(void); 1059void start_cloudcheck(void); 1060#endif 1061 1062#ifdef RTCONFIG_IPERF 1063// monitor.c 1064extern int monitor_main(int argc, char *argv[]); 1065#endif 1066 1067#ifdef RTCONFIG_TR069 1068extern int start_tr(void); 1069extern void stop_tr(void); 1070extern int dhcpc_lease_main(int argc, char *argv[]); 1071#endif 1072 1073#if ((defined(RTCONFIG_USER_LOW_RSSI) && defined(RTCONFIG_BCMARM)) || defined(RTCONFIG_NEW_USER_LOW_RSSI)) 1074extern void stop_roamast(void); 1075extern void start_roamast(void); 1076extern int roam_assistant_main(int argc, char *argv[]); 1077#endif 1078 1079#ifdef RTCONFIG_DHCP_OVERRIDE 1080extern int detectWAN_arp_main(int argc, char **argv); 1081#endif 1082 1083#ifdef RTCONFIG_PUSH_EMAIL 1084extern void am_send_mail(int type, char *path); 1085#endif 1086 1087#if defined(RTCONFIG_KEY_GUARD) 1088extern void stop_keyguard(void); 1089extern void start_keyguard(void); 1090extern int keyguard_main(int argc, char *argv[]); 1091#endif 1092 1093extern void start_ecoguard(void); 1094 1095#ifdef BTN_SETUP 1096enum BTNSETUP_STATE 1097{ 1098 BTNSETUP_NONE=0, 1099 BTNSETUP_DETECT, 1100 BTNSETUP_START, 1101 BTNSETUP_DATAEXCHANGE, 1102 BTNSETUP_DATAEXCHANGE_FINISH, 1103 BTNSETUP_DATAEXCHANGE_EXTEND, 1104 BTNSETUP_FINISH 1105}; 1106#endif 1107 1108#ifdef RTCONFIG_TUNNEL 1109extern void start_mastiff(); 1110extern void stop_mastiff(); 1111#endif 1112 1113#if defined(RTCONFIG_TCODE) && defined(CONFIG_BCMWL5) 1114extern char *cfe_nvram_get(const char *name); 1115static INLINE int 1116cfe_nvram_match(char *name, char *match) { 1117 const char *value = cfe_nvram_get(name); 1118 return (value && !strcmp(value, match)); 1119} 1120extern char *cfe_nvram_safe_get(const char *name); 1121extern char *cfe_nvram_get_raw(const char *name); 1122extern char *cfe_nvram_safe_get_raw(const char *name); 1123extern int cfe_nvram_set(const char *name); 1124extern int factory_debug(); 1125#if !(defined(RTCONFIG_CFEZ) && defined(RTCONFIG_BCMARM)) 1126extern char *ATE_BRCM_PREFIX(void); 1127extern int ATE_BRCM_SET(const char *name, const char *value); 1128extern void ATE_BRCM_COMMIT(void); 1129#endif 1130#endif 1131 1132#if defined(RTCONFIG_LACP) 1133void config_lacp(void); 1134#endif 1135 1136#if defined(CONFIG_BCMWL5) && defined(RTCONFIG_DUALWAN) 1137void dualwan_control(void); 1138#endif 1139 1140#ifdef RTCONFIG_PORT_BASED_VLAN 1141// vlan.c 1142extern int vlan_enable(void); 1143extern int check_if_exist_vlan_ifnames(char *ifname); 1144extern void start_vlan_ifnames(void); 1145extern void stop_vlan_ifnames(void); 1146extern void start_vlan_wl_ifnames(void); 1147extern void restart_vlan_wl(void); 1148extern void vlan_lanaccess_wl(void); 1149extern void set_port_based_vlan_config(char *interface); 1150extern void set_vlan_ifnames(int index, int wlmap, char *subnet_name, char *vlan_if); 1151extern void stop_vlan_wl_ifnames(void); 1152extern void start_vlan_wl(void); 1153#endif 1154 1155#endif /* __RC_H__ */ 1156