네트워크 드라이버 내부에서 ip 갱신 질문입니다.
글쓴이: drost / 작성시간: 금, 2010/05/14 - 3:39오후
안녕하세요,
지금 network kernel module을 제작하고 있습니다.
이 네트워크는 무선 통신으로 외부에서 IP를 dhcp를 통해서 할당받습니다.
문제는 이 IP는 외부 이벤트의 영향으로 이미 할당된 이후,
외부에서 변경되어 다시 할당되는 경우가 있습니다.
ifconfig 와 같은 명령어로 dhcp를 이용해서 ip를 받는 것이 가능한데,
원하는 작업은 이것을 드라이버 레벨에서 사용자의 간섭없이 하고 싶습니다.
즉, 1.1.1.1이라는 IP를 할당받아서 통신하다가, 내부적으로 2.2.2.2로
바뀌어 있으면 이것을 새로운 IP로 새롭게 할당해주거나, 아니면 차라리
dhcp 할당 이벤트가 새롭게 일어나게 하려 합니다.
질문1) 네트워크 드라이버에서 dhcp를 renew 업데이트 하게 할 수 있는
방법이 있습니까? netif_ca.. off/on을 해주는 것은 소용이 없더군요.
질문2) 아니면 아예 드라이버 레벨에서 IP를 정적으로 할당하게 해주는
(ifconfig xxx new_ip 처럼..) 방법은 없나요?
inet_ioctl을 사용하는 방법은 socket을 요구하거나, 혹은 2.6에서
deprcated되어서 사용할 수 없거나.. 하더군요.
조언을 부탁드립니다. 미리 감사드립니다.
Forums:
리눅스 커널엔 dhcp
리눅스 커널엔 dhcp 클라이언트도 있고 bootp 클라이언트도 있습니다.
부팅끝나면 메모리에서 날아가버리는 코드니 필요하면 수정해서 사용하시던가 복사해서 사용하시고요.
그리고,
부팅끝나고 dhcp client 데몬을 시작하시면 사용자가 아무 간섭을 하지 않아도 DHCP 서버의 통제에 따라 항상 적절하게 대응합니다.
OTL
빠른 답변 진심으로
빠른 답변 진심으로 감사드립니다.
말씀해주신 부분을 찾아보도록 하겠습니다.
좀 간단한 방법이 없을까(DHCP 갱신 이벤트가 일어나도록 reset/restart하는 API..) 고민했는데,
소스를 참고해서 dhcp의 renew 작업을 직접 하도록 하는 방법을 찾아봐야 할것 같습니다.
그리고 디바이스가 DHCP로 IP를 받아올 순 있지만, 이후에 자신만의 프로토콜을 이용하여
IP만 쏙 바뀌는지라 그렇게 IP가 바뀐 이후에 인터넷을 못하고 있네요..
말씀해주신대로 DHCP 서버와 통신을 통해서 바뀌는 거라면 좋았을텐데요..
감사합니다.
댓글 달기