Beispiel #1
0
//------------------------------------------------------------------------------
//
// _setInformIfNewTCPIP()
//
//------------------------------------------------------------------------------
inline void _setInformIfNewTCPIP(SocketHandle socket)
{
#ifdef PEGASUS_OS_ZOS
   // This function enables the notification of the CIM Server that a new
   // TCPIP transport layer is active. This is needed to be aware of a
   // restart of the transport layer. When this option is in effect,
   // the accetp(), select(), and read() request will receive an errno=EIO.
   // Once this happens, the socket should be closed and create a new.

   int NewTcpipOn = 1;
   setibmsockopt(
       socket,
       SOL_SOCKET,
       SO_EioIfNewTP,
       (char*)&NewTcpipOn,
       sizeof(NewTcpipOn));
#endif
}
Beispiel #2
0
SOCKETD _lslp_socket(int domain, int type, int protocol)
{
    SOCKETD newSocket;

    if (domain == AF_UNIX)
    {
        return(socket(domain,type,protocol));
    }

    while (1)
    {

        newSocket = socket(domain,type,protocol);

        // The program should wait for transport layer to become ready.

        if (newSocket == -1 && errno == EAGAIN)
        {

            sleep(30);
            continue;
        }
        else
        {
            break;
        }
    } // wait for the transport layer become ready.

    // Is the socket OK ?
    if (newSocket > -1)
    {
        int NewTcpipOn = 1;
        setibmsockopt(
            newSocket,
            SOL_SOCKET,
            SO_EioIfNewTP,
            (char*)&NewTcpipOn,
            sizeof(NewTcpipOn));
    }

    return(newSocket);
}