int makeUdpConnection (void )

ConcurrencyrsSequentialConcurrencyVisibilityrsProtected

Code
   static const char loopback[] = { 127, 0, 0, 1 }; // in network order

   sockaddr_in   _inet_addr;
   sockaddr    * _sock_addr = (sockaddr *)&_inet_addr; //lint !e740

   RTMemoryUtil::memset( (void *)&_inet_addr, 0, sizeof( _inet_addr ) );
   _inet_addr.sin_family = AF_INET;
   _inet_addr.sin_port   = htons( 0 );
   RTMemoryUtil::memcpy( (void *)&_inet_addr.sin_addr,
                  (const void *)loopback, sizeof( loopback ) );

   int length = sizeof( _inet_addr );
   int fd;

   if( (fd = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 )
        log.show("CustomTCPLayer: Failed to create internal UDP socket\n");
   else if( bind( fd, _sock_addr, sizeof( _inet_addr ) ) < 0 )
    {
        log.show("CustomTCPLayer: Failed to bind internal UDP socket\n");
        fd = -1;
    }
   else if( getsockname( fd, _sock_addr, &length ) < 0 )
    {
        log.show("CustomTCPLayer: Failed getsockname on internal UDP socket\n");
        fd = -1;
    }
   else if( connect( fd, _sock_addr, sizeof( _inet_addr ) ) < 0 )
   {
        log.show("CustomTCPLayer: Connect failed for internal UDP socket\n");
        (void)close( fd );
        fd = -1;
   }

   return fd;


Parameter Not Named