Bonjour,
J'ai la structure suivante qui fait 20 octets au total :
que j'initialise avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 !
Partager