Changeset 6253 for trunk/src


Ignore:
Timestamp:
Jul 8, 2001, 5:44:27 PM (24 years ago)
Author:
achimha
Message:

IPPROTO_IP support for setsockopt, WSAEnumNetworkEvents fixes

Location:
trunk/src/wsock32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wsock32/asyncapi.cpp

    r6205 r6253  
    1 /* $Id: asyncapi.cpp,v 1.14 2001-07-07 18:49:13 achimha Exp $ */
     1/* $Id: asyncapi.cpp,v 1.15 2001-07-08 15:44:27 achimha Exp $ */
    22
    33/*
     
    671671        return SOCKET_ERROR;
    672672   }
    673 #if 0
    674 // AH: null sempahore is ok when clearing request
    675    else
    676    if ((mode == WSA_SELECT_HEVENT) && !(WSAEVENT)notifyHandle)
    677    {
    678         dprintf(("invalid event semaphore handle"));
    679         WSASetLastError(WSAEINVAL);             // invalid parameter
    680         return SOCKET_ERROR;
    681    }
    682 #endif
    683 
    684    //Set socket to non-blocking mode
    685    ret = ioctl(s, FIONBIO, (char *) &nonblock, sizeof(nonblock));
     673
     674   // Set socket to non-blocking mode
     675   ret = ioctl(s, FIONBIO, (char *)&nonblock, sizeof(nonblock));
    686676   if(ret == SOCKET_ERROR) {
    687677        dprintf(("setting socket to non blocking mode failed"));
  • trunk/src/wsock32/wsock32.cpp

    r6196 r6253  
    1 /* $Id: wsock32.cpp,v 1.36 2001-07-07 10:44:10 achimha Exp $ */
     1/* $Id: wsock32.cpp,v 1.37 2001-07-08 15:44:27 achimha Exp $ */
    22
    33/*
     
    151151void WIN32API WSASetLastError(int iError)
    152152{
    153   // according to the docs, WSASetLastError() is just a call-through
    154   // to SetLastError()
    155   if(iError) {
    156         dprintf(("WSASetLastError 0x%x", iError));
    157   }
    158   SetLastError(iError);
     153#ifdef DEBUG
     154    char msg[20];
     155#endif
     156    // according to the docs, WSASetLastError() is just a call-through
     157    // to SetLastError()
     158    SetLastError(iError);
     159#ifdef DEBUG
     160    switch (iError)
     161    {
     162        case NO_ERROR:
     163            strcpy(msg, "no error");
     164            break;
     165        case WSAEINTR:
     166            strcpy(msg, "WSAEINTR");
     167            break;
     168        case WSAEBADF:
     169            strcpy(msg, "WSAEBADF");
     170            break;
     171        case WSAEACCES:
     172            strcpy(msg, "WSAEACCES");
     173            break;
     174        case WSAEFAULT:
     175            strcpy(msg, "WSAEFAULT");
     176            break;
     177        case WSAEINVAL:
     178            strcpy(msg, "WSAEINVAL");
     179            break;
     180        case WSAEMFILE:
     181            strcpy(msg, "WSAEMFILE");
     182            break;
     183        case WSAEWOULDBLOCK:
     184            strcpy(msg, "WSAEWOULDBLOCK");
     185            break;
     186        case WSAEINPROGRESS:
     187            strcpy(msg, "WSAEINPROGRESS");
     188            break;
     189        case WSAEALREADY:
     190            strcpy(msg, "WSAEALREADY");
     191            break;
     192        default:
     193            strcpy(msg, "unknown");
     194    }
     195    if (iError != 0)
     196    {
     197        dprintf(("WSASetLastError 0x%x - %s", iError, msg));
     198    }
     199#endif
    159200}
    160201//******************************************************************************
     
    884925   optval = safeoptval;
    885926
    886    if (level == SOL_SOCKET) {
    887         switch(optname) {
     927   if (level == SOL_SOCKET)
     928   {
     929        switch(optname)
     930        {
    888931        case SO_DONTLINGER:
    889932        case SO_LINGER:
    890                 if(optlen < (int)sizeof(ws_linger)) {
     933                if(optlen < (int)sizeof(ws_linger))
     934                {
    891935                        dprintf(("SOL_SOCKET, SO_LINGER, optlen too small"));
    892936                        WSASetLastError(WSAEFAULT);
     
    901945        case SO_SNDBUF:
    902946        case SO_RCVBUF:
    903                 if(optlen < (int)sizeof(int)) {
     947                if(optlen < (int)sizeof(int))
     948                {
    904949                        dprintf(("SOL_SOCKET, SO_RCVBUF, optlen too small"));
    905950                        WSASetLastError(WSAEFAULT);
     
    934979                break;
    935980        default:
    936                 dprintf(("setsockopt: unknown option %x", optname));
     981                dprintf(("setsockopt: SOL_SOCKET, unknown option %x", optname));
    937982                WSASetLastError(WSAENOPROTOOPT);
    938983                return SOCKET_ERROR;
     
    940985   }
    941986   else
    942    if(level == IPPROTO_TCP) {
     987   if(level == IPPROTO_TCP)
     988   {
    943989        if(optname == TCP_NODELAY) {
    944990                if(optlen < (int)sizeof(int)) {
     
    950996        }
    951997        else {
    952                 dprintf(("setsockopt: unknown option %x", optname));
     998                dprintf(("setsockopt: IPPROTO_TCP, unknown option %x", optname));
    953999                WSASetLastError(WSAENOPROTOOPT);
    9541000                return SOCKET_ERROR;
    9551001        }
     1002   }
     1003   else
     1004   if (level == IPPROTO_IP)
     1005   {
     1006       switch (optname)
     1007       {
     1008           case IP_MULTICAST_IF:
     1009           {
     1010               if (optlen < sizeof(in_addr))
     1011               {
     1012                   dprintf(("IPPROTO_IP, IP_MULTICAST_IP, optlen too small"));
     1013                   WSASetLastError(WSAEFAULT);
     1014                   return SOCKET_ERROR;
     1015               }
     1016               //TODO convert common interface names!
     1017               ret = setsockopt(s, level, optname, (char *)optval, optlen);
     1018               break;
     1019           }
     1020
     1021           default:
     1022                dprintf(("setsockopt: IPPROTO_IP, unknown option %x", optname));
     1023                WSASetLastError(WSAENOPROTOOPT);
     1024                return SOCKET_ERROR;
     1025       }
    9561026   }
    9571027   else {
Note: See TracChangeset for help on using the changeset viewer.