ifconfig, 혹은 route 에 해당하는 내부함수가 있는지요.

jinushun의 이미지

제목 그대로입니다.

같은 결과를 낼 수 있는 내부함수가 있는지 해서요

exec 류를 사용안할려고 하거든요.

답변 기다릴게요

좋은 하루 되세요

이광우의 이미지

라우팅 테이블이나 인터페이스 설정값 등을 직접 작성한 함수를 통해 관리하고자 하신다면 Netlink를 사용하시면 됩니다.

man netlink, man rtnetlink 하시면 관련된 내용 중 일부를 아실 수 있을 겁니다.
정확한 사용법을 알고자 하신다면 위의 매뉴얼 페이지들과 rfc3549 "Linux Netlink as an IP Services Protocol"를 참고 하세요.
netlink 관련된 문서 중에서 rfc 문서가 짱!! 입니다.

구현된 코드는 zebra/quagga, iproute 등의 소스를 보시면 됩니다.

Be Creative For Fun!!

sangwoo의 이미지

jinushun wrote:
제목 그대로입니다.

같은 결과를 낼 수 있는 내부함수가 있는지 해서요

exec 류를 사용안할려고 하거든요.

답변 기다릴게요

좋은 하루 되세요

ifconfig 는 ioctl을 사용하는 것으로 압니다만..

----
Let's shut up and code.

albamc의 이미지

ifconfig이나 route 같은 명령어들은 ioctl을 사용하므로

관련 ioctl을 직접 해주시면 됩니다...

저도 지금 비슷한 케이스로 고민중인데 ...

커널에서 routing table이나 interface config을 바꿔야 되는데 ...

softirq 처리시에 ioctl루틴을 사용하니까 시스템이 바로 죽더군요 ... :shock:

방법이 없나 고민중입니다...

netlink를 사용하면 될지 찾아봐야 겠네요... :D

^^*

saxboy의 이미지

그냥 ifconfig와 route 소스를 읽어보시면 되지 않나요. :D

래리버드의 이미지

ifconfig, route 모두 ioctl을 사용하여 필요한 값들을 변경합니다.

google에서 ioctl 관련 검색하시면, ifconfig, route에서 필요한 ioctl 인자값을 찾으실 수 있습니다.

이런거 하실때는 소스 보시는게 가장 좋은 방법 입니다.

다 아시겠지만, ifconfig, route는 net-tool 패키지에 있습니다.

보다 간결한 소스를 원하시면 busybox의 ifconfig및 route 부분을 보시면

찾고자 하는 해답을 찾으실 수 있습니다.

비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.

mushim의 이미지

네트워크 자료마다 커널과 통신하는 방법이 다릅니다.

네트워크 인터페이스의 경우, PF_INET 타입으로 socket 을 만든후, ioctl 함수를 사용하면 됩니다. 그런데 ioctl 의 경우, 해당하는 자료의 입출력에 대해서 일일이 정의를 해야하니 유연성이 떨어지게 됩니다.

그래서 라우팅에 관련된 정보는, 이광우님 말씀처럼 PF_NETLINK 타입의 socket 을 만든후, netlink protocol 에 따라서 자료를 주고 받게 되죠. 이 경우에는 ioctl 을 따로 만들필요없이 recv, send 함수를 사용하시면 됩니다.

참고로, 패킷필터링을 하는 경우는 PF_PACKET 타입의 socket 을 사용하게 됩니다.

jinushun의 이미지

상세한 답변 감사합니다.

제가 아직 내공이 부족하여. 확 와닫지는 않는데요..

간단한 예제 코드를 보여주실수 는 없으신지요..

죄송합니다.^^

----------------------------
www.nate.com
----------------------------

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.