Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-956

Binding to mcast address in UDP.java is not working on Linux with IPv6

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Minor
    • 2.4.7, 2.6.11, 2.8
    • None
    • None

    Description

      On Linux and Solaris platforms, when setting up the main multicast receiver socket, Bela allows binding the socket to its multicast address, like this:

      InetAddress group_addr = ...
      InetAddress bind_addr = ...
      SocketAddress group_sock_addr = new InetSocketAddress(group_addr, port) ;

      MulticastSocket s = new MulticastSocket(group_sock_addr) ; // funny
      s.joinGroup(group_addr) ;

      Binding to the multicast address on Linux and Solaris was done in order to avoid the promiscuous traffic problem. A detailed discussion on the matter can be found in the bugzilla report:https://bugzilla.redhat.com/show_bug.cgi?id=231899.

      This works on Linux with IPv4 but is not working on Linux with IPv6 for the multicast-address ff02::1 - an error message is being generated (SocketException, invalid argument) and the code then tries to create the same multicast address in the usual way:

      InetAddress group_addr = ...
      InetAddress bind_addr = ...

      MulticastSocket s = new MulticastSocket(port) ;
      s.setInterface(bind_addr) ;
      s.joinGroup(group_addr) ;

      This is only a problem in that it generates a confusing error message about using mixed IPv4 / IPv6 stacks, but the socket continues to work correctly as far as I can tell.
      Haven't confirmed this, but I believe the promiscuous traffic issue does not arise with IPv6 multicast sockets.

      Attachments

        Issue Links

          Activity

            People

              rhn-engineering-bban Bela Ban
              rachmato@redhat.com Richard Achmatowicz
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: