char *RemoteLink( char *name, bool server ) { unsigned i; server = server; putstring( "RemoteLink\r\n" ); if( name == NULL || *name == '\0' ) name = "NovLink"; for( i = 0; i < 47 && *name != '\0'; ++name ) { if( strchr( "/\\:;,*?+-", *name ) == NULL ) { SAPHead.name[ i++ ] = toupper( *name ); } } SAPHead.name[ i ] = '\0'; if( SpxOpenSocket( &SPXSocket ) != 0 || IpxOpenSocket( &IPXSocket ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragCount = 2; RespECB.fragList[1].fragSize = sizeof( WORD ); /* for SPXSocket */ #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } #else if( !FindPartner() ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; WSADATA data; #ifdef SERVER const char *p; #endif server = server; if( *parms == '\0' ) parms = "NovLink"; for( i = 0; i < 47 && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { ServerName[ i++ ] = (char)toupper( *(byte *)parms ); } } ServerName[ i ] = '\0'; if( WSAStartup( 0x101, &data ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( (p = InitServer()) != NULL ) { RemoteUnLink(); return( p ); } #else if( !FindPartner() ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; _DBG_IPX(("RemoteLink\r\n")); server = server; if( *parms == '\0' ) parms = "NovLink"; for( i = 0; i < 48 && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { SAPStruct.ASServerIDpacket.serverName[ i++ ] = toupper( *parms ); } } SAPStruct.ASServerIDpacket.serverName[ i ] = '\0'; if( CIPXOpenSocketRTag( &SPXSocket, SocketTag ) != 0 || CIPXOpenSocketRTag( &IPXSocket, SocketTag ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragmentCount = 2; /* for SPXSocket - yes, SPXSocket is a long, but it always goes out on the wire as a 16-bit quantity */ RespECB.fragmentDescriptor[1].size = sizeof( WORD ); Timer.TCallBackProcedure = (void (*)(LONG))Ticker; Timer.TCallBackEBXParameter = (LONG)&Timer; Timer.TCallBackWaitTime = 0; Timer.TResourceTag = TimerTag; CScheduleInterruptTimeCallBack( &Timer ); if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } return( NULL ); }
const char *RemoteLink( const char *parms, bool server ) { unsigned i; BYTE major_ver,minor_ver; WORD max_conn,avail_conn; #ifdef __WINDOWS__ { HINSTANCE ipxspx; HINSTANCE netapi; HMODULE netware; GlobalPageLock( (HGLOBAL)FP_SEG( &SAPECB ) ); netware = GetModuleHandle( "NETWARE.DRV" ); ipxspx = LoadLibrary( "NWIPXSPX.DLL" ); netapi = LoadLibrary( "NWCALLS.DLL" ); if( (UINT)ipxspx < 32 ) return( TRP_ERR_IPX_SPX_not_present ); if( (UINT)netapi < 32 ) return( TRP_ERR_Netware_API_not_present ); if( netware == NULL ) return( TRP_ERR_NETWAREDRV_not_present ); #define str( x ) #x #define GetAddr( hdl, x ) IPXFuncs[x] = (NOVWINAPI)GetProcAddress( hdl, str( x ) ) #define GetIPXAddr( x ) GetAddr( ipxspx, x ) GetAddr( netapi, NWReadPropertyValue ); GetIPXAddr( IPXInitialize ); GetIPXAddr( IPXSPXDeinit ); GetIPXAddr( IPXCancelEvent ); GetIPXAddr( IPXCloseSocket ); GetIPXAddr( IPXDisconnectFromTarget ); GetIPXAddr( IPXGetInternetworkAddress ); GetIPXAddr( IPXGetIntervalMarker ); GetIPXAddr( IPXGetLocalTarget ); GetIPXAddr( IPXListenForPacket ); GetIPXAddr( IPXOpenSocket ); GetIPXAddr( IPXRelinquishControl ); GetIPXAddr( IPXScheduleIPXEvent ); GetIPXAddr( IPXSendPacket ); GetIPXAddr( SPXAbortConnection ); GetIPXAddr( SPXEstablishConnection ); GetIPXAddr( SPXInitialize ); GetIPXAddr( SPXListenForConnection ); GetIPXAddr( SPXListenForSequencedPacket ); GetIPXAddr( SPXSendSequencedPacket ); GetIPXAddr( SPXTerminateConnection ); IPXTaskID = 0x00000000L; if( IPXInitialize( (DWORD __far *)&IPXTaskID, 20, 576 ) != 0 ) { return( TRP_ERR_IPX_not_initialized ); } } #endif server = server; if( *parms == '\0' ) parms = DefLinkName; for( i = 0; i < MAX_NAME_LEN && *parms != '\0'; ++parms ) { if( strchr( "/\\:;,*?+-", *parms ) == NULL ) { SAPHead.name[ i++ ] = toupper( *parms ); } } SAPHead.name[ i ] = '\0'; if( !_SPXInitialize( 20, 576, &major_ver, &minor_ver, &max_conn, &avail_conn ) ) { return( TRP_ERR_SPX_not_present ); } if( _IPXOpenSocket( &SPXSocket, 0 ) != 0 || _IPXOpenSocket( &IPXSocket, 0 ) != 0 ) { return( TRP_ERR_can_not_obtain_socket ); } _INITIPXECB( Serv ); _INITIPXECB( Resp ); RespECB.fragmentCount = 2; RespECB.fragmentDescriptor[1].size = sizeof( WORD ); /* for SPXSocket */ #ifdef SERVER if( FindPartner() ) { RemoteUnLink(); return( TRP_ERR_server_name_already_in_use ); } if( !InitServer() ) { RemoteUnLink(); return( TRP_ERR_can_not_initialize_server ); } #else if( FindPartner() == 0 ) { RemoteUnLink(); return( TRP_ERR_no_such_server ); } #endif return( NULL ); }