Fix minimum packet size
This commit is contained in:
parent
044be347c8
commit
de3da7a6e4
1 changed files with 4 additions and 1 deletions
|
@ -462,7 +462,8 @@ static void send_announcement(const char *ifname, unsigned ifindex, void *arg) {
|
||||||
sa.sll_halen = ETH_ALEN;
|
sa.sll_halen = ETH_ALEN;
|
||||||
memcpy(sa.sll_addr, ffd_addr.address, ETH_ALEN);
|
memcpy(sa.sll_addr, ffd_addr.address, ETH_ALEN);
|
||||||
|
|
||||||
sendto(sockfd, packet, sizeof(ffvisd_packet_announce_t) + ntohs(packet->n_servers)*sizeof(ffvisd_packet_server_announce_t), 0, (struct sockaddr*)&sa, sizeof(sa));
|
unsigned len = sizeof(ffvisd_packet_announce_t) + ntohs(packet->n_servers)*sizeof(ffvisd_packet_server_announce_t);
|
||||||
|
sendto(sockfd, packet, len > 46 ? len : 46, 0, (struct sockaddr*)&sa, sizeof(sa));
|
||||||
}
|
}
|
||||||
free(if_mesh);
|
free(if_mesh);
|
||||||
}
|
}
|
||||||
|
@ -470,6 +471,8 @@ static void send_announcement(const char *ifname, unsigned ifindex, void *arg) {
|
||||||
static void send_announcements() {
|
static void send_announcements() {
|
||||||
ffvisd_packet_announce_t *packet = alloca(sizeof(ffvisd_packet_announce_t) + 75*sizeof(ffvisd_packet_server_announce_t));
|
ffvisd_packet_announce_t *packet = alloca(sizeof(ffvisd_packet_announce_t) + 75*sizeof(ffvisd_packet_server_announce_t));
|
||||||
|
|
||||||
|
memset(packet, 0, 46); /* minimum ethernet packet size is 46 bytes */
|
||||||
|
|
||||||
packet->magic = htons(FFD_MAGIC);
|
packet->magic = htons(FFD_MAGIC);
|
||||||
packet->version = htons(FFVISD_VERSION);
|
packet->version = htons(FFVISD_VERSION);
|
||||||
packet->csum = 0;
|
packet->csum = 0;
|
||||||
|
|
Reference in a new issue