8207404: MulticastSocket tests failing on Aix

Steve Groeger GROEGES at uk.ibm.com
Mon Jan 14 14:30:41 UTC 2019


Hi Volker, 

The reason the mcast_set_if_by_if_v4(env, this, fd, value); probably fails
is that the socket that we are trying to set the IPPROTO_IP, 
IP_MULTICAST_IF options
on has been created with the AF_INET6 family, and these options may not be 
valid.

The socket is setup with the AF_INET6 family because ipv6_available() 
returns true, 
as the AIX system does support INET6/IPv6. It is just that the interface 
we are using
doesnt have an INET6 address associated with it.

I am checking with the AIX/C compiler team in IBM to see if this a bug or 
not.

Thanks
Steve Groeger
IBM Runtime Technologies
Hursley, Winchester
Tel: (44) 1962 816911  Mobex: 279990  Mobile: 07718 517 129
Fax (44) 1962 816800
Lotus Notes: Steve Groeger/UK/IBM
Internet: groeges at uk.ibm.com

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU



From:   Volker Simonis <volker.simonis at gmail.com>
To:     Steve Groeger <GROEGES at uk.ibm.com>
Cc:     Chris Hegarty <chris.hegarty at oracle.com>, net-dev 
<net-dev at openjdk.java.net>, ppc-aix-port-dev at openjdk.java.net
Date:   14/01/2019 14:11
Subject:        Re: 8207404: MulticastSocket tests failing on Aix



On Mon, Jan 14, 2019 at 2:19 PM Steve Groeger <GROEGES at uk.ibm.com> wrote:
>
> Hi Chris / Volker,
>
> I had already tried doing the same as is done for Linux, ie calling this 
first
>
> mcast_set_if_by_if_v4(env, this, fd, value);
>
> This still fails for some reason with EADDRNOTAVAIL.

Finding this out is probably the main challenge in order to solve this
issue and one of the reason why we asked IBM for assistance :)

I suppose there must be a possibility to set a socket option for an
IPv4 socket on AIX even if IPv6 is enabled. Otherwise this is probably
an AIX problem/bug which should be fixed there (where, again, we need
assistance from IBM).

The man-page (
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/ssocko.htm)
mentions the following:

IP_MULTICAST_IF: et interface over which outgoing multicast datagrams
should be sent. This option is only supported for sockets with an
address family of AF_INET and type of SOCK_DGRAM or SOCK_RAW.

Maybe the interface is erroneously in the AF_INET6 family? The
man-page only mentions the following for EADDRNOTAVAIL:

EADDRNOTAVAIL: Address not available. For the IP_ADD_MEMBERSHIP or
IP_DROP_MEMBERSHIP operations, this error code indicates that an
incorrect address was specified for either the imr_multiaddr or
imr_interface parameter value.

> This error gets cleared by the
>
> if ((*env)->ExceptionCheck(env)){
>    (*env)->ExceptionClear(env);
> }
>
> as ipv6_available() still returns true, but we then still try and call
>
> mcast_set_if_by_if_v6(env, this, fd, value);
>
> which again fails with EADDRNOTAVAIL. So we have the same result.
>
> Thanks
> Steve Groeger
> IBM Runtime Technologies
> Hursley, Winchester
> Tel: (44) 1962 816911  Mobex: 279990  Mobile: 07718 517 129
> Fax (44) 1962 816800
> Lotus Notes: Steve Groeger/UK/IBM
> Internet: groeges at uk.ibm.com
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 
741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 
3AU
>
>
>
> From:        Chris Hegarty <chris.hegarty at oracle.com>
> To:        Volker Simonis <volker.simonis at gmail.com>
> Cc:        Steve Groeger <GROEGES at uk.ibm.com>, 
ppc-aix-port-dev at openjdk.java.net, net-dev <net-dev at openjdk.java.net>
> Date:        12/01/2019 14:21
> Subject:        Re: 8207404: MulticastSocket tests failing on Aix
> ________________________________
>
>
>
>
>
> > On 11 Jan 2019, at 17:28, Volker Simonis <volker.simonis at gmail.com> 
wrote:
> >
> > I think the difference is in setMulticastInterface() in
> > PlainDatagramSocketImpl.c
> >
> > #ifdef __linux__
> >        mcast_set_if_by_if_v4(env, this, fd, value);
> >        if (ipv6_available()) {
> >            if ((*env)->ExceptionCheck(env)){
> >                (*env)->ExceptionClear(env);
> >            }
> >            mcast_set_if_by_if_v6(env, this, fd, value);
> >        }
> > #else  /* __linux__ not defined */
> >        if (ipv6_available()) {
> >            mcast_set_if_by_if_v6(env, this, fd, value);
> >        } else {
> >            mcast_set_if_by_if_v4(env, this, fd, value);
> >        }
> > #endif  /* __linux__ */
> >
> > We should probably follow the Linux way for AIX as well.
>
> I agree.
>
> -Chris.
>
> >> On Fri, Jan 11, 2019 at 5:29 PM Chris Hegarty 
<chris.hegarty at oracle.com> wrote:
> >>
> >>
> >>> On 09/01/2019 15:20, Steve Groeger wrote:
> >>> ...
> >>>
> >>> I think I have an Linux system setup with a simarly configured 
interface
> >>> (system has IPv6 configured but interface
> >>> has no IPv6/INET6 address configured) but the test works fine when 
run
> >>> on that system.
> >>
> >> This is what I observe too. Confirmed by looking at the test
> >> output in the jtr file.
> >>
> >>> This was why I was asking the question on whether this should work 
on
> >>> AIX, or whether it should fail on Linux!!!
> >>
> >> I suspect that this is an issue with the native setsockopt
> >> on AIX. That said, if it cannot be resolved on AIX, then
> >> maybe the networking native code on AIX, should workaround
> >> it.
> >>
> >> -Chris.
>
>
>
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 
741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 
3AU




Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20190114/fb17b31d/attachment-0001.html>


More information about the ppc-aix-port-dev mailing list