udhcp
原始碼詳解(三)
下
之配置資訊的讀取
author : hui
from :
created : 2010-10-3
上節講解了
read_config
函式,讀取配置資訊到
server_config
的相應成員變數裡,但
read_config
函式只負責把配置資訊重檔案裡讀出來,具體怎麼把資訊填寫到指定的位址內,是呼叫
keywords
陣列裡元素的
handler
成員指向的函式完成。這節就是講解完成具體的寫入操作中比較複雜的函式。
1)int read_opt(const char *line, void *arg)
在read_config
從udhcpd.conf
裡讀到token = 「opt」
或「option」;
摘自udhcp.conf裡的options配置資訊
呼叫handler: read_opt
const_line
的從udhcpd.conf
的讀出的
line
line
的值例:
dns192.168.10.2 192.168.10.10
subnet255.255.255.0 等
arg的值是&(server_config.options)
即是把line
的值儲存到頭結點為
*arg
的煉表裡去。
read_opt
函式與read_config
有點類似,也借助乙個輔助的陣列進行資訊新增。
在以前章節有講解過選項資訊的儲存組織方式,
clv:
code + length + value,value
我們檔案裡讀出來了,
code
和length
在哪?現在來看下這個輔助陣列:
元素結構體的定義:
該結構體定義的陣列:
這個輔助陣列的做法與
read_config
裡的有些類似,
name
即是keyword
,flag
可以求出
length
,code
即code
。講解這些函式真是痛苦,給你下套,而且是一環套一環的!
得到了每個選項資訊裡的
value,
其值儲存在
opt指向的記憶體,
value
長度為length
,code
在struct dhcp_option
型別的option
裡。呼叫
attach_option
函式把選項資訊的新增到
server_config.options
選項鍊表裡。
/* * add an option to the opt_list *
* attach_option
函式把從檔案裡讀出的以
options
或opt
標識的配置資訊
* 在函式
read_opt
,通過option->flag
處理好了
line
裡val
值存放在
buffer *
再把配置資訊填入到
struct option_set
的煉表裡*
* 引數
:opt_list:&(server_config.options)
*option:
根據選項頭確定的
dhcp_options
陣列裡的一項
*buffer
配置資訊
(去除了
option/opt
和選項頭,而且已經轉換過了)
*length
配置資訊的大小
(以位元組為單位)
*/ static void attach_option(struct option_set **opt_list, struct dhcp_option *option, char *buffer, int length);
新增到煉表裡分為兩種情況
①煉表裡沒有與將要新增的選項資訊的
code
一樣的結點,直接新增到鍊錶即可。
②煉表裡已有與將要新增的選項資訊的
code
一樣的結點,該
code
選項資訊
flag
選項裡opt_list
(例如:
dns選項的
value
是ip list
有兩個ip
):
}
2)、int read_staticlease(const char *line, void *arg)
udhcpd.conf
裡static lease:
udhcp原始碼詳解(三) 下
udhcp原始碼詳解 三 下 之配置資訊的讀取 author hui 632254504 qq.com from created 2010 10 3 上節講解了read config函式,讀取配置資訊到server config的相應成員變數裡,但read config函式只負責把配置資訊重檔案裡讀...
udhcp原始碼詳解(三) 下 之配置資訊的讀取
上節講解了read config函式,讀取配置資訊到server config的相應成員變數裡,但read config函式只負責把配置資訊重檔案裡讀出來,具體怎麼把資訊填寫到指定的位址內,是呼叫keywords陣列裡元素的handler成員指向的函式完成。這節就是講解完成具體的寫入操作中比較複雜的...
udhcp詳解原始碼(序)
udhcp原始碼詳解 序 author hui 632254504 qq.com from created 2010 10 1 這篇udhcp詳解是基於busybox 1.02裡的 busybox 1.02 networking udhcp 目錄下的原始碼進行講解與分析,主要是對udhcp serv...