Les messages de recherche doivent être clairement identifiés afin de ne pas être confondus avec d'autres messages. Le format de message de multidiffusion suivant garantit que les messages de recherche peuvent être distingués par le processus d'écoute de recherche :
#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;