ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年8月22日 星期三

hotspot (wifiap) 的 dhcp lease time

hotspot 的 dhcp,dns 等動作是交給 dnsmasq 這個程式來作。

netd 的 TetherController.cpp 是負責叫起 dnsmasq 動作的部份。

dnsmasq 跟一般的 command 一樣,是由 command argument 決定動作。
argument 也由 TetherController.cpp 負責。

dhcp 的 lease time 也由 argument 決定。

以下就是準備好 argument,然後用execv( ) 啟動 dnsmasq 的 code: int num_processed_args = 4 + (num_addrs/2) + 1; // 1 null for termination char **args = (char **)malloc(sizeof(char *) * num_processed_args); args[num_processed_args - 1] = NULL; args[0] = (char *)"/system/bin/dnsmasq"; args[1] = (char *)"--no-daemon"; args[2] = (char *)"--no-resolv"; args[3] = (char *)"--no-poll"; int nextArg = 4; for (int addrIndex=0; addrIndex < num_addrs;) { char *start = strdup(inet_ntoa(addrs[addrIndex++])); char *end = strdup(inet_ntoa(addrs[addrIndex++])); asprintf(&(args[nextArg++]),"--dhcp-range=%s,%s,1h", start, end); } if (execv(args[0], args)) { LOGE("execl failed (%s)", strerror(errno)); }

其中 : "--dhcp-range=%s,%s,1h" 最後一項就是 lease_time: 1h。


dnsmasq 啟動後,會由 read_opts( ) 負責 parsing argument, update parameter.



修改後,client 端可以用 showlease wlan0 這個 command 來看收到的 dhcp server 傳來的 lease time 是多少。

沒有留言:

標籤

網誌存檔