chapter 07-01

資料現在值檔案的錯誤處理

mcm_daemon 啟動後, 會檢查資料檔案是否有錯誤 [詳細][04], 當發現到有錯誤時, 會做處理.

有四種處理方式 :
還原預設值 (內部) mcm_daemon 自動將資料還原到預設值
還原預設值 (外部) 如果設備需要重新開機做處理, 使用此方式執行外部批次檔或程式實行
除錯 (還原預設值-內部) 手動檢查發生的錯誤並嘗試修正, 如果無法處理需要還原到預設值則使用 [還原預設值 (內部)] 方式處理
除錯 (還原預設值-外部) 手動檢查發生的錯誤並嘗試修正, 如果無法處理需要還原到預設值則使用 [還原預設值 (外部)] 方式處理

啟用方式為在執行 mcm_daemon 時帶入 -e ? 參數
0 還原預設值 (內部)
1 還原預設值 (外部)
2 除錯 (還原預設值-內部)
3 除錯 (還原預設值-外部)

當發現到有錯誤時, 程式會顯示錯誤訊息 [詳細].


資料錯誤的種類

以下是能夠檢測到並且可以標記的錯誤.

遺失 parent-entry

範例 :
有如下的資料
device.vap.#8.station.#20 mac_addr:00:11:22:33:44:55 rule:3

如果 device.vap.#8 的資料不存在, 就會檢查到發生錯誤

遺失 entry

範例 :
有如下的資料
device.vap.#8.station.#20 mac_addr:00:11:22:33:44:55 rule:3

如果 device.vap.#8 的資料不存在, 就會檢查到發生錯誤


範例 :
device.system 是 gs 類型的資料, 但是卻不存在, 就會檢查到發生錯誤.


範例 :
有如下的資料
device.vap.#8 ssid:open-1 channel:10

但是 device.vap.#8.extra 不存在.
device.vap 是 gs 類型的資料, 但是卻不存在, 就會檢查到發生錯誤.

重複的 entry

範例 :
有如下的資料
device.vap.#23 ssid:wap2-3 channel:0
device.vap.#23 ssid:wap2-3 channel:0

device.vap.#23 重複, 檢查到發生錯誤

未知的參數

範例 :
有如下的資料
device descript:Wireless%20Device abc123

abc123 是無法識別的資料, 檢查到發生錯誤

未知的 member

範例 :
有如下的資料
device.limit.#3 name:normal priority:10 type:app

type:app 是無法識別的 member, 檢查到發生錯誤

遺失 member

範例 :
有如下的資料
device.system date:2015/06/07 ip_addr:192.168.10.254 loading:45.678

uptime 遺失, 檢查到發生錯誤

重複的 member

範例 :
有如下的資料
device.vap.#23.extra hidden:0 tx_power:3 tx_power:5

tx_power 重複, 檢查到發生錯誤

無效的數值

範例 :
有如下的資料
device.vap.#23.extra hidden:1234 tx_power:3

hidden 是 isc 類型, 範圍 -128 ~ 127, 檢查到發生錯誤

以下是能夠檢測到但是無法標記的錯誤.

錯誤的格式 (INVALID_FORMAT_01)

範例 :
有如下的資料
abc123

資料格式是 $(entry-path) $(member-list), 缺少中間的分隔符號 [ ]

未知的 group (INVALID_ENTRY-FORMAT_03)

範例 :
有如下的資料
device.management name:admin password:123456

management 是不存在的 group

以下是無法檢測到的資料錯誤.

資料筆數超過上限

資料筆數超過 $(max) 的上限時, 多的資料會被遺棄, 但是不會標記錯誤.

範例 :
有如下的資料
device.vap.#1 ssid:open-1 channel:10
device.vap.#2 ssid:open-2 channel:20
...
device.vap.#64 ssid:open-64 channel:640
device.vap.#65 ssid:open-65 channel:650
device.vap.#66 ssid:open-66 channel:660

device.vap.* 的上限是 64 筆, 所以 #65 和 #66 會被遺棄但是不會被標記錯誤

無法發現的 entry 遺失

遺失 entry 要被發現必須是 child-entry 存在而 parent-entry 不存在才能被發現.

範例 :
device.limit.#3 name:normal priority:10
device.limit.#5 name:height priority:15
device.limit.#6 name:low priority:5

假如 device.limit.#5 遺失, 則無法檢測出來有錯誤