Buenas, estoy tratando de crear Socket Raw, buscando codigo por Internet encontre varios pero no logro entender porque hacen lo siguiente:
char packetBuf[DIMENSION];
struct ip *IPheader = (struct ip *) packetBuf;
Porque se declara un vector char (tambien podria ser un puntero y despues darle dimension con malloc) y se hace esa conversion. PacketBuf apuntaria a posiciones que almacenarian char pero con esa conversion que apuntaria a posiciones (la cantidad es DIMENSION) que almacenarian tipo struct ip.
char packetBuf[DIMENSION];
struct ip *IPheader = (struct ip *) packetBuf;
Porque se declara un vector char (tambien podria ser un puntero y despues darle dimension con malloc) y se hace esa conversion. PacketBuf apuntaria a posiciones que almacenarian char pero con esa conversion que apuntaria a posiciones (la cantidad es DIMENSION) que almacenarian tipo struct ip.