目前日期文章:201606 (2)

瀏覽方式: 標題列表 簡短摘要
  • +rtk_nand_profile() - drivers/mtd/rtk_nand_sd.c
  • ++mtd_device_parse_register() - drivers/mtd/mtdcore.c
  • +++parse_mtd_partitions() - drivers/mtd/mtdparts.c
  • ++++get_partition_parser() - drivers/mtd/mtdparts.c
  • +++add_mtd_partitions() - drivers/mtd/mtdparts.c
  • ++++allocate_partition() - drivers/mtd/mtdparts.c

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

  • snmplib/default_store.c(說明),主要設計來儲存全域變數。
  • 參數 m: 用來設定環境變數 MIBS,snmplib/mib.c 的 netsnmp_init_mib() 會使用,如果 MIBS 沒設定則使用 NETSNMP_DEFAULT_MIBS 放在 include/net-snmp/net-snmp-config.h。
  • 參數 M: 用來設定環境變數 MIBDIRS, snmplib/mib.c 的 netsnmp_get_mib_directory() 會用到,函數有點複雜,有空在整理。
  • init_agent() 用來初始化一個 agent,原始碼在 agent/snmp_vars.c,函數有點複雜,有空在整理。
  • init_mib_modules() 只是用來執行 netsnmp_access_interface_init() 跟註冊 shutdown 機制,有點怪怪,再研究。

snmplib/callback.c

  • snmp_call_callbacks: 用來執行 callback 函數。
  • snmp_register_callback: 用來註冊 callback 函數。
  • snmp_unregister_callback: 用來移除 callback 函數。

snmplib/parse.c

  • parse -> parse_compliance ->read_module_internal -> parse()。
  • parse -> parse_imports ->read_module_internal -> parse()。
  • main -> init_snmp -> netsnmp_init_mib -> netsnmp_read_module ->read_module_internal -> parse()

snmplib/read_config.c

  • read_configs() -> read_configs_optional() ->read_config_with_type_when() -> read_config()。
  • init_agent() -> init_agent_read_config() -> register_app_config_handler() -> register_config_handler() -> internal_register_config_handler() -> (*ltmp)->parse_line = parser;
  • init_agent() -> agent_module_inits.h -> init_vacm_conf() -> init_vacm_config_tokens() -> register_app_config_handler() -> .......

snmplib/mib.c(netsnmp_init_mib)

  • netsnmp_init_mib_internals: 初始化變數。
  • netsnmp_fixup_mib_directory: 修正 mib 目錄,把環境變數 HOME 替換掉 $HOME 字串。
  • netsnmp_mibindex_load: 載入 mib index,這個不知作用。
  • add_mibdir 待寫。

NETSNMP_DS_LIB_MIBDIRS

  • netsnmp_set_mib_directory: 設定 MIB 目錄。
  • snmpd 使用參數 M 用來設定 MIB 目錄。
  • netsnmp_get_mib_directory: 用來讀取 MIB 目錄。
  • 沒有使用參數 M 用來設定 MIB 目錄,則讀取環境變數 MIBDIRS。
  • 沒有環境變數 MIBDIRS,就使用 confmibdir 變數(由handle_mibs_conf()設定)。
  • 沒有confmibdir 變數,最後就使用 NETSNMP_DEFAULT_MIBDIRS($HOME/.snmp/mibs:/usr/share/snmp/mibs)。

snmplib/snmp_api.c (_init_snmp)

  • snmp_res_init(): 用來初始化 mutex 變數。

讀取 config 檔案

檔案 函數 執行
+agent/snmpd.c main init_snmp(app_name)
++snmplib/snmp_api.c init_snmp read_premib_configs
+++snmplib/read_config.c read_premib_configs read_config_files(PREMIB_CONFIG)
++++snmplib/read_config.c read_config_files read_config_files_of_type
+++++snmplib/read_config.c read_config_files_of_type read_config_files_in_path
++++++snmplib/read_config.c read_config_files_in_path read_config
+++snmplib/read_config.c read_premib_configs read_configs_optional
++++snmplib/read_config.c read_configs_optional read_config_with_type_when
+++++snmplib/read_config.c read_config_with_type_when read_config
++snmplib/snmp_api.c init_snmp read_configs
以下都相同,只差在 snmp_call_callbacks 函數,參數 SNMP_CALLBACK_PRE_READ_CONFIG 及 SNMP_CALLBACK_PRE_PREMIB_READ_CONFIG 不同。
  • read_config_files_of_type 如果 netsnmp_getenv("SNMPCONFPATH") 有值則只讀取這個目錄下的 config 檔,不然會透過 get_configuration_directory() 來讀取 config 檔。
  • read_config_files_in_path 根據 ctmp->fileHeader 來決定要讀取的 config 檔案。
  • snmpd -C 會取消搜尋預設目錄下的 config 檔案,設定 NETSNMP_DS_LIB_DONT_READ_CONFIGS 為 1,在 read_config_files_of_type 讀取 NETSNMP_DS_LIB_DISABLE_CONFIG_LOAD 判斷,二者值皆為 6。
  • snmpd -c 會讀取自建的 config 檔案,可用分隔符號 "," 來輸入多個 config 檔案。在 read_premib_configs 內 改成 read_configs_optional() -> read_config_with_type_when() -> read_config()。

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