Parliamo di Linux, infatti il parametro di quella funzione e' un pacchetto di iptables.

Come compilatore uso gcc.

Gli header che uso (per la parte di rete) sono i seguenti:
tcp.h
ip.h
udp.h
anche se qui udp non lo uso.
Comunque l'header tcp che prendo e' fatto in questo modo:
codice:
struct tcphdr {
  __u16 source;
  __u16 dest;
  __u32 seq;
  __u32 ack_seq;
#if defined(__LITTLE_ENDIAN_BITFIELD)
  __u16 res1:4,
    doff:4,
    fin:1,
    syn:1,
    rst:1,
    psh:1,
    ack:1,
    urg:1,
    ece:1,
    cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)
  __u16 doff:4,
    res1:4,
    cwr:1,
    ece:1,
    urg:1,
    ack:1,
    psh:1,
    rst:1,
    syn:1,
    fin:1;
#else
#error  "Adjust your <asm/byteorder.h> defines"
#endif
  __u16 window;
  __u16 check;
  __u16 urg_ptr;
};
Se fosse necessario potrei anche usare altri header, quello non e' importante...

Grazie!