[tao-users] Ipv6 - connecting to a server listening on link-local address in linux environment

Milan Cvetkovic milan.cvetkovic at mpathix.com
Mon Mar 14 14:51:19 CDT 2016


     TAO VERSION: 2.3.3
     ACE VERSION: 6.3.3
     HOST MACHINE and OPERATING SYSTEM: Linux Debian 7, on x86_64
     COMPILER NAME AND VERSION: g++-4.7 (stock debian compiler)

      THE $ACE_ROOT/ace/config.h FILE:

#define ACE_HAS_VERSIONED_NAMESPACE 1
#define ACE_HAS_IPV6 1
include "config-linux.h"


     THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:

platform_linux.GNU

     AREA/CLASS/EXAMPLE AFFECTED:

resolving server object reference

     DOES THE PROBLEM AFFECT:
         EXECUTION: yes

     SYNOPSIS:
	If server listens on link-local address, there does not seem to be a 
for a client to contact the server.

DESCRIPTION:

I have a CORBA server listening only on IPv6 link-local address, by using :
-ORBDottedDecimalAddresses 1
-ORBListenEndpoinds iiop://1.2@[fe80::76d4:1111:11:11%eth0]:9999

I append the link-local address with %eth0 - where eth0 is the interface 
I am listening on.

At the startup, the server writes the IOR to a flat file, for example 
'server.ior'

However, a client is not capable of using this server:

a) if client uses
CORBA_Object o = orb->CORBA::string_to_object("file://server.ior");
Concrete = Concrete::_narrow(o);
o->remote_function();

invoking remote_function() fails with 'Invalid Argument', which results 
in CORBA::TRANSIENT exception

b) if client uses 
corbaloc:iiop:1.2@[fe80::76d4:1111:11:11%eth0]:7770/ServerAdmin
instead of "file://server.ior":

it fails with the same error 'Invalid Argument'/CORBA::TRANSIENT)


What is the proper way to pass reference containign link-local address?

Thanks, Milan.


More information about the tao-users mailing list