home *** CD-ROM | disk | FTP | other *** search
/ Internet Standards / CD1.mdf / winsock / winsock.inc < prev    next >
Text File  |  1993-02-13  |  11KB  |  391 lines

  1. { Winsock.h file for Borland Pascal
  2.   Conversion by Marc B. Manza
  3.              Center for Applied Large-Scale Computing
  4.   Requires Winsock.pas and Winsock.inc
  5.   Send any comments/change requests/etc. to:
  6.   manza@flash.poly.edu }
  7.  
  8. type
  9.     u_char = char;
  10.     u_short = word; { byte ?? }
  11.     u_int = word;
  12.     u_long = longint;
  13.  
  14.     SOCKET = u_int;
  15.  
  16. const
  17.      FD_SETSIZE     =   64;
  18.  
  19. type
  20.     fd_set = record
  21.                    fd_count : u_short;
  22.                    fd_array : array[0..FD_SETSIZE-1] of SOCKET;
  23.     end;
  24.  
  25.     timeval = record
  26.                     tv_sec, tv_usec : longint;
  27.     end;
  28.  
  29. const
  30.      IOCPARM_MASK   =   $007f;
  31.      IOC_VOID       =   $20000000;
  32.      IOC_OUT        =   $40000000;
  33.      IOC_IN         =   $80000000;
  34.      IOC_INOUT      =   (IOC_IN OR IOC_OUT);
  35.  
  36. type
  37.     PPchar = ^PChar;
  38.  
  39.     hostent = record
  40.                     h_name : PChar;
  41.                     h_aliases : PPChar;
  42.                     h_addrtype : integer;
  43.                     h_length : integer;
  44.                     h_addr_list : PPChar;
  45.                     h_addr : PChar;
  46.     end;
  47.  
  48.     netent = record
  49.                    n_name : PChar;
  50.                    n_aliases : ^PChar;
  51.                    n_addrtype : integer;
  52.                    n_net : u_long;
  53.     end;
  54.  
  55.     servent = record
  56.                     s_name : PChar;
  57.                     s_aliases : ^PChar;
  58.                     s_port : integer;
  59.                     s_proto : PChar;
  60.     end;
  61.  
  62.     protoent = record
  63.                      p_name : PChar;
  64.                      p_aliases : ^Pchar;
  65.                      p_proto : integer;
  66.     end;
  67.  
  68. const
  69.      IPPROTO_IP     =   0;
  70.      IPPROTO_ICMP   =   1;
  71.      IPPROTO_GGP    =   2;
  72.      IPPROTO_TCP    =   6;
  73.      IPPROTO_PUP    =   12;
  74.      IPPROTO_UDP    =   17;
  75.      IPPROTO_IDP    =   22;
  76.      IPPROTO_ND     =   77;
  77.  
  78.      IPPROTO_RAW    =   255;
  79.      IPPROTO_MAX    =   256;
  80.  
  81.  
  82.      IPPORT_ECHO    =   7;
  83.      IPPORT_DISCARD =   9;
  84.      IPPORT_SYSTAT  =   11;
  85.      IPPORT_DAYTIME =   13;
  86.      IPPORT_NETSTAT =   15;
  87.      IPPORT_FTP     =   21;
  88.      IPPORT_TELNET  =   23;
  89.      IPPORT_SMTP    =   25;
  90.      IPPORT_TIMESERVER  =  37;
  91.      IPPORT_NAMESERVER  =  42;
  92.      IPPORT_WHOIS       =  43;
  93.      IPPORT_MTP         =  57;
  94.  
  95.      IPPORT_TFTP        =  69;
  96.      IPPORT_RJE         =  77;
  97.      IPPORT_FINGER      =  79;
  98.      IPPORT_TTYLINK     =  87;
  99.      IPPORT_SUPDUP      =  95;
  100.  
  101.      IPPORT_EXECSERVER  =  512;
  102.      IPPORT_LOGINSERVER =  513;
  103.      IPPORT_CMDSERVER   =  514;
  104.      IPPORT_EFSSERVER   =  520;
  105.  
  106.      IPPORT_BIFFUDP     =  512;
  107.      IPPORT_WHOSERVER   =  513;
  108.      IPPORT_ROUTESERVER =  520;
  109.  
  110.      IPPORT_RESERVED    =  1024;
  111.  
  112.      IMPLINK_IP         =  155;
  113.      IMPLINK_LOWEXPER   =  156;
  114.      IMPLINK_HIGHEXPER  =  158;
  115.  
  116. Type
  117.      SunB = record
  118.                   s_b1, s_b2, s_b3, s_b4 : u_char;
  119.  
  120.      end;
  121.  
  122.      SunW = record
  123.                   s_w1, s_w2 : u_short;
  124.      end;
  125.  
  126.      in_addr = record
  127.                  case integer of
  128.                           0 : (S_un_b : SunB);
  129.                           1 : (S_un_w : SunW);
  130.                           2 : (S_addr : u_long);
  131.      end;
  132.  
  133. var
  134.    S_un : in_addr;
  135.  
  136. type
  137.     sockaddr_in = record
  138.                         sin_family : integer;
  139.                         sin_port : u_short;
  140.                         sin_addr : in_addr;
  141.                         sin_zero : array[0..7] of char;
  142.     end;
  143.  
  144. const
  145.      WSADESCRIPTION_LEN     =   256;
  146.      WSASYS_STATUS_LEN      =   128;
  147.  
  148. type
  149.     LPWSADATA = ^WSAData;
  150.     WSAData = record
  151.                     wVersion : word;
  152.                     wHighVersion : word;
  153.                     szDescription : array[0..WSADESCRIPTION_LEN] of char;
  154.                     szSystemStatus : array[0..WSASYS_STATUS_LEN] of char;
  155.                     iMaxSockets : integer;
  156.                     iMaxUdpDg : integer;
  157.                     lpVendorInfo : PChar;
  158.     end;
  159.  
  160. const
  161.      IP_OPTIONS     =   1;      
  162.  
  163.      INVALID_SOCKET =   NOT(0);
  164.      SOCKET_ERROR   =   -1;
  165.  
  166.      SOCK_STREAM    =   1;
  167.      SOCK_DGRAM     =   2;
  168.      SOCK_RAW       =   3;
  169.      SOCK_RDM       =   4;
  170.      SOCK_SEQPACKET =   5;
  171.  
  172.      SO_DEBUG       =   $0001;
  173.      SO_ACCEPTCONN  =   $0002;
  174.      SO_REUSEADDR   =   $0004;
  175.      SO_KEEPALIVE   =   $0008;
  176.      SO_DONTROUTE   =   $0010;
  177.      SO_BROADCAST   =   $0020;
  178.      SO_USELOOPBACK =   $0040;
  179.      SO_LINGER      =   $0080;
  180.      SO_OOBINLINE   =   $0100;
  181.  
  182.      SO_DONTLINGER  =   $ff7f;
  183.  
  184.      SO_SNDBUF      =   $1001;
  185.      SO_RCVBUF      =   $1002;
  186.      SO_SNDLOWAT    =   $1003;
  187.      SO_RCVLOWAT    =   $1004;
  188.      SO_SNDTIMEO    =   $1005;
  189.      SO_RCVTIMEO    =   $1006;
  190.      SO_ERROR       =   $1007;
  191.      SO_TYPE        =   $1008;
  192.  
  193.      AF_UNSPEC      =   0;
  194.      AF_UNIX        =   1;
  195.      AF_INET        =   2;
  196.      AF_IMPLINK     =   3;
  197.      AF_PUP         =   4;
  198.      AF_CHAOS       =   5;
  199.      AF_NS          =   6;
  200.      AF_NBS         =   7;
  201.      AF_ECMA        =   8;
  202.      AF_DATAKIT     =   9;
  203.      AF_CCITT       =   10;
  204.      AF_SNA         =   11;
  205.      AF_DECnet      =   12;
  206.      AF_DLI         =   13;
  207.      AF_LAT         =   14;
  208.      AF_HYLINK      =   15;
  209.      AF_APPLETALK   =   16;
  210.  
  211.      AF_MAX         =   17;
  212.  
  213. type
  214.     sockaddr = record
  215.                      sa_family : u_short;
  216.                      sa_data : array[0..13] of char; { should be 0..13 ?}
  217.     end;
  218.  
  219.     sockproto = record
  220.                       sp_family : u_short;
  221.                       sp_protocol : u_short;
  222.     end;
  223.  
  224. const
  225.      PF_UNSPEC      =   AF_UNSPEC;
  226.      PF_UNIX        =   AF_UNIX;
  227.      PF_INET        =   AF_INET;
  228.      PF_IMPLINK     =   AF_IMPLINK;
  229.      PF_PUP         =   AF_PUP;
  230.      PF_CHAOS       =   AF_CHAOS;
  231.      PF_NS          =   AF_NS;
  232.      PF_NBS         =   AF_NBS;
  233.      PF_ECMA        =   AF_ECMA;
  234.      PF_DATAKIT     =   AF_DATAKIT;
  235.      PF_CCITT       =   AF_CCITT;
  236.      PF_SNA         =   AF_SNA;
  237.      PF_DECnet      =   AF_DECnet;
  238.      PF_DLI         =   AF_DLI;
  239.      PF_LAT         =   AF_LAT;
  240.      PF_HYLINK      =   AF_HYLINK;
  241.      PF_APPLETALK   =   AF_APPLETALK;
  242.  
  243.      PF_MAX         =   AF_MAX;        
  244.  
  245. type
  246.     linger = record
  247.                    l_onoff : u_short;
  248.                    l_linger : u_short;
  249.     end;
  250.  
  251. const
  252.      SOL_SOCKET     =   $ffff;
  253.  
  254.      SOMAXCONN      =   5;
  255.  
  256.      MSG_OOB        =   $1;
  257.      MSG_PEEK       =   $2;
  258.      MSG_DONTROUTE  =   $4;
  259.  
  260.      MSG_MAXIOVLEN  =   16;
  261.  
  262.      MAXGETHOSTSTRUCT   =  1024;
  263.  
  264.      FD_READ            =  $01;
  265.      FD_WRITE           =  $02;
  266.      FD_OOB             =  $04;
  267.      FD_ACCEPT          =  $08;
  268.      FD_CONNECT         =  $10;
  269.      FD_CLOSE           =  $20;
  270.  
  271.  
  272.      WSABASEERR         =  10000;
  273.  
  274.      WSAEINTR           =  (WSABASEERR + 4);
  275.      WSAEBADF           =  (WSABASEERR + 9);
  276.      WSAEFAULT          =  (WSABASEERR + 14);
  277.      WSAEINVAL          =  (WSABASEERR + 22);
  278.      WSAEMFILE          =  (WSABASEERR + 24);
  279.  
  280.      WSAEWOULDBLOCK     =  (WSABASEERR + 35);
  281.      WSAEINPROGRESS     =  (WSABASEERR + 36);
  282.      WSAEALREADY        =  (WSABASEERR + 37);
  283.      WSAENOTSOCK        =  (WSABASEERR + 38);
  284.      WSAEDESTADDRREQ    =  (WSABASEERR + 39);
  285.      WSAEMSGSIZE        =  (WSABASEERR + 40);
  286.      WSAEPROTOTYPE      =  (WSABASEERR + 41);
  287.      WSAENOPROTOOPT     =  (WSABASEERR + 42);
  288.      WSAEPROTONOSUPPORT =  (WSABASEERR + 43);
  289.      WSAESOCKTNOSUPPORT  =  (WSABASEERR + 44);
  290.      WSAEOPNOTSUPP      =  (WSABASEERR + 45);
  291.      WSAEPFNOSUPPORT    =  (WSABASEERR + 46);
  292.      WSAEAFNOSUPPORT    =  (WSABASEERR + 47);
  293.      WSAEADDRINUSE      =  (WSABASEERR + 48);
  294.      WSAEADDRNOTAVAIL   =  (WSABASEERR + 49);
  295.      WSAENETDOWN        =  (WSABASEERR + 50);
  296.      WSAENETUNREACH     =  (WSABASEERR + 51);
  297.      WSAENETRESET       =  (WSABASEERR + 52);
  298.      WSAECONNABORTED    =  (WSABASEERR + 53);
  299.      WSAECONNRESET      =  (WSABASEERR + 54);
  300.      WSAENOBUFS         =  (WSABASEERR + 55);
  301.      WSAEISCONN         =  (WSABASEERR + 56);
  302.      WSAENOTCONN        =  (WSABASEERR + 57);
  303.      WSAESHUTDOWN       =  (WSABASEERR + 58);
  304.      WSAETOOMANYREFS    =  (WSABASEERR + 59);
  305.      WSAETIMEDOUT       =  (WSABASEERR + 60);
  306.      WSAECONNREFUSED    =  (WSABASEERR + 61);
  307.      WSAELOOP           =  (WSABASEERR + 62);
  308.      WSAENAMETOOLONG    =  (WSABASEERR + 63);
  309.      WSAEHOSTDOWN       =  (WSABASEERR + 64);
  310.      WSAEHOSTUNREACH    =  (WSABASEERR + 65);
  311.      WSAENOTEMPTY       =  (WSABASEERR + 66);
  312.      WSAEPROCLIM        =  (WSABASEERR + 67);
  313.      WSAEUSERS          =  (WSABASEERR + 68);
  314.      WSAEDQUOT          =  (WSABASEERR + 69);
  315.      WSAESTALE          =  (WSABASEERR + 70);
  316.      WSAEREMOTE         =  (WSABASEERR + 71);
  317.  
  318.      WSASYSNOTREADY     =  (WSABASEERR + 91);
  319.      WSAVERNOTSUPPORTED =  (WSABASEERR + 92);
  320.      WSANOTINITIALISED  =  (WSABASEERR + 93);
  321.  
  322.      WSAHOST_NOT_FOUND  =  (WSABASEERR + 1001);
  323.      HOST_NOT_FOUND     =  WSAHOST_NOT_FOUND;
  324.  
  325.      WSATRY_AGAIN       =  (WSABASEERR + 1002);
  326.      TRY_AGAIN          =  WSATRY_AGAIN;
  327.  
  328.      WSANO_RECOVERY     =  (WSABASEERR + 1003);
  329.      NO_RECOVERY        =  WSANO_RECOVERY;
  330.  
  331.      WSANO_DATA         =  (WSABASEERR + 1004);
  332.      NO_DATA            =  WSANO_DATA;
  333.  
  334.      WSANO_ADDRESS      =  WSANO_DATA;
  335.      NO_ADDRESS         =  WSANO_ADDRESS;
  336.  
  337.      EWOULDBLOCK        =  WSAEWOULDBLOCK;
  338.      EINPROGRESS        =  WSAEINPROGRESS;
  339.      EALREADY           =  WSAEALREADY;
  340.      ENOTSOCK           =  WSAENOTSOCK;
  341.      EDESTADDRREQ       =  WSAEDESTADDRREQ;
  342.      EMSGSIZE           =  WSAEMSGSIZE;
  343.      EPROTOTYPE         =  WSAEPROTOTYPE;
  344.      ENOPROTOOPT        =  WSAENOPROTOOPT;
  345.      EPROTONOSUPPORT    =  WSAEPROTONOSUPPORT;
  346.      ESOCKTNOSUPPORT    =  WSAESOCKTNOSUPPORT;
  347.      EOPNOTSUPP         =  WSAEOPNOTSUPP;
  348.      EPFNOSUPPORT       =  WSAEPFNOSUPPORT;
  349.      EAFNOSUPPORT       =  WSAEAFNOSUPPORT;
  350.      EADDRINUSE         =  WSAEADDRINUSE;
  351.      EADDRNOTAVAIL      =  WSAEADDRNOTAVAIL;
  352.      ENETDOWN           =  WSAENETDOWN;
  353.      ENETUNREACH        =  WSAENETUNREACH;
  354.      ENETRESET          =  WSAENETRESET;
  355.      ECONNABORTED       =  WSAECONNABORTED;
  356.      ECONNRESET         =  WSAECONNRESET;
  357.      ENOBUFS            =  WSAENOBUFS;
  358.      EISCONN            =  WSAEISCONN;
  359.      ENOTCONN           =  WSAENOTCONN;
  360.      ESHUTDOWN          =  WSAESHUTDOWN;
  361.      ETOOMANYREFS       =  WSAETOOMANYREFS;
  362.      ETIMEDOUT          =  WSAETIMEDOUT;
  363.      ECONNREFUSED       =  WSAECONNREFUSED;
  364.      ELOOP              =  WSAELOOP;
  365.      ENAMETOOLONG       =  WSAENAMETOOLONG;
  366.      EHOSTDOWN          =  WSAEHOSTDOWN;
  367.      EHOSTUNREACH       =  WSAEHOSTUNREACH;
  368.      ENOTEMPTY          =  WSAENOTEMPTY;
  369.      EPROCLIM           =  WSAEPROCLIM;
  370.      EUSERS             =  WSAEUSERS;
  371.      EDQUOT             =  WSAEDQUOT;
  372.      ESTALE             =  WSAESTALE;
  373.      EREMOTE            =  WSAEREMOTE;
  374.  
  375. type
  376.     PSockAddr = ^SockAddr;
  377.  
  378.     PSockAddr_In = ^SockAddr_In;
  379.  
  380.     PLinger = ^Linger;
  381.  
  382.     PIn_Addr = ^In_Addr;
  383.  
  384.     PFD_SET = ^FD_SET;
  385.  
  386.     PHostEnt = ^HostEnt;
  387.  
  388.     PServEnt = ^ServEnt;
  389.  
  390.     PProtoEnt = ^ProtoEnt;
  391.