Beispiel #1
0
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 );
}
Beispiel #2
0
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 );
}
Beispiel #3
0
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 );
}
Beispiel #4
0
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 );
}