//------------------------------------------------------------------------------ // // _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 }
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); }