I'm not sure whether this is the place to report a libpgm bug, but here
goes.
In trying to use zeromq epgm PUB/SUB sockets with
epgm://interface;multicastaddr:port
I'm having trouble finding a portable way to specify the interface,
hoping to use the same address string on multiple machines -- something
like:
epgm://10/8;mcastaddr:port
or
epgm://10.0.0.0/8;mcastaddr:port
but on zeromq-2.2.0 + libpgm-5.2.119~dfsg under CentOS 5.x x86_64, these
forms aren't working,
on a bunch of hosts each of which has an interface on the net-10 network
(and also has an Infiniband interface).
Specifically, on one node this behaves as expected, but on others, I get
(with debug enabled)
Fatal: file if.c: line 658 (parse_interface): assertion failed: (0 !=
ifindex)
Plowing through the code, getifaddrs() returned a list of
ordinary-looking network interfaces,
plus one oddball AF_INET6 entry with ifa->ifa_name of "????".
This seems to be due to a kernel/glibc bug in getifaddrs(), which
returns a strange ifa_name for Infiniband interfaces with IPV6
addresses. But libpgm's response shouldn't be to crash the program. I
patched it as follows to simply skip interfaces where
pgm_if_nametoindex() fails.
--- pgm/if.c~ 2012-08-08 14:10:50.558770957 -0500
+++ pgm/if.c 2012-08-08 14:12:23.081299409 -0500
@@ -655,7 +655,8 @@
}
const unsigned ifindex = pgm_if_nametoindex
(ifa->ifa_addr->sa_family, ifa->ifa_name);
- pgm_assert (0 != ifindex);
+ if (0 == ifindex) /* skip interface if something's wrong
with ifa_name */
+ continue; /* as can happen with Infiniband IPV6
interfaces on linux */
/* check numeric host */
if (check_addr)
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev