• #define COMPRESS_MIB_SETTING
    #define MIB_TLV
    2個值放在 apmib.h 預設為開啟。
  • apmib_init(), 從 flash 讀出 mib 值寫入 RAM
  • apmib_get(), 讀取 RAM 的 mib 值
  • apmib_set(), 設定 RAM 的 mib 值
  • apmib_update(), 把 RAM 的 mib 值寫入 flash
  • mib_compress_write(), 將 mib 值經過 Encode() 後再寫入 flash

apmib_init 函數

  • pHwSetting, apmib_hwconf, HW_SETTING_OFFSET
  • pMibDef, apmib_dsconf, DEFAULT_SETTING_OFFSET
  • pMib, apmib_csconf, CURRENT_SETTING_OFFSET
  • 使用上述3個函數把 flash 的值讀出來放入指標內。

apmib_get 函數

  • ...

getWlanMib 函數

  • wlan_idx 設定那一個 band,vwlan_idx 設定那一個 ssid。
  • 比如 wlan_idx=0, vwlan_idx=1, 讀取 MIB_WLAN_SSID 的值,轉換後為 WLAN0_VAP1_SSID。

mib_table[]

  • mib_table 宣告放在 mibtbl.h,mib_table 本體放在 mibtbl.c。
  • mib_table 先 define MIB_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_IMPORT define 內。
  • 以 MIBDEF(unsigned char, ipAddr, [4], IP_ADDR, IA_T, APMIB_T, 0, 0, DECISION_LAN_IP_FUNC_ID,0) 為例,展開後為 { MIB_IP_ADDR, // MIB_IP_ADDR=170 "IP_ADDR", IA_T, // IA_T=6 ((unsigned long)(long *)&(((APMIB_T *)0)->ipAddr)), sizeof(((APMIB_T *)0)->ipAddr) }
  • mib_table 只是一個索引表,真正的值存在 APMIB_T 結構,放在 apmib.h。

APMIB_T Struct

  • APMIB_T 結構放在 apmib.h。
  • typedef struct config_setting { #define MIBDEF(_ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl, decision_id, reinit_id ) \ _ctype _cname _crepeat; #define MIB_IMPORT #include "mibdef.h" #undef MIB_IMPORT #undef MIBDEF }__PACK__ APMIB_T, *APMIB_Tp;
  • APMIB_T 先 define MIB_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_IMPORT define 內。
  • 範例 MIBDEF(unsigned char, ipAddr, [4], IP_ADDR, IA_T, APMIB_T, 0, 0, DECISION_LAN_IP_FUNC_ID,0) vvvvvvvvvvvvvvvvvvvv 轉換後 vvvvvvvvvvvvvvvvvvvv unsigned char ipAddr[4];

mib_wlan_table[]

  • mib_wlan_table 宣告放在 mibtbl.h,mib_wlan_table 本體放在 mibtbl.c。
  • mib_wlan_table 先 define MIB_CONFIG_WLAN_SETTING_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_CONFIG_WLAN_SETTING_IMPORT define 內。
  • 以 MIBDEF(unsigned char, ssid, [MAX_SSID_LEN], SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0,DECISION_WLAN_PROPERTY_FUNC_ID,REINIT_NULL_FUNC_ID)為例,展開後為 { MIB_WLAN_SSID, // MIB_WLAN_SSID 1 "SSID", STRING_T, // STRING_T=2 sizeof(((CONFIG_WLAN_SETTING_T *)0)->ssid), sizeof(unsigned char), 0, 0, DECISION_WLAN_PROPERTY_FUNC_ID, REINIT_NULL_FUNC_ID }
  • mib_wlan_table 只是一個索引表,真正的值存在 CONFIG_WLAN_SETTING_T 結構,放在 apmib.h。

CONFIG_WLAN_SETTING_T Struct

  • CONFIG_WLAN_SETTING_T 結構放在 apmib.h。
  • typedef struct config_wlan_setting { #define MIBDEF(_ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl, decision_id, reinit_id ) \ _ctype _cname _crepeat; #define MIB_CONFIG_WLAN_SETTING_IMPORT #include "mibdef.h" #undef MIB_CONFIG_WLAN_SETTING_IMPORT #undef MIBDEF }__PACK__ CONFIG_WLAN_SETTING_T, *CONFIG_WLAN_SETTING_Tp;
  • CONFIG_WLAN_SETTING_T 先 define MIB_CONFIG_WLAN_SETTING_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_CONFIG_WLAN_SETTING_IMPORT define 內。
  • 範例 MIBDEF(unsigned char, ssid, [MAX_SSID_LEN], SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0,DECISION_WLAN_PROPERTY_FUNC_ID,REINIT_NULL_FUNC_ID) vvvvvvvvvvvvvvvvvvvv 轉換後 vvvvvvvvvvvvvvvvvvvv unsigned char ssid[MAX_SSID_LEN];

mib_macfilter_tbl[]

  • mib_macfilter_tbl 宣告放在 mibtbl.h,mib_macfilter_tbl 本體放在 mibtbl.c。
  • mib_macfilter_tbl 先 define MIB_MACFILTER_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_MACFILTER_IMPORT define 內。
  • 以 MIBDEF(unsigned char, macAddr, [6], MACFILTER_MACADDR, BYTE6_T, MACFILTER_T, 0, 0,0,0) 為例,展開後為 { MIB_MACFILTER_MACADDR, // MIB_IP_ADDR=170 "MACFILTER_MACADDR", BYTE6_T, // IA_T=6 ((unsigned long)(long *)&(((MACFILTER_T *)0)->macAddr)), sizeof(((MACFILTER_T *)0)->macAddr) }
  • mib_macfilter_tbl 只是一個索引表,真正的值存在 MACFILTER_T 結構,放在 apmib.h。

MACFILTER_T Struct

  • MACFILTER_T 結構放在 apmib.h。
  • typedef struct macfilter_entry { #define MIBDEF(_ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl, decision_id, reinit_id ) \ _ctype _cname _crepeat; #define MIB_MACFILTER_IMPORT #include "mibdef.h" #undef MIB_MACFILTER_IMPORT #undef MIBDEF }__PACK__ MACFILTER_T, *MACFILTER_Tp;
  • MACFILTER_T 先 define MIB_MACFILTER_IMPORT 再 include mibdef.h,所以設定值都放在 mibdef.h 的 MIB_MACFILTER_IMPORT define 內。
  • 範例 MIBDEF(unsigned char, macAddr, [6], MACFILTER_MACADDR, BYTE6_T, MACFILTER_T, 0, 0,0,0) vvvvvvvvvvvvvvvvvvvv 轉換後 vvvvvvvvvvvvvvvvvvvv unsigned char macAddr[6];

default value

  • 預設值存在 rtl819x/users/boa/defconfig/config-gw-97f-8812.txt。
  • 使用 rtl819x/users/boa/tools/cvcfg-gw 轉換成 dat 的更新檔。
創作者介紹

邱小新の工作筆記

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