2009-10-06 58 views
0

我正在擺弄ioctl的套接字來獲取當前的接口設置,並且我已經可以獲取IP,接口名稱,網絡掩碼並檢查接口是否啓動或向下,(我只是做IOCTl到SIOCGIFCONF,SIOCGIFNETMASK和SIOCGIFFLAGS)。Linux ioctl - >如何判斷當前的IP是否通過DHCP獲得

我正在尋找一種方法來判斷我的當前IP地址是通過dhcp還是靜態獲得的。

我可以檢查/ etc/network/interfaces中所有我想要的東西,但是我正在尋找一種方法來編程(這個詞是否存在?)。

有沒有人有這方面的見解?

還有一件事,我正在研究Linux(現在)。

乾杯

+0

我覺得這麼多...沒有ioctl或任何東西做類似的東西...在此期間,我已經通過解析文件...所以;) 感謝輸入的傢伙! – 2009-10-08 10:08:13

+0

對於後面的問題,很抱歉:/ etc/network/interfaces總是出現在所有Linux上? – 2012-04-25 12:11:24

回答

3

隨着各種各樣的Linux上的DHCP客戶端 - pumpdhcpcddhclientudhcpc,並且很可能其他人我不知道 - 這是不可能在一般意義上。但是,如果您針對的是特定的發行版 - 比如說「Ubuntu的默認安裝」 - 那麼您可以研究諸如Stefan's之類的解決方案。請注意,這裏列出的所有四個DHCP客戶端都可以安裝在Ubuntu上,並且可以替換默認的DHCP客戶端dhclient。

2

如果您正在運行Ubuntu,租約都存儲在/var/lib/dh​​cp3/dhclient-[interface_name].lease,也許這是一個開始。

0

我不認爲通過內核接口(ioctl)可以判斷是否通過DHCP分配了IP地址,就像在大多數發行版中一樣DHCP是一個用戶級應用程序,只是將遠程源提供的數據配置爲內核,如果用戶手動完成。事實上,如果您查看ISC dhclient,它只會將從DHCP服務器接收到的數據傳遞給執行ifconfig,route和各種其他可作爲用戶鍵入的命令的簡單shell腳本。

因此,您可能需要查看Stefan建議的特定於您的DHCP客戶端和分配的方法。

相關問題