This discovery mechanism uses the same multicast network that is used by the ldmd daemon to detect collisions when automatically assigning MAC addresses. To configure the multicast socket, you must supply the following information:
#define MAC_MULTI_PORT 64535 #define MAC_MULTI_GROUP "239.129.9.27" |
By default, only multicast packets can be sent on the subnet to which the machine is attached. You can change the behavior by setting the ldmd/hops SMF property for the ldmd daemon.
The discovery messages must be clearly marked so as not to be confused with other messages. The following multicast message format ensures that discovery messages can be distinguished by the discovery listening process:
#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 { char ldmd_version[LDMD_VERSION_LEN]; char hostname[MAXHOSTNAMELEN]; struct in_addr ip_address; int port_no; } ldmd_discovery_t; |
Open a multicast socket.
Ensure that you use the port and group information specified in Multicast Communication.
Send a multicast_msg_t message over the socket.
The message should include the following:
Valid value for version_no, which is 1 as defined by MAC_MULTI_VERSION
Valid value for magic_no, which is 92792004 as defined by MAC_MULTI_MAGIC_NO
msg_type of LDMD_DISC_SEND
Listen on the multicast socket for responses from Logical Domains Managers.
The responses must be a multicast_msg_t message with the following:
Valid value for version_no
Valid value for magic_no
msg_type set to LDMD_DISC_RESP
Payload consisting of a ldmd_discovery_t structure, which contains the following information:
ldmd_version – Version of the Logical Domains Manager running on the system
hostname – Host name of the system
ip_address – IP address of the system
port_no – Port number being used by the Logical Domains Manager for communications, which should be XMPP port 6482
When listening for a response from Logical Domains Managers, ensure that any auto-allocation MAC collision-detection packets are discarded.