IP-Adresse von sk_buff
Schreibe ich ein kernel-Modul registriert eine netfilter-hook. Ich werde versuchen, die ip-Adresse des Anrufers die sk_buff->saddr
Mitglied. Gibt es eine Möglichkeit, die ich bekommen kann die IP-Adresse in lesbarer d.h. x ist.x.x.x-format?
Fand ich die Funktion inet_ntop()
aber es scheint nicht verfügbar kernel-Header. Wie kann ich umwandeln \xC0\xA8\x00\x01 auf 192.168.0.1 ?
inet_ntop() und sein Bruder inet_pton() sind tatsächlich in arpa/inet.h , ich bin auf der Suche nach der kernel-Implementierungen heute.
ähmm, netfilter-log Ziel müssen dies tun... ich würde dort zu suchen.
&Rohit: um ehrlich zu sein, wenn Sie nicht wissen, wie man format-bytes in einem string wie, dass, sollten Sie wahrscheinlich nicht schreiben, ein kernel-Modul. Versuchen Sie, einige user-space-Zeug zuerst.
&Evan: ich bin damit einverstanden, aber es gab nicht viel, was ich über es tun könnte. Taufe durch Feuer ist, wie ich es sehe.
ähmm, netfilter-log Ziel müssen dies tun... ich würde dort zu suchen.
&Rohit: um ehrlich zu sein, wenn Sie nicht wissen, wie man format-bytes in einem string wie, dass, sollten Sie wahrscheinlich nicht schreiben, ein kernel-Modul. Versuchen Sie, einige user-space-Zeug zuerst.
&Evan: ich bin damit einverstanden, aber es gab nicht viel, was ich über es tun könnte. Taufe durch Feuer ist, wie ich es sehe.
InformationsquelleAutor Rohit | 2009-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Makros definiert in include/linux/kernel.h
NIPQUAD für ipv4-Adressen und NIP6 für ipv6-Adressen.
Gibt es reichlich Beispiele in der kernel-Quellen zu nutzen, diese zu drucken, ip-Adressen in für Menschen lesbaren format. Zum Beispiel:
Hoffe, das hilft.
NIPQUAD
wurde ellimated nach 2.6.38. Verwenden%pI4
stattKam über dieses später. Es ist jetzt
in4_pton()
/net/core/utils.cdas Gegenteil tut.
InformationsquelleAutor anbhat
Sollten Sie die %pI4 extended-format Planer zur Verfügung gestellt von printk():
InformationsquelleAutor Cong Wang
printk verarbeiten kann dies direkt:
IPv4-Adressen:
IPv6-Adressen:
Referenz: https://www.kernel.org/doc/Documentation/printk-formats.txt
InformationsquelleAutor 4pie0
Einfach. Die IP-Adresse in "x".x.x.x" - format genannt dotted-quad für einen Grund. Jede Zahl entspricht einem byte, für eine Gesamtmenge von 4 bytes, die in Ihre Adresse.
So, mit den 4-byte-Adresse, würden Sie drucken Sie einfach den Dezimalwert jedes byte.
Quick-and-dirty-Beispiel (ersetzen Sie printf mit Ihrer Funktion Ausgang der Wahl):
InformationsquelleAutor Yann Ramin
Können Sie strtol konvertieren Sie jedes Stück, um es in den integer-form.
InformationsquelleAutor John Boker
IP-Adresse erhalten werden konnte[0].ein[1].ein[2].[3]
InformationsquelleAutor Rohit