convertir une structure en une suite de doubles octets
Bonjour,
J'ai la structure suivante qui fait 20 octets au total :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct ipv4 {
unsigned int version:4;
unsigned int tailleh:4;
uint8_t tos;
uint16_t taillet;
uint16_t ident;
uint16_t offset;
uint8_t ttl;
uint8_t proto;
uint16_t checksum;
u_char * a_src;
u_char * a_dst;
}; |
que j'initialise avec :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
struct ipv4 header1;
header1.version = 0x4;
header1.tailleh = 0x5;
header1.tos = 0x00;
header1.taillet = 0x05be;
header1.ident = 0x8fc4;
header1.offset = 0x0000;
header1.ttl = 0x39;
header1.proto = 0x06;
header1.checksum = 0x0000;
u_char * as = malloc(4*sizeof(u_char));
as[0] = 0xd1;
as[1] = 0x55;
as[2] = 0xe5;
as[3] = 0x68;
u_char * ad = malloc(4*sizeof(u_char));
ad[0] = 0xc0;
ad[1] = 0xa8;
ad[2] = 0x00;
ad[3] = 0x0a;
header1.a_src = as;
header1.a_dst = ad; |
Je voudrais mettre cette structure dans un tableau de 16 bits (unsigned short ?) à partir d'une fonction qui récupère un pointeur vers cette structure pour pouvoir faire la fonction de checksum de l'entête ip :P
Je n'y arrive pas surtout à cause des deux derniers champs de 4 octets chacun qui sont traités comme des pointeurs (error: aggregate value used where an integer was expected).
Quelqu'un pourrait il m'aider ?
Merci d'avance !