udhcp原始碼詳解(三) 下

2021-09-30 08:03:24 字數 2851 閱讀 8451

udhcp

原始碼詳解(三)

之配置資訊的讀取

author : hui

<[email protected]>

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...