0

現在のインターフェース設定を取得するためにソケット ioctl をいじっています。すでに IP、インターフェース名、ネットマスクを取得し、インターフェースがアップかダウンかを確認できます (SIOCGIFCONF、SIOCGIFNETMASK、および SIOCGIFFLAGS に対して IOCTl を実行するだけです)。

現在の IP アドレスが dhcp を介して取得されたものか、静的なものかを確認する方法を探しています。

必要なものはすべて /etc/network/interfaces で確認できますが、プログラムでそれを行う方法を探しています (この単語は存在しますか?)。

誰かがこれについて何か洞察を持っていますか?

もう1つ、私はLinuxに取り組んでいます(今のところ)。

乾杯

4

3 に答える 3

3

Linux の多種多様な DHCP クライアント ( pumpdhcpcddhclientudhcpc、およびおそらく私が知らない他のもの) では、これは一般的な意味では不可能です。

ただし、特定のディストリビューション (たとえば、「Ubuntu のデフォルト インストール」) をターゲットにしている場合は、Stefan などのソリューションを調査できます。ここにリストされている 4 つの DHCP クライアントはすべて Ubuntu にインストールでき、デフォルトの DHCP クライアントである dhclient を置き換えることができることに注意してください。

于 2009-10-06T17:20:13.867 に答える
2

Ubuntu を実行している場合、リースは /var/lib/dh​​cp3/dhclient-[interface_name].lease に保存されます。

于 2009-10-06T11:16:54.907 に答える
0

ほとんどのディストリビューションで IP アドレスが DHCP 経由で割り当てられているかどうかをカーネル インターフェイス (ioctl) 経由で伝えることはできないと思います。DHCP は、リモート ソースから提供されたデータを使用してカーネルを設定するだけのユーザーランド アプリです。手動で行いました。実際、ISC dhclient を見ると、DHCP サーバーから受信したデータを単純なシェル スクリプトに渡しているだけです。シェル スクリプトは、ifconfig、route、およびユーザーとして入力できるその他のさまざまなコマンドを実行します。

そのため、Stefan が提案したように、DHCP クライアントとディストリビューションに固有の方法を検討する必要があるでしょう。

于 2009-10-27T06:24:06.063 に答える