1 //$TAG BIZDEV
2 //  $IPCategory:        
3 //  $DealPointID:      118736
4 //  $AgreementName:  berkeley software distribution license
5 //  $AgreementType:  oss license
6 //  $ExternalOrigin: regents of the university of california
7 //$ENDTAG
8
9 //$TAG ENGR 
10 //  $Owner:      vadime
11 //  $Module:     published_inc
12 //
13 //$ENDTAG
14
15 /* Winsock2.h -- definitions to be used with the WinSock 2 DLL and
16  *                         WinSock 2 applications.
17  *
18  * This header file corresponds to version 2.2.x of the WinSock API
19  * specification.
20  *
21  * This file includes parts which are Copyright (c) 1982-1986 Regents
22  * of the University of California.  All rights reserved.  The
23  * Berkeley Software License Agreement specifies the terms and
24  * conditions for redistribution.
25  */
26
27 #ifndef _WINSOCK2API_
28 #define _WINSOCK2API_
29 #define _WINSOCKAPI_     /* Prevent inclusion of winsock.h in windows.h */
30
31 #pragma once
32
33 /*
34  * Ensure structures are packed consistently.
35  * Not necessary for WIN32, it is already packed >=4 and there are
36  * no structures in this header that have alignment requirement 
37  * higher than 4.
38  * For WIN64 we do not have compatibility requirement because it is
39  * not possible to mix 32/16 bit code with 64 bit code in the same
40  * process.
41  */
42
43 #if (!defined(_WIN64) && !defined(WIN32))
44 #include <pshpack4.h>
45 /* WIN32 can be defined between here and the required poppack 
46      so define this special macro to ensure poppack */
47 #define _NEED_POPPACK
48 #endif
49
50 /*
Lines 51 ... 747 are skipped.
748 /*
749  * Compatibility macros.
750  */
751
752 #define h_errno               WSAGetLastError()
753 #define HOST_NOT_FOUND                WSAHOST_NOT_FOUND
754 #define TRY_AGAIN                         WSATRY_AGAIN
755 #define NO_RECOVERY                     WSANO_RECOVERY
756 #define NO_DATA                            WSANO_DATA
757 /* no address, look for MX record */
758 #define WSANO_ADDRESS                  WSANO_DATA
759 #define NO_ADDRESS                       WSANO_ADDRESS
760
761
762
763 /*
764  * Windows Sockets errors redefined as regular Berkeley error constants.
765  * These are commented out in Windows NT to avoid conflicts with errno.h.
766  * Use the WSA constants instead.
767  */
768 #if 0
769 #define EWOULDBLOCK                     WSAEWOULDBLOCK
770 #define EINPROGRESS                     WSAEINPROGRESS
771 #define EALREADY                          WSAEALREADY
772 #define ENOTSOCK                          WSAENOTSOCK
773 #define EDESTADDRREQ                    WSAEDESTADDRREQ
774 #define EMSGSIZE                          WSAEMSGSIZE
775 #define EPROTOTYPE                       WSAEPROTOTYPE
776 #define ENOPROTOOPT                     WSAENOPROTOOPT
777 #define EPROTONOSUPPORT               WSAEPROTONOSUPPORT
778 #define ESOCKTNOSUPPORT               WSAESOCKTNOSUPPORT
779 #define EOPNOTSUPP                       WSAEOPNOTSUPP
780 #define EPFNOSUPPORT                    WSAEPFNOSUPPORT
781 #define EAFNOSUPPORT                    WSAEAFNOSUPPORT
782 #define EADDRINUSE                       WSAEADDRINUSE
783 #define EADDRNOTAVAIL                  WSAEADDRNOTAVAIL
784 #define ENETDOWN                          WSAENETDOWN
785 #define ENETUNREACH                     WSAENETUNREACH
786 #define ENETRESET                         WSAENETRESET
787 #define ECONNABORTED                    WSAECONNABORTED
788 #define ECONNRESET                       WSAECONNRESET
789 #define ENOBUFS                            WSAENOBUFS
790 #define EISCONN                            WSAEISCONN
791 #define ENOTCONN                          WSAENOTCONN
792 #define ESHUTDOWN                         WSAESHUTDOWN
793 #define ETOOMANYREFS                    WSAETOOMANYREFS
794 #define ETIMEDOUT                         WSAETIMEDOUT
795 #define ECONNREFUSED                    WSAECONNREFUSED
796 #define ELOOP                               WSAELOOP
797 #define ENAMETOOLONG                    WSAENAMETOOLONG
798 #define EHOSTDOWN                         WSAEHOSTDOWN
799 #define EHOSTUNREACH                    WSAEHOSTUNREACH
800 #define ENOTEMPTY                         WSAENOTEMPTY
801 #define EPROCLIM                          WSAEPROCLIM
802 #define EUSERS                              WSAEUSERS
803 #define EDQUOT                              WSAEDQUOT
804 #define ESTALE                              WSAESTALE
805 #define EREMOTE                            WSAEREMOTE
806 #endif
807
808 /*
809  * WinSock 2 extension -- new error codes and type definition
810  */
811
812 #ifdef WIN32
813
814 #define WSAAPI                              FAR PASCAL
815 #define WSAEVENT                          HANDLE
816 #define LPWSAEVENT                       LPHANDLE
817 #define WSAOVERLAPPED                  OVERLAPPED
818 typedef struct _OVERLAPPED *      LPWSAOVERLAPPED;
819
820 #define WSA_IO_PENDING                (ERROR_IO_PENDING)
821 #define WSA_IO_INCOMPLETE           (ERROR_IO_INCOMPLETE)
822 #define WSA_INVALID_HANDLE          (ERROR_INVALID_HANDLE)
823 #define WSA_INVALID_PARAMETER     (ERROR_INVALID_PARAMETER)
824 #define WSA_NOT_ENOUGH_MEMORY     (ERROR_NOT_ENOUGH_MEMORY)
825 #define WSA_OPERATION_ABORTED     (ERROR_OPERATION_ABORTED)
826
827 #define WSA_INVALID_EVENT           ((WSAEVENT)NULL)
828 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
829 #define WSA_WAIT_FAILED               (WAIT_FAILED)
830 #define WSA_WAIT_EVENT_0             (WAIT_OBJECT_0)
831 #define WSA_WAIT_IO_COMPLETION  (WAIT_IO_COMPLETION)
832 #define WSA_WAIT_TIMEOUT             (WAIT_TIMEOUT)
833 #define WSA_INFINITE                    (INFINITE)
834
835 #else /* WIN16 */
836
837 #define WSAAPI                              FAR PASCAL
838 typedef DWORD                               WSAEVENT, FAR * LPWSAEVENT;
839
840 typedef struct _WSAOVERLAPPED {
841       DWORD      Internal;
842       DWORD      InternalHigh;
843       DWORD      Offset;
844       DWORD      OffsetHigh;
845       WSAEVENT hEvent;
846 } WSAOVERLAPPED, FAR * LPWSAOVERLAPPED;
847
848 #define WSA_IO_PENDING                (WSAEWOULDBLOCK)
849 #define WSA_IO_INCOMPLETE           (WSAEWOULDBLOCK)
850 #define WSA_INVALID_HANDLE          (WSAENOTSOCK)
Lines 851 ... 3876 are skipped.
3877  */
3878 #define WSAMAKEASYNCREPLY(buflen,error)        MAKELONG(buflen,error)
3879 /*
3880  * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
3881  * when constructing the response to WSAAsyncSelect().
3882  */
3883 #define WSAMAKESELECTREPLY(event,error)        MAKELONG(event,error)
3884 /*
3885  * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
3886  * to extract the buffer length from the lParam in the response
3887  * to a WSAAsyncGetXByY().
3888  */
3889 #define WSAGETASYNCBUFLEN(lParam)                  LOWORD(lParam)
3890 /*
3891  * WSAGETASYNCERROR is intended for use by the Windows Sockets application
3892  * to extract the error code from the lParam in the response
3893  * to a WSAGetXByY().
3894  */
3895 #define WSAGETASYNCERROR(lParam)                    HIWORD(lParam)
3896 /*
3897  * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
3898  * to extract the event code from the lParam in the response
3899  * to a WSAAsyncSelect().
3900  */
3901 #define WSAGETSELECTEVENT(lParam)                  LOWORD(lParam)
3902 /*
3903  * WSAGETSELECTERROR is intended for use by the Windows Sockets application
3904  * to extract the error code from the lParam in the response
3905  * to a WSAAsyncSelect().
3906  */
3907 #define WSAGETSELECTERROR(lParam)                  HIWORD(lParam)
3908
3909 #ifdef __cplusplus
3910 }
3911 #endif
3912
3913 #ifdef _NEED_POPPACK
3914 #include <poppack.h>
3915 #endif
3916
3917 #if(_WIN32_WINNT >= 0x0501)
3918 #ifdef IPV6STRICT
3919 #include <wsipv6ok.h>
3920 #endif // IPV6STRICT
3921 #endif //(_WIN32_WINNT >= 0x0501)
3922
3923 #endif  /* _WINSOCK2API_ */
3924
3925