Hallo Leute

kann mir jemand den Sinn folgender Cast's erklären.

Meine Fragen sind als Kommentare an den entsprechenden Stellen

Code:
// mainfile.c

   unsigned char packet[
#if !defined(LINUX)
    sizeof(struct ip) +
#else /* LINUX */
    sizeof(struct iphdr) +
#endif /* LINUX */
    sizeof(struct tcphdr)];

    struct tcphdr *tcp;
    ....
    tcp = (struct tcphdr *)(packet + sizeof(struct iphdr));
    // wieso castet er hier tcp in einen charpointer oder besser gesagt, wieso 
    // definiert er die Funktion nicht so, dass sie einen ptr auf struct tcphdr erwartet?
    tcp_gen((char *)tcp,sport,dport,seq,ack);
Hier noch der Anfang der Funktion tcp_gen.
Code:
void tcp_gen(char *packet,unsigned short sport, unsigned short dport,unsigned long seq,  unsigned long ack)
{
    struct tcphdr *tcp;
  
    tcp = (struct tcphdr *)packet;
    memset((char *)tcp,'\0',sizeof(struct tcphdr));
    ...
}
MfG
f0rtex