Patch to use proper IFA on Linux platforms to match interface addresses when

netmask is not 255.255.255.0.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2550 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
Steven Dake 2009-11-27 22:59:48 +00:00
parent 3848fc2069
commit ee226d0730

View File

@ -561,12 +561,12 @@ int totemip_iface_check(struct totem_ip_address *bindnet,
/* If the address we have is an IPv4 network address, then
substitute the actual IP address of this interface */
if (!found_if && tb[IFA_BROADCAST] && ifa->ifa_family == AF_INET) {
if (!found_if && tb[IFA_LOCAL] && ifa->ifa_family == AF_INET) {
uint32_t network;
uint32_t addr;
uint32_t netmask = htonl(~((1<<(32-ifa->ifa_prefixlen))-1));
memcpy(&network, RTA_DATA(tb[IFA_BROADCAST]), sizeof(uint32_t));
memcpy(&network, RTA_DATA(tb[IFA_LOCAL]), sizeof(uint32_t));
memcpy(&addr, bindnet->addr, sizeof(uint32_t));
if ((addr & netmask) == (network & netmask)) {