네트워크 드라이버 내부에서 ip 갱신 질문입니다.

drost의 이미지

안녕하세요,

지금 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되어서 사용할 수 없거나.. 하더군요.

조언을 부탁드립니다. 미리 감사드립니다.

bushi의 이미지

리눅스 커널엔 dhcp 클라이언트도 있고 bootp 클라이언트도 있습니다.
부팅끝나면 메모리에서 날아가버리는 코드니 필요하면 수정해서 사용하시던가 복사해서 사용하시고요.

그리고,
부팅끝나고 dhcp client 데몬을 시작하시면 사용자가 아무 간섭을 하지 않아도 DHCP 서버의 통제에 따라 항상 적절하게 대응합니다.

OTL

drost의 이미지

빠른 답변 진심으로 감사드립니다.

말씀해주신 부분을 찾아보도록 하겠습니다.
좀 간단한 방법이 없을까(DHCP 갱신 이벤트가 일어나도록 reset/restart하는 API..) 고민했는데,
소스를 참고해서 dhcp의 renew 작업을 직접 하도록 하는 방법을 찾아봐야 할것 같습니다.

그리고 디바이스가 DHCP로 IP를 받아올 순 있지만, 이후에 자신만의 프로토콜을 이용하여
IP만 쏙 바뀌는지라 그렇게 IP가 바뀐 이후에 인터넷을 못하고 있네요..
말씀해주신대로 DHCP 서버와 통신을 통해서 바뀌는 거라면 좋았을텐데요..

감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.