Convertir l'adresse IP source de struct iphdr* équivalent de chaîne à l'aide de Linux netfilter

Je veux convertir la source & adresses IP de destination d'un paquet capturé en utilisant netfilter en char *.

Dans mon netfilter crochet de fonction, j'ai:

sock_buff = skb; //argument 2 of hook function

//ip_header is struct iphdr*
ip_header = (struct iphdr *)skb_network_header(sock_buff);

//now how to convert ip_header->saddr & ip_header->daddr to char *
//ip_header->saddr & ip_header->daddr are of type __be32

Grâce.

Avec inet_ntoa()?
La conversion doit être effectuée dans le module du noyau. Je ne pouvais pas trouver un fichier d'en-tête dans linux/ dossier contenant inet_ntoa() fonction. Je n'ai trouver in_aton (sous linux)/inet.h qui fait exactement le contraire, convertit char* __be32.
Oups, noyau. Essayez ceci; printk("ip-address is " NIPQUAD_FMT "\n", NIPQUAD(ip_header->saddr));. Je ne peux pas accéder à mes hôtes linux à partir d'ici, donc je ne peux pas dire où les macros sont définies. Et c'est pour ipv4 uniquement.

OriginalL'auteur Jake | 2012-02-15