Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2-facher CAST



f0rtex
01-04-2003, 20:59
Hallo Leute

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

Meine Fragen sind als Kommentare an den entsprechenden Stellen :rolleyes:



// 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.


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