home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / wsock32.dec < prev    next >
Text File  |  1996-05-04  |  12KB  |  429 lines

  1. '
  2. ' ####################
  3. ' #####  PROLOG  #####
  4. ' ####################
  5. '
  6. PROGRAM    "wsock32"
  7. VERSION    "0.0000"
  8. '
  9. TYPE CSTRING      = XLONG
  10. TYPE IN_ADDR      = XLONG
  11. '
  12. TYPE WSADATA
  13.     USHORT     .wVersion
  14.     USHORT     .wHighVersion
  15.     STRING*257 .szDescription
  16.     STRING*129 .szSystemStatus
  17.     USHORT     .iMaxSockets
  18.     USHORT     .iMaxUdpDg
  19.     XLONG      .lpVendorInfo
  20. END TYPE
  21. '
  22. TYPE FD_SET
  23.     XLONG      .fd_count            ' how many are set
  24.     XLONG      .fd_array[63]    ' up to 64 sockets
  25. END TYPE
  26. '
  27. TYPE TIMEVAL
  28.     XLONG      .tv_sec
  29.     XLONG      .tv_usec
  30. END TYPE
  31. '
  32. TYPE SOCKADDR
  33.     USHORT     .sa_family
  34.     UBYTE      .sa_data[13]
  35. END TYPE
  36. '
  37. TYPE SOCKPROTO
  38.     USHORT     .sp_family            ' address family
  39.     USHORT     .sp_protocol        ' protocol
  40. END TYPE
  41. '
  42. TYPE SOCKADDR_IN
  43.     SSHORT     .sin_family
  44.     USHORT     .sin_port
  45.     IN_ADDR    .sin_addr
  46.     UBYTE      .sin_zero[7]
  47. END TYPE
  48. '
  49. TYPE IP_MREQ
  50.     IN_ADDR    .imr_multiaddr
  51.     IN_ADDR    .imr_interface
  52. END TYPE
  53. '
  54. TYPE LINGER
  55.     USHORT     .l_onoff                ' XLONG in linux ???
  56.     USHORT     .l_linger            ' XLONG in linux ???
  57. END TYPE
  58. '
  59. TYPE HOSTENT
  60.     XLONG      .h_name        ' char  *h_name
  61.     XLONG      .h_aliases     ' char  **h_aliases
  62.     SSHORT     .h_addrtype    ' host address type        ' XLONG in linux ???
  63.     SSHORT     .h_length      ' length of address        ' XLONG in linux ???
  64.     XLONG      .h_addr_list   ' addr of list of addresses from name server
  65. END TYPE
  66. '
  67. TYPE NETENT
  68.     XLONG      .n_name        ' char  *n_name
  69.     XLONG      .n_aliases     ' char  **n_aliases
  70.     SSHORT     .n_addrtype    ' net address type        ' XLONG in linux ???
  71.     XLONG      .n_net         ' network
  72. END TYPE
  73. '
  74. TYPE PROTOENT
  75.     XLONG      .p_name        ' char  *p_name
  76.     XLONG      .p_aliases     ' char  **p_aliases
  77.     SSHORT     .p_proto       ' protocol number            ' XLONG in linux ???
  78. END TYPE
  79. '
  80. TYPE RPENT
  81.     XLONG      .r_name        ' char  *r_name
  82.     XLONG      .r_aliases     ' char  **r_aliases
  83.     SSHORT      .r_number     ' rpc program number    ' XLONG in linux ???
  84. END TYPE
  85. '
  86. TYPE SERVENT
  87.     XLONG      .s_name        ' char  *s_name
  88.     XLONG      .s_aliases     ' char  **s_aliases
  89.     SSHORT     .s_port        ' port number                    ' XLONG in linux ???
  90.     XLONG      .s_proto       ' protocol number
  91. END TYPE
  92. '
  93. ' win32 "sockets" funtions - does not include WSA functions
  94. '
  95. EXTERNAL SFUNCTION  accept           (socket, addrSOCKADDR, addrLength)
  96. EXTERNAL SFUNCTION  bind             (socket, addrSOCKADDR, length)
  97. EXTERNAL SFUNCTION  closesocket      (socket)
  98. EXTERNAL SFUNCTION  connect          (socket, addrSOCKADDR, length)
  99. EXTERNAL SFUNCTION  getpeername      (socket, addrSOCKADDR, addrLength)
  100. EXTERNAL SFUNCTION  getsockname      (socket, addrSOCKADDR, addrLength)
  101. EXTERNAL SFUNCTION  getsockopt       (socket, level, optname, addrSTRING, addrLength)
  102. EXTERNAL SFUNCTION  htonl            (hostlong)
  103. EXTERNAL SFUNCTION  htons            (hostshort)
  104. EXTERNAL SFUNCTION  inet_addr        (addrSTRING)
  105. EXTERNAL SFUNCTION  inet_ntoa        (in_addr)
  106. EXTERNAL SFUNCTION  ioctlsocket      (socket, command, addrArg)
  107. EXTERNAL SFUNCTION  listen           (socket, backlog)
  108. EXTERNAL SFUNCTION  ntohl            (netlong)
  109. EXTERNAL SFUNCTION  ntohs            (netshort)
  110. EXTERNAL SFUNCTION  recv             (socket, addrBuffer, length, flags)
  111. EXTERNAL SFUNCTION  recvfrom         (socket, addrBuffer, length, flags, addrSOCKADDR, addrLength)
  112. EXTERNAL SFUNCTION  select           (numfd, addrFD_SET, addrFD_SET, addrFD_SET, addrTIMEVAL)
  113. EXTERNAL SFUNCTION  send             (socket, addrMessage, length, flags)
  114. EXTERNAL SFUNCTION  sendto           (socket, addrMessage, length, flags, addrSOCKADDR, tolength)
  115. EXTERNAL SFUNCTION  setsockopt       (socket, level, optname, addrOptval, optlen)
  116. EXTERNAL SFUNCTION  shutdown         (socket, how)
  117. EXTERNAL SFUNCTION  socket           (domain, type, protocol)
  118. '
  119. ' "database" funtions
  120. '
  121. EXTERNAL SFUNCTION  HOSTENT   gethostbyaddr    (addrSTRING, length, type)
  122. EXTERNAL SFUNCTION  HOSTENT   gethostbyname    (addrSTRING)
  123. EXTERNAL SFUNCTION            gethostname      (addrSTRING, length)
  124. EXTERNAL SFUNCTION  SERVENT   getservbyname    (addrSTRING, addrSTRING)
  125. EXTERNAL SFUNCTION  SERVENT   getservbyport    (port, addrSTRING)
  126. EXTERNAL SFUNCTION  PROTOENT  getprotobyname   (addrSTRING)
  127. EXTERNAL SFUNCTION  PROTOENT  getprotobynumber (proto)
  128. '
  129. ' win32 sockets - required functions
  130. '
  131. EXTERNAL SFUNCTION  WSAStartup       (version, addrWSADATA)
  132. EXTERNAL SFUNCTION  WSACleanup       ()
  133. EXTERNAL SFUNCTION  WSAGetLastError  ()
  134. '
  135. ' *****  winsock constants Win32 from winsock.h  *****
  136. '
  137. ' these constants are often different from the unix/linux values
  138. '
  139. ' for ioctlsocket()
  140. '
  141.     $$IOC_PARM_MASK      = 0x0000007F
  142.     $$IOC_VOID           = 0x20000000
  143.     $$IOC_OUT            = 0x40000000
  144.     $$IOC_INOUT          = 0x60000000
  145. '
  146. ' for ioctlsocket() - figured out from above with "formula" in winsock.h
  147. '
  148.     $$FIONREAD           = 0x4004667F
  149.     $$FIONBIO            = 0x8004667E
  150.     $$FIOASYNC           = 0x8004667D
  151. '
  152. ' protocols
  153. '
  154.     $$IPPROTO_IP         =    0
  155.     $$IPPROTO_ICMP       =    1
  156.     $$IPPROTO_GGP        =    2
  157.     $$IPPROTO_TCP        =    6
  158.     $$IPPROTO_PUP        =   12
  159.     $$IPPROTO_UDP        =   17
  160.     $$IPPROTO_IDP        =   22
  161.     $$IPPROTO_ND         =   77
  162.     $$IPPROTO_RAW        =  255
  163.     $$IPPROTO_MAX        =  256
  164. '
  165. ' port / sockets for network standard functions
  166. '
  167.     $$IPPORT_ECHO        =    7
  168.     $$IPPORT_DISCARD     =    9
  169.     $$IPPORT_SYSTAT      =   11
  170.     $$IPPORT_DAYTIME     =   13
  171.     $$IPPORT_NETSTAT     =   15
  172.     $$IPPORT_FTP         =   21
  173.     $$IPPORT_TELNET      =   23
  174.     $$IPPORT_SMTP        =   25
  175.     $$IPPORT_TIMESERVER  =   37
  176.     $$IPPORT_NAMESERVER  =   42
  177.     $$IPPORT_WHOIS       =   43
  178.     $$IPPORT_MTP         =   57
  179. '
  180. ' sockets for host specific functions
  181. '
  182.     $$IPPORT_TFTP        =   69
  183.     $$IPPORT_RJE         =   77
  184.     $$IPPORT_FINGER      =   79
  185.     $$IPPORT_TTYLINK     =   87
  186.     $$IPPORT_SUPDUP      =   95
  187. '
  188. ' UNIX TCP sockets
  189. '
  190.     $$IPPORT_EXECSERVER  =  512
  191.     $$IPPORT_LOGINSERVER =  513
  192.     $$IPPORT_CMDSERVER   =  514
  193.     $$IPPORT_EFSSERVER   =  520
  194. '
  195. ' UNIX UDP sockets
  196. '
  197.     $$IPPORT_BIFFUDP     =  512
  198.     $$IPPORT_WHOSERVER   =  513
  199.     $$IPPORT_ROUTESERVER =  520
  200.     $$IPPORT_ROUTEEXTRA  =  521
  201.     $$IPPORT_RESERVED    = 1024
  202. '
  203. ' link numbers
  204. '
  205.     $$IMPLINK_IP         =  155
  206.     $$IMPLINK_LOWEXPER   =  156
  207.     $$IMPLINK_HIGHEXPER  =  158
  208. '
  209. ' internet address integers
  210. '
  211. ' CLASS A = 0x00000000 to 0x7F000000
  212. '
  213.     $$IN_CLASSA_NET      = 0xFF000000
  214.     $$IN_CLASSA_NSHIFT   = 24
  215.     $$IN_CLASSA_HOST     = 0x00FFFFFF
  216.     $$IN_CLASSA_MAX      = 128
  217. '
  218. ' CLASS B = 0x80000000 to 0xBF000000
  219. '
  220.     $$IN_CLASSB_NET      = 0xFFFF0000
  221.     $$IN_CLASSB_NSHIFT   = 16
  222.     $$IN_CLASSB_HOST     = 0x0000FFFF
  223.     $$IN_CLASSB_MAX      = 65536
  224. '
  225. ' CLASS C = 0xC0000000 to 0x0DFFFFFF
  226. '
  227.     $$IN_CLASSC_NET      = 0xFFFFFF00
  228.     $$IN_CLASSC_NSHIFT   = 8
  229.     $$IN_CLASSC_HOST     = 0x000000FF
  230. '
  231.     $$INADDR_ANY         = 0x00000000
  232.     $$INADDR_LOOPBACK    = 0x7F000001
  233.     $$INADDR_BROADCAST   = 0xFFFFFFFF
  234.     $$INADDR_NONE        = 0xFFFFFFFF
  235. '
  236. ' IP options - for getsockopt() and setsockopt() at the IP level
  237. '
  238.     $$IP_OPTIONS         = 1
  239.     $$IP_MULTICAST_IF    = 2
  240.     $$IP_MULTICAST_TTL   = 3
  241.     $$IP_MULTICAST_LOOP  = 4
  242.     $$IP_ADD_MEMBERSHIP  = 5
  243.     $$IP_DROP_MEMBERSHIP = 6
  244. '
  245.     $$IP_DEFAULT_MULTICAST_TTL  = 1
  246.     $$IP_DEFAULT_MULTICAST_LOOP = 1
  247.     $$IP_MAX_MEMBERSHIPS        = 20
  248. '
  249. ' socket types
  250. '
  251.     $$SOCK_STREAM        = 1
  252.     $$SOCK_DGRAM         = 2
  253.     $$SOCK_RAW           = 3
  254.     $$SOCK_RDM           = 4
  255.     $$SOCK_SEQPACKET     = 5
  256. '
  257. ' option flags per socket
  258. '
  259.     $$SO_DEBUG           = 0x0001
  260.     $$SO_ACCEPTCONN      = 0x0002
  261.     $$SO_REUSEADDR       = 0x0004
  262.     $$SO_KEEPALIVE       = 0x0008
  263.     $$SO_DONTROUTE       = 0x0010
  264.     $$SO_BROADCAST       = 0x0020
  265.     $$SO_USELOOPBACK     = 0x0040
  266.     $$SO_LINGER          = 0x0080
  267.     $$SO_OOBINLINE       = 0x0100
  268. '
  269. ' additional options
  270. '
  271.     $$SO_SNDBUF          = 0x1001
  272.     $$SO_RCVBUF          = 0x1002
  273.     $$SO_SNDLOWAT        = 0x1003
  274.     $$SO_RCVLOWAT        = 0x1004
  275.     $$SO_SNDTIMEO        = 0x1005
  276.     $$SO_RCVTIMEO        = 0x1006
  277.     $$SO_ERROR           = 0x1007
  278.     $$SO_TYPE            = 0x1008
  279. '
  280. ' options for connect and disconnect data and options - non-TCP transports
  281. '
  282.     $$SO_CONNDATE        = 0x7000
  283.     $$SO_CONNOPT         = 0x7001
  284.     $$SO_DISCDATA        = 0x7002
  285.     $$SO_DISCOPT         = 0x7003
  286.     $$SO_CONNDATALEN     = 0x7004
  287.     $$SO_CONNOPTLEN      = 0x7005
  288.     $$SO_DISCDATALEN     = 0x7006
  289.     $$SO_DISCOPTLEN      = 0x7007
  290. '
  291. ' options for opening sockets for synchronous access
  292. '
  293.     $$SO_OPENTYPE             = 0x7008
  294.     $$SO_SYNCHRONOUS_ALERT    = 0x0010
  295.     $$SO_SYNCHRONOUS_NONALERT = 0x0020
  296. '
  297. ' other WindowsNT specific options
  298. '
  299.     $$SO_MAXDG           = 0x7009
  300.     $$SO_MAXPATHDB       = 0x700A
  301. '
  302. ' TCP options
  303. '
  304.     $$TCP_NODELAY        = 0x0001
  305.     $$TCP_BSDURGENT      = 0x7000
  306. '
  307. ' address families
  308. '
  309.     $$AF_UNSPEC          =  0
  310.     $$AF_UNIX            =  1
  311.     $$AF_INET            =  2
  312.     $$AF_IMPLINK         =  3
  313.     $$AF_PUP             =  4
  314.     $$AF_CHAOS           =  5
  315.     $$AF_IPX             =  6
  316.     $$AF_NS              =  6
  317.     $$AF_ISO             =  7
  318.     $$AF_OSI             =  7
  319.     $$AF_ECMA            =  8
  320.     $$AF_DATAKIT         =  9
  321.     $$AF_CCITT           = 10
  322.     $$AF_SNA             = 11
  323.     $$AF_DECNET          = 12
  324.     $$AF_DLI             = 13
  325.     $$AF_LAT             = 14
  326.     $$AF_HYLINK          = 15
  327.     $$AF_APPLETALK       = 16
  328.     $$AF_NETBIOS         = 17
  329.     $$AF_MAX             = 18
  330. '
  331. ' protocol families
  332. '
  333.     $$PF_UNSPEC          = $$AF_UNSPEC
  334.     $$PF_UNIX            = $$AF_UNIX
  335.     $$PF_INET            = $$AF_INET
  336.     $$PF_IMPLINK         = $$AF_IMPLINK
  337.     $$PF_PUP             = $$AF_PUP
  338.     $$PF_CHAOS           = $$AF_CHAOS
  339.     $$PF_IPX             = $$AP_IPX
  340.     $$PF_NS              = $$AP_NS
  341.     $$PF_ISO             = $$AP_ISO
  342.     $$PF_OSI             = $$AP_OSI
  343.     $$PF_ECMA            = $$AP_ECMA
  344.     $$PF_DATAKIT         = $$AP_DATAKIT
  345.     $$PF_CCITT           = $$AF_CCITT
  346.     $$PF_SNA             = $$AF_SNA
  347.     $$PF_DECNET          = $$AF_DECNET
  348.     $$PF_DLI             = $$AF_DLI
  349.     $$PF_LAT             = $$AF_LAT
  350.     $$PF_HYLINK          = $$AF_HYLINK
  351.     $$PF_APPLETALK       = $$AF_APPLETALK
  352.     $$PF_NETBIOS         = $$AF_NETBIOS
  353.     $$PF_MAX             = $$AF_MAX
  354. '
  355. ' getsocketoptions() : setsockoptions()
  356. '
  357.     $$SOL_SOCKET         = 0xFFFF
  358. '
  359. ' max queue length that listen can specify
  360. '
  361.     $$SOMAXCONN          = 5
  362. '
  363. ' flags for send() and recv()
  364. '
  365.     $$MSG_OOB            = 0x0001
  366.     $$MSG_PEEK           = 0x0002
  367.     $$MSG_DONTROUTE      = 0x0004
  368.     $$MSG_PARTIAL        = 0x8000
  369. '
  370.     $$MSG_MAXIOVLEN      = 16
  371.     $$MAXGETHOSTSTRUCT   = 1024
  372. '
  373. ' Win32 sockets error numbers
  374. '
  375.     $$WSABASEERR             = 10000
  376.     $$WSAEINTR               = 10004
  377.     $$WSAEBADF               = 10009
  378.     $$WSAEACCES              = 10013
  379.     $$WSAEFAULT              = 10014
  380.     $$WSAEINVAL              = 10022
  381.     $$WSAEMFILE              = 10024
  382.     $$WSAEWOULDBLOCK         = 10035
  383.     $$WSAEINPROGRESS         = 10036
  384.     $$WSAENOTSOCK            = 10037
  385.     $$WSAENOTSOCK            = 10038
  386.     $$WSAEDESTADDRREQ        = 10039
  387.     $$WSAEMSGSIZE            = 10040
  388.     $$WSAEPROTOTYPE          = 10041
  389.     $$WSAENOPROTOOPT         = 10042
  390.     $$WSAEPROTONOSUPPORT     = 10043
  391.     $$WSAESOCKTNOSUPPORT     = 10044
  392.     $$WSAEOPNOTSUPP          = 10045
  393.     $$WSAEPFNOSUPPORT        = 10046
  394.     $$WSAEAFNOSUPPORT        = 10047
  395.     $$WSAEADDRINUSE          = 10048
  396.     $$WSAEADDRNOTAVAIL       = 10049
  397.     $$WSAENETDOWN            = 10050
  398.     $$WSAENETUNREACH         = 10051
  399.     $$WSAENETRESET           = 10052
  400.     $$WSAECONNABORTED        = 10053
  401.     $$WSAECONNRESET          = 10054
  402.     $$WSAENOBUFS             = 10055
  403.     $$WSAEISCONN             = 10056
  404.     $$WSAENOTCONN            = 10057
  405.     $$WSAESHUTDOWN           = 10058
  406.     $$WSAETOOMANYREFS        = 10059
  407.     $$WSAETIMEDOUT           = 10060
  408.     $$WSAECONNREFUSED        = 10061
  409.     $$WSAELOOP               = 10062
  410.     $$WSAENAMETOOLONG        = 10063
  411.     $$WSAEHOSTDOWN           = 10064
  412.     $$WSAEHOSTUNREACH        = 10065
  413.     $$WSAENOTEMPTY           = 10066
  414.     $$WSAEPROCLIM            = 10067
  415.     $$WSAEUSERS              = 10068
  416.     $$WSAEDQUOT              = 10069
  417.     $$WSAESTALE              = 10070
  418.     $$WSAEREMOTE             = 10071
  419.     $$WSAESYSNOTREADY        = 10091
  420.     $$WSAEVERNOTSUPPORTED    = 10092
  421.     $$WSAENOTINITILISED      = 10093
  422.     $$WSAENOTINITILIZED      = 10093
  423.     $$WSAEDISCON             = 10101
  424. '
  425.     $$WSAHOST_NOT_FOUND      = 11001
  426.     $$WSATRY_AGAIN           = 11002
  427.     $$WSANO_RECOVERY         = 11003
  428.     $$WSANO_DATA             = 11004
  429.     $$WSANO_ADDRESS          = 11004