Ciao a tutti,
sto cercando di implementare un firewall usando Netfilter. Vi posto il codice utilizzato.

codice:
#define __KERNEL__
#define MODULE
#include <linux/ip.h>             
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/netdevice.h>     
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/skbuff.h>         
#include <linux/udp.h>                   
static struct nf_hook_ops netfilter_ops;                     
static unsigned char *ip_address = "\x7F\x00\x00\x01";
static char *interface = "wlan0";                         
unsigned char *port = "\x00\x17";                       
struct sk_buff *sock_buff;                             
struct udphdr *udp_header;                             
unsigned int main_hook(unsigned int hooknum,
                  struct sk_buff **skb,
                  const struct net_device *in,
                  const struct net_device *out,
                  int (*okfn)(struct sk_buff*))
{
  if(strcmp(in->name,interface) == 0){ return NF_DROP; }     
       
  sock_buff = *skb;
  if(!sock_buff){ return NF_ACCEPT; }                   
  if(!(ip_hdr(sock_buff))){ return NF_ACCEPT; }             
  if(ip_hdr(sock_buff)->saddr == *(unsigned int*)ip_address){ return NF_DROP; }
           
 
if(ip_hdr(sock_buff)->protocol != 17){ return NF_ACCEPT; }                 
udp_header = (struct udphdr *)(sock_buff->data + (ip_hdr(sock_buff)->ihl *4));
if((udp_header->dest) == *(unsigned short*)port){ return NF_DROP; }
return NF_ACCEPT;
}
int init_module()
{
        netfilter_ops.hook              =       main_hook;
        netfilter_ops.pf                =       PF_INET;       
        netfilter_ops.hooknum           =       0;
        netfilter_ops.priority          =       0;
        nf_register_hook(&netfilter_ops);
       
return 0;
}
void cleanup_module() { nf_unregister_hook(&netfilter_ops); }
Vi spiego subito il mio problema. Settando l'interfaccia dalla quale droppare i pacchetti, il tutto funziona. Il problema nasce con l'indirizzo ip. Accetta tutti i pacchetti, non riesce a scartarne nessuno.
E' corretto utilizzare quel formato per l'indirizzo?