Los mensajes de descubrimiento deben marcarse claramente de manera que no se confundan con otros mensajes. El siguiente formato de los mensajes multidifusión asegura que los mensajes de descubrimiento pueden ser distinguidos por el proceso de escucha de descubrimiento:
#include <netdb.h> /* Used for MAXHOSTNAMELEN definition */ #define MAC_MULTI_MAGIC_NO 92792004 #define MAC_MULTI_VERSION 1 enum { SEND_MSG = 0, RESPONSE_MSG, LDMD_DISC_SEND, LDMD_DISC_RESP, }; typedef struct { uint32_t version_no; uint32_t magic_no; uint32_t msg_type; uint32_t resv; union { mac_lookup_t Mac_lookup; ldmd_discovery_t Ldmd_discovery; } payload; #define lookup payload.Mac_lookup #define discovery payload.Ldmd_discovery } multicast_msg_t; #define LDMD_VERSION_LEN 32 typedef struct { uint64_t mac_addr; char source_ip[INET_ADDRSTRLEN]; } mac_lookup_t; typedef struct { char ldmd_version[LDMD_VERSION_LEN]; char hostname[MAXHOSTNAMELEN]; struct in_addr ip_address; int port_no; } ldmd_discovery_t;