ioctl를 이용한 프로그래밍.

deux9745의 이미지

ioctl를 이용해 라우팅 테이블을 수정하려고 하는데

ioctl 관련 정보를 얻을 수 있는 곳을 알고 계시면 알려주세요.

여기 게시판에서 ioctl로 검색해보면 Advanced Programming in the UNIX Environment

를 보면 좋다고 나와 있는데 봐도 몇장되지 않고 예제도 별로 없어서 감을 잡을 수가 없습니다.

제가 하려는 것은 ioctl를 이용해 라우팅 테이블을 수정하는 정도 입니다.

만약 유사한 샘플코드가 있으면 올려주시면 감사하겠습니다.

그럼.

래리버드의 이미지

Advanced Programming in the UNIX Environment보다는 아마
스티븐슨 아저씨의 UNIX Network Programming Volume1 이 좀 더
많은 정보를 제공해 줄 것입니다.
그리고, 구글 가셔서 검색창에서 "ioctl" 혹은 "route" 로 검색해 보면
ioctl에서 route에 대한 인자값에 대한 정보가 꾀 많은 나올 것 입니다.
또 한가지가 더 있다면, route 소스를 보고 수정하는것도 방법이고요.
route 명령어는 net-tools안에 포함되어 있습니다.
좀 더 간결한 소스를 원하시면 busybox에서 route 부분을 보시면 됩니다.

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

deux9745의 이미지

busybox에 있는 route 소스가 휠씬 보기 쉽군요.

지금 거의 수정해서 테스트까지 완료했습니다.

근데 궁금한게 있는데

system("route del 192.168.30.10");

을 하는 것 보단 ioctl을 사용을 사용해 라우팅 테이블을 수정하는것이

어느정도 빠른지 알고 싶습니다. 대략적으로나마..

kslee80의 이미지

system() 이 권장되지 않는 이유는
system() 콜 수행시 새로운 프로세스가 뜨기 때문이죠..

아시겠지만, system() 이 호출되면,
실제적으로는 fork() - exec() 과정을 거치게 되기 때문입니다.

그 외에 보안적인 측면의 이유도 있는듯 싶은데..
그쪽은 자세한 것은 모르겠습니다..

mach의 이미지

kslee80 wrote:
system() 이 권장되지 않는 이유는
system() 콜 수행시 새로운 프로세스가 뜨기 때문이죠..

아시겠지만, system() 이 호출되면,
실제적으로는 fork() - exec() 과정을 거치게 되기 때문입니다.

그 외에 보안적인 측면의 이유도 있는듯 싶은데..
그쪽은 자세한 것은 모르겠습니다..


system()은 shell을 하나 띄우고, 그 쉘이 fork()-exec()해서 해당 프로세스를
실행시킵니다. 이때, sh이 뜬 순간에 노이즈를(또는 버그등) 주면 이 프로그램을 사용하는
사람에게 쉘 프롬프트가 떨어질 수 있습니다.
만일 클라이언트가 bbs클라이언트 같은 경우에는 쉘을 얻었을테니 무섭지요.

또하나는, system()에서 실행시킨 프로그램을 바꿔치기(backdoor)해서
이상한 기능을 수행하도록 바꿔버리면 아프지요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

댓글 달기

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