프로그래밍 방식으로 마지막 DHCP 임대 시간 쿼리

프로그래밍 방식으로 마지막 DHCP 임대 시간 쿼리

저는 빌드루트 임베디드 Linux를 가지고 있으며 C++ 프로그램을 통해 이더넷 포트 설정(예: 비활성화, 정적 또는 DHCP)을 변경할 수 있습니다. DHCP로 전환할 때 장치가 실제로 DHCP 임대를 획득한 시기(즉, 타임스탬프)를 확인하는 것이 좋습니다.
이것을 어떻게 결정할 수 있습니까?

현재 IP 주소를 폴링하고 변경 사항을 기다리는 것은 옵션이 아닙니다.

답변1

버전을 얻은 후 종료되도록 uhdcpc이 옵션을 사용하여 실행 하려고 합니다 . --quit오류를 제거하려면 프로그램의 반환 값이 != 0인지 확인하세요.

성공적으로 반환되면 임대를 받게 됩니다.

데몬으로 실행 해야 하는 경우 udhcpc(이상해 보입니다. 인터페이스를 관리하는 사람이 아니라 인터페이스를 관리하는 사람 udhcpc이므로 필요한 경우 수동으로 임대를 갱신할 수도 있습니다.) 솔직히 저는 pcap적절한 UDP 패킷을 수행하면 됩니다. 그런 다음 내부를 살펴보세요.

또한 Run은 --syslog최소한 심각한 오류가 발생한 시기를 확인할 수 있습니다.

생각: 네트워크 관리 프레임워크를 작성하는 경우 백만 번째로 바퀴를 재발명하는 것입니다. 나는 이 작업을 피하고 싶습니다. 사용 중에 발견된 상황에서 엣지 케이스이거나 불리하거나 복구하기 어려운 네트워크 구성이 충분합니다. 다른 사람들도 이전에 같은 문제를 해결했습니다.
나에게는 당신이 하고 있는 일이 마치 재작성 임무를 맡은 것처럼 들립니다.ConnMan이는 이러한 종류의 임베디드 장치 네트워크 제어를 위한 것입니다. 그것은읽어보기 파일글을 쓰는 방법에 영감을 주더라도 재미있을 수 있습니다. (ConnMan은 확실히 필요한 것보다 더 많은 기능을 수행하지만 컴파일하기 전에 사용하지 않는 기능을 비활성화할 수 있습니다.)
제 생각에는 이것이 옳은 일이라고 생각합니다. DHCP를 처리하는 데몬은 본질적으로 전체 네트워크를 관리하는 관리 데몬과 밀접하게 연결되어 있습니다. 그들은 서로 직접 대화해야 합니다(아시다시피 임대 시간과 기간을 얻는 데 문제가 있기 때문에!). 그렇지 않으면 완전히 동일한 프로세스입니다. 보세요connmanctl(1)작성 중인 네트워크 제어 시스템의 인터페이스가 어떤 모습인지 이해하기 위한 매뉴얼 페이지입니다.

관련 정보