J'essaie d'envoyer un paquet ethernet en utilisant le socket RAW dans C Linux. Je suit struct
définition dans mon code:Comment convertir un tableau struct to char en C?
typedef struct vlink_header_s
{
uint8_t verCmd;
uint8_t reverseVerCmd;
}vlink_header_t;
typedef struct vlink_reg_rd_s
{
vlink_header_t header;
uint32_t address;
uint16_t length;
}vlink_reg_rd_t;
Dans main
i créé une struct:
vlink_reg_rd_t g_pkt;
g_pkt.header.verCmd = 0x10|VLINK_CMD_REG_RD;
g_pkt.header.reverseVerCmd = ~(g_pkt.header.verCmd);
g_pkt.address = 0x0007 .....
et un message:
char sendbuf[1024];
struct ether_header *eh = (struct ether_header *) sendbuf;
comment puis-je ajouter toutes les informations de la struct g_pkt à ce sendbuf après ether_header afin que je puisse envoyer un paquet complet en utilisant:
sendto(sockfd, sendbuf, txLen, 0, (struct sockaddr*)&socket_address, sizeof(struct sockaddr_ll));
Tout le reste dans mon code fonctionne, j'ai essayé d'autres moyens en ajoutant d'information à sendbuf
un par un et il fonctionne très bien et ma machine recevoir les paquets de l'autre côté aussi. Je veux juste le rendre plus polyvalent parce qu'il y a un tas de commandes et de structs pour chaque commande qui fonctionnera le mieux. Merci.
Le lien que vous partagiez envoie à une recherche google et vous êtes pas précisé comment utiliser cette information. S'il vous plaît, spécifie cette information au lieu de demander. –