Desidero convertire gli indirizzi IP di origine & da un pacchetto acquisito utilizzando netfilter in char *.Converti indirizzo IP sorgente da struct iphdr * a equivalente stringa usando Linux netfilter
Nella mia funzione di hook netfilter, ho:
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
Grazie.
Con inet_ntoa()? –
@ ott-- La conversione deve essere eseguita nel modulo del kernel. Non sono riuscito a trovare un file di intestazione in linux/cartella contenente la funzione inet_ntoa(). Ho trovato in_aton() in linux/inet.h che fa esattamente il contrario, converte char * in __be32. – Jake
Oops, kernel. Prova questo; 'printk (" indirizzo-ip è "NIPQUAD_FMT" \ n ", NIPQUAD (ip_header-> saddr));'. Non posso accedere ai miei host Linux da qui, quindi non posso dire dove sono definite le macro. Ed è solo per ipv4. –