struct iphdr *ip = (struct iphdr *)packet;
-
hallo forum
im unteren text wird auf eine iphdr struktur aus ip.h zu gegriffen und zwar mit dem zeiger *ip.
was macht aber (struct iphdr *)packet;zeigt der zeiger ip auf das packet?
int main(void) { int rawsock, uid; struct sockaddr_in addr; unsigned int packetsize = sizeof(struct iphdr) + sizeof(struct tcphdr); unsigned char packet[packetsize]; struct iphdr *ip = (struct iphdr *)packet;
-
ja.
Der Sinn ist, dass du die ersten N-Bytes als Struktur vom Typ iphdr interpretierst. Weiß aber nich ob das in C99 noch legal ist, wegen dem Strikt-Aliasing
<edit>grml Alignment und Aliasing verwechselt :)</edit>
-
rüdiger schrieb:
Weiß aber nich ob das in C99 noch legal ist, wegen dem Strikt-Alignment
legal hin oder her, aber über einen struct* auf daten zuzugreifen, die wo anders her gekommen sind, ist immer schlecht. das gibt oft seltsame fehler...
