[완료] 2.6 커널에서 inet_protos 변수를 외부 모듈(드라이버)에서 참조할 수 있는 방법있나요?

eunsiri00의 이미지

2.6 커널상에서,

UDP 프로토콜 핸들러를 대체하여 기능추가를 하려고 하는데요,

inet_del_protocol(..기존 UDP 프로토콜..);

inet_add_protocol(..새로운 UDP 프로토콜..);

위와 같이 하면 될 것 같은데,

기존 UDP 프로토콜을 얻어올 수 있는 방법을 잘 모르겠습니다.

커널 수정을 한다면 EXPORT_SYMBOL(inet_protos); 이것만 추가하면 물론 가능합니다만,

커널 소스에 대한 수정은 안 했으면 합니다.

질문을 요약하면, 커널 수정없이 기존 UDP 프로토콜 변수(inet_protos[UDP])를 얻어올 수 있는

방법을 아시는 분을 알려주시기 바랍니다.

PS> 2.4 커널에서는 next 필드변수로 inet_protos 참조가 가능이 했던 것 같은데,
2.5커널 후반부터는 이 쪽 관련 커널이 변경된 것 같습니다.

bushi의 이미지

cat /proc/kallsyms | grep inet_protos
cat /boot/System.map-2.6.25.11-60.fc8 | grep inet_protos

cat /proc/kallsyms | grep udp_protocol
cat /boot/System.map-2.6.25.11-60.fc8 | grep udp_protocol

모듈에서 사용하려면 이런 식으로 주소를 직접 알아내는 방법 밖에 없을 겁니다.

크래킹을 막기 위해 거의 대부분 감춰지고 바뀌었습니다.

OTL

eunsiri00의 이미지


답변 감사드립니다.

그럼 이러한 외부모듈에서 UDP 프로토콜을 대체하는 작업은,

이 외부모듈에서 참조할 수 있게 커널을 수정한 후, 작업하는 것이 가장 바람직한 것인지요~?

bushi의 이미지

아뇨.
기존의 IPPROTO_UDP 드라이버 대신 새로운 드라이버가 포함될 수 있도록
패치파일을 만들어 배포하거나
패치된 소스로 컴파일 한 커널 바이너리와 패치파일을 같이 배포하는 것이 가장 바람직합니다.

모듈 형태가 아니라 built-in 으로만 사용할 것이라면,
좀 변칙적이긴 하지만,
inet_protos[] 를 그냥 참조해서 수정해버리는 것도 가능합니다.
다만, 문제가 생겼을 때 다른 사람이 실마리를 잡기가 어렵습니다.

커널 수정이 불가능하거나,
수정본의 배포/설치가 절차상으로 곤란하다면,
해당 모듈의 소스만 공개하고 모듈 로드 스크립트를 같이 배포하시는 방법도 있습니다.
실제로 언젠가 google summer code 에 ICMP 를 대체해서 rbping 을 구현한 프로젝트의 결과물 배포는 이런 식으로 했었습니다.
(모듈 로드 스크립트가 아니라 README 에 주소를 알아내는 방법과 코드를 수정하는 방법이 적혔던 것으로 기억합니다)

OTL

eunsiri00의 이미지

구글 코드에서 rbping 을 검색해서 소스를 보니깐 답이 보이네요.

이 방법이 제일 좋은 방법인 듯 합니다.

저도 커널을 변경하면 안 되는 상황이였거든요..

다시한번 답변 감사드립니다!! :>

댓글 달기

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