sysconf init gw all

  • /etc/init.d/rcS
  • /bin/init.sh gw all ==> sysconf init gw all
  • +sysconf.c -> main(), sysconf 的主程序
  • ++setinit.c -> set_init(), 根據參數 init 會呼叫 set_init()
  • 然後就沒有了, 所以主要工作都在 set_init()。

set_init()

  • if_readlist_proc(wlan_virtual_interface, "va", 0), 收集所有的 wifi 虛擬網卡, 存在 wlan_virtual_interface, 以空格為分界.
  • sethostname() 設定 host name。
  • ifconfig hw ether 設定 mac address,值存在 hw config,HW_NIC0_ADDR,HW_WLAN0_WLAN_ADDR,HW_WLAN1_WLAN_ADDR 等。
  • 根據 NUM_WLAN_INTERFACE, 把 wifi 裝置寫入 wlan_interface, wlan0 及 wlan1.
  • 根據 wlan_interface 來設定, flash set_mib wlan0,flash set_mib wlan1。
  • 根據 wlan_virtual_interface 來設定, flash set_mib wlan0 wlan1-va2 等等.
  • setbridge(),設定 bridge。
  • set_log(),設定 log process。
  • set_lan_dhcpd(),設定 dhcp server。
  • start_wlanapp(),設定 wireless interface。
  • start_wan(),設定 wan interface。
  • start_upnpd(),設定 upnpd。
  • start_wlan_by_schedule(),設定 Wireless Schedule。
  • To enable/disable ipv6 passthru no matter wan is connected or not
  • enable igmp snooping
  • start_mount(),usb mount。
  • start_vsftpd(),vsftpd server。
  • start_samba(),samba server。
  • timelycheck,watch dog。

flash set_mib wlan0

  • wlan_idx=atoi(&argv[argNum][4]) 設定那一個 wlan 給 apmib_get() 讀取正確的值.
  • 設定完 wlan_idx, 就執行 initWlan().
  • struct wifi_mib 宣告放在 \linux-3.10\drivers\net\wireless\rtl8192cd\ieee802_mib.h
  • ifconfig %s down 先關閉 device
  • 讀取 MIB_WLAN_WLAN_DISABLED, 為1就直接結束.
  • ioctl(skfd, 0x8B42, &wrq_root) 把 kernel 的 mib 值讀回來.
  • ioctl(skfd, 0x8B43, &wrq_root) 把 mib 值寫入 kernel.
  • 0x8B42, 0x8B43 放在 \linux-3.10\drivers\net\wireless\rtl8192cd\8192cd_ioctl.c, rtl8192cd_ioctl().

flash set_mib wlan0

  • start_wan()
  • +set_staticIP()
  • ++setFirewallIptablesRules()
  • +set_dhcp_client()
  • ++/usr/share/udhcpc/eth1.bound
  • +++sysconf conn dhcp.....
  • ++++wan_connect()
  • +++++setFirewallIptablesRules()
  • +set_pppoe()
  • ++/bin/pppoe.sh
  • +++sysconf pppoe $*
  • ++++setFirewallIptablesRules()
創作者介紹

邱小新の工作筆記

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()