
私はビルドルート組み込みLinuxを持っており、C ++プログラムを使用してイーサネットポート設定(無効、静的、DHCPなど)を変更できます。 DHCPに切り替えるときは、デバイスが実際にDHCPリースを獲得した時期(つまりタイムスタンプ)を確認することをお勧めします。
これをどのように決定できますか?
現在のIPアドレスをポーリングして変更を待つことはオプションではありません。
答え1
バージョンを取得した後に終了するようにuhdcpc
このオプションを使用して実行しようとします。--quit
エラーを取り除くには、プログラムの戻り値が!= 0であることを確認してください。
正常に返却されると、リースを受け取ります。
デーモンとして実行する必要がある場合udhcpc
(不思議です。インターフェイスを管理する人ではなくインターフェイスを管理する人udhcpc
なので、必要に応じて手動でリースを更新することもできます)、正直なところ、pcap
適切なUDPパケットを実行するだけです。それから内部を見てください。
また、Run は、--syslog
少なくとも重大なエラーが発生した時期を確認できます。
考え方:ネットワーク管理フレームワークを作成する場合は、百万番目に車輪を再発明することです。私はこれを避けたいです。使用中に検出された状況では、エッジケース、不利、または回復が困難なネットワーク構成で十分です。他の人も以前同じ問題を解決しました。
私には、あなたがやっていることが、まるで書き換え任務を引き受けたように聞こえます。ConnMan
これは、この種の組み込みデバイスのネットワーク制御のためのものです。それ閲覧ファイル書く方法にインスピレーションを与えても楽しいかもしれません。 (ConnManは確かに必要以上の機能を実行しますが、コンパイルする前に使用していない機能を無効にすることができます。)
私の考えでは、これが正しいことだと思います。 DHCPを処理するデーモンは、本質的にネットワーク全体を管理する管理デーモンと密接に関係しています。彼らは互いに直接話す必要があります(ご存知のように、リースの時間と期間を取得するのに問題があるので!)。それ以外の場合はまったく同じプロセスです。見てconnmanctl(1)
作成中のネットワーク制御システムのインターフェースがどのようなものかを理解するためのマニュアルページです。