jwaws2dnet.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. {******************************************************************************}
  2. { }
  3. { Winsock2 DecNET API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: ws2dnet.h, released June 2000. The original Pascal }
  9. { code is: WS2dnet.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaWS2dnet;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "ws2dnet.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaWinSock2;
  51. //************************************************************************
  52. // Winsock V2.0 DECnet definitions File: WS2DNET.H
  53. //************************************************************************
  54. //
  55. // DECnet WinSock Definitions
  56. //
  57. const
  58. DNPROTO_NSP = 1; // DECnet NSP transport protocol
  59. {$EXTERNALSYM DNPROTO_NSP}
  60. DNPROTO_RAW = 255;
  61. {$EXTERNALSYM DNPROTO_RAW}
  62. DN_MAXADDL = 20; // maximum DECnet address length
  63. {$EXTERNALSYM DN_MAXADDL}
  64. DN_ADDL = 2; // DECnet NSP address length
  65. {$EXTERNALSYM DN_ADDL}
  66. DN_MAXOPTL = 16; // Maximum DECnet optional data length
  67. {$EXTERNALSYM DN_MAXOPTL}
  68. DN_MAXOBJL = 16; // Maximum DECnet object name length
  69. {$EXTERNALSYM DN_MAXOBJL}
  70. DN_MAXACCL = 39; // Maximum DECnet access string length
  71. {$EXTERNALSYM DN_MAXACCL}
  72. DN_MAXALIASL = 128; // Maximum DECnet alias string length
  73. {$EXTERNALSYM DN_MAXALIASL}
  74. DN_MAXNODEL = 7; // Maximum DECnet Phase IV node string length
  75. {$EXTERNALSYM DN_MAXNODEL}
  76. // DECnet Extension Function Identifiers
  77. WS2API_DECNET_dnet_addr = 1;
  78. {$EXTERNALSYM WS2API_DECNET_dnet_addr}
  79. WS2API_DECNET_dnet_eof = 2;
  80. {$EXTERNALSYM WS2API_DECNET_dnet_eof}
  81. WS2API_DECNET_dnet_getacc = 3;
  82. {$EXTERNALSYM WS2API_DECNET_dnet_getacc}
  83. WS2API_DECNET_dnet_getalias = 4;
  84. {$EXTERNALSYM WS2API_DECNET_dnet_getalias}
  85. WS2API_DECNET_dnet_htoa = 5;
  86. {$EXTERNALSYM WS2API_DECNET_dnet_htoa}
  87. WS2API_DECNET_dnet_ntoa = 6;
  88. {$EXTERNALSYM WS2API_DECNET_dnet_ntoa}
  89. WS2API_DECNET_getnodeadd = 7;
  90. {$EXTERNALSYM WS2API_DECNET_getnodeadd}
  91. WS2API_DECNET_getnodebyaddr = 8;
  92. {$EXTERNALSYM WS2API_DECNET_getnodebyaddr}
  93. WS2API_DECNET_getnodebyname = 9;
  94. {$EXTERNALSYM WS2API_DECNET_getnodebyname}
  95. WS2API_DECNET_getnodename = 10;
  96. {$EXTERNALSYM WS2API_DECNET_getnodename}
  97. WS2API_DECNET_MAX = 10;
  98. {$EXTERNALSYM WS2API_DECNET_MAX}
  99. //
  100. // DECnet address structure
  101. //
  102. type
  103. dn_naddr = packed record
  104. a_len: Word; // length of address
  105. a_addr: array [0..DN_MAXADDL - 1] of Byte; // address as bytes
  106. end;
  107. {$EXTERNALSYM dn_naddr}
  108. DNNADDR = dn_naddr;
  109. {$EXTERNALSYM DNNADDR}
  110. LPDNNADDR = ^DNNADDR;
  111. {$EXTERNALSYM LPDNNADDR}
  112. TDNNAddr = DNNADDR;
  113. PDNNAddr = LPDNNADDR;
  114. //
  115. // DECnet socket address structure
  116. //
  117. sockaddr_dn = packed record
  118. sdn_family: Word; // AF_DECnet
  119. sdn_flags: Byte; // flags
  120. sdn_objnum: Byte; // object number
  121. sdn_objnamel: Word; // size of object name
  122. sdn_objname: array [0..DN_MAXOBJL - 1] of Char; // object name
  123. sdn_add: dn_naddr; // node address
  124. end;
  125. {$EXTERNALSYM sockaddr_dn}
  126. SOCKADDRDN = sockaddr_dn;
  127. {$EXTERNALSYM SOCKADDRDN}
  128. LPSOCKADDRDN = ^SOCKADDRDN;
  129. {$EXTERNALSYM LPSOCKADDRDN}
  130. TSockAddrDN = SOCKADDRDN;
  131. PSockAddrDN = LPSOCKADDRDN;
  132. // Common DECnet object numbers (used in sockaddr_dn)
  133. const
  134. DNOBJECT_FAL = 17; // = file access listener;
  135. {$EXTERNALSYM DNOBJECT_FAL}
  136. DNOBJECT_NICE = 19; // = network management;
  137. {$EXTERNALSYM DNOBJECT_NICE}
  138. DNOBJECT_DTERM = 23; // = remote terminals;
  139. {$EXTERNALSYM DNOBJECT_DTERM}
  140. DNOBJECT_MIRROR = 25; // = loopback mirror;
  141. {$EXTERNALSYM DNOBJECT_MIRROR}
  142. DNOBJECT_EVR = 26; // = event receiver;
  143. {$EXTERNALSYM DNOBJECT_EVR}
  144. DNOBJECT_MAIL11 = 27; // = Mail-11 service;
  145. {$EXTERNALSYM DNOBJECT_MAIL11}
  146. DNOBJECT_PHONE = 29; // = phone utility;
  147. {$EXTERNALSYM DNOBJECT_PHONE}
  148. DNOBJECT_CTERM = 42; // = command terminals;
  149. {$EXTERNALSYM DNOBJECT_CTERM}
  150. DNOBJECT_DTR = 63; // = data test receiver;
  151. {$EXTERNALSYM DNOBJECT_DTR}
  152. //
  153. // DECnet node structure
  154. //
  155. type
  156. nodeent_f = packed record
  157. n_name: PChar; // name of node
  158. n_addrtype: Word; // node address type
  159. n_length: Word; // address length
  160. n_addr: PChar; // address
  161. n_params: PChar; // node parameters
  162. n_reserved: array [0..15] of Byte; // Reserved
  163. end;
  164. {$EXTERNALSYM nodeent_f}
  165. NODEENTF = nodeent_f;
  166. {$EXTERNALSYM NODEENTF}
  167. LPNODEENTF = ^NODEENTF;
  168. {$EXTERNALSYM LPNODEENTF}
  169. TNodeEntF = NODEENTF;
  170. PNodeEntF = LPNODEENTF;
  171. //
  172. // DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
  173. //
  174. optdata_dn = packed record
  175. opt_status: Word; // extended status return
  176. opt_optl: Word; // user data length
  177. opt_data: array [0..DN_MAXOPTL - 1] of Byte; // user data
  178. end;
  179. {$EXTERNALSYM optdata_dn}
  180. OPTDATADN = optdata_dn;
  181. {$EXTERNALSYM OPTDATADN}
  182. LPOPTDATADN = ^OPTDATADN;
  183. {$EXTERNALSYM LPOPTDATADN}
  184. TOptDataDN = OPTDATADN;
  185. POptDataDN = LPOPTDATADN;
  186. //
  187. // DECnet set/get DSO_CONACCESS access (control data) structure
  188. //
  189. accessdata_dn = packed record
  190. acc_accl: Word; // account string length
  191. acc_acc: array [0..DN_MAXACCL] of Byte; // account string
  192. acc_passl: Word; // password string length
  193. acc_pass: array [0..DN_MAXACCL] of Byte; // password string
  194. acc_userl: Word; // user string length
  195. acc_user: array [0..DN_MAXACCL] of Byte; // user string
  196. end;
  197. {$EXTERNALSYM accessdata_dn}
  198. ACCESSDATADN = accessdata_dn;
  199. {$EXTERNALSYM ACCESSDATADN}
  200. LPACCESSDATADN = ^ACCESSDATADN;
  201. {$EXTERNALSYM LPACCESSDATADN}
  202. TAccessDataDN = ACCESSDATADN;
  203. PAccessDataDN = LPACCESSDATADN;
  204. //
  205. // DECnet call data structure (concatenated access and optional data)
  206. //
  207. calldata_dn = packed record
  208. optdata_dn: optdata_dn;
  209. accessdata_dn: accessdata_dn;
  210. end;
  211. {$EXTERNALSYM calldata_dn}
  212. CALLDATADN = calldata_dn;
  213. {$EXTERNALSYM CALLDATADN}
  214. LPCALLDATADN = ^CALLDATADN;
  215. {$EXTERNALSYM LPCALLDATADN}
  216. TCallDataDN = CALLDATADN;
  217. PCallDataDN = LPCALLDATADN;
  218. //
  219. // DECnet incoming access control structure
  220. //
  221. dnet_accent = packed record
  222. dac_status: Byte; // Reserved
  223. dac_type: Byte; // DN_NONE, etc.
  224. dac_username: array [0..DN_MAXACCL] of Char;
  225. dac_password: array [0..DN_MAXACCL] of Char;
  226. end;
  227. {$EXTERNALSYM dnet_accent}
  228. DNETACCENT = dnet_accent;
  229. {$EXTERNALSYM DNETACCENT}
  230. LPDNETACCENT = ^DNETACCENT;
  231. {$EXTERNALSYM LPDNETACCENT}
  232. TDNetAccent = DNETACCENT;
  233. PDNetAccent = LPDNETACCENT;
  234. const
  235. DN_NONE = $00;
  236. {$EXTERNALSYM DN_NONE}
  237. DN_RO = $01;
  238. {$EXTERNALSYM DN_RO}
  239. DN_WO = $02;
  240. {$EXTERNALSYM DN_WO}
  241. DN_RW = $03;
  242. {$EXTERNALSYM DN_RW}
  243. // DECnet logical link information structure
  244. type
  245. linkinfo_dn = packed record
  246. idn_segsize: Word; // segment size for link
  247. idn_linkstate: Byte; // logical link state
  248. end;
  249. {$EXTERNALSYM linkinfo_dn}
  250. LINKINFODN = linkinfo_dn;
  251. {$EXTERNALSYM LINKINFODN}
  252. LPLINKINFODN = ^LINKINFODN;
  253. {$EXTERNALSYM LPLINKINFODN}
  254. TLinkInfoDN = LINKINFODN;
  255. PLinkInfoDN = LPLINKINFODN;
  256. const
  257. SO_LINKINFO = 7; // set/get link information
  258. {$EXTERNALSYM SO_LINKINFO}
  259. LL_INACTIVE = 0; // logical link inactive
  260. {$EXTERNALSYM LL_INACTIVE}
  261. LL_CONNECTING = 1; // logical link connecting
  262. {$EXTERNALSYM LL_CONNECTING}
  263. LL_RUNNING = 2; // logical link running
  264. {$EXTERNALSYM LL_RUNNING}
  265. LL_DISCONNECTING = 3; // logical link disconnecting
  266. {$EXTERNALSYM LL_DISCONNECTING}
  267. //*********************************************************************
  268. // DECnet WinSock 2 extended function prototypes
  269. //*********************************************************************
  270. (*
  271. MVB TODO: Extension functions must be dynamically queried for using WSAIoctl.
  272. function dnet_addr(cp: PChar): PDNAddr; stdcall;
  273. {$EXTERNALSYM dnet_addr}
  274. function dnet_eof(s: SOCKET): Integer; stdcall;
  275. {$EXTERNALSYM dnet_eof}
  276. function dnet_getacc(const nacc: TDNetAccent): PDNetAccent; stdcall;
  277. {$EXTERNALSYM dnet_getacc}
  278. function dnet_getalias(P: PChar): PChar; stdcall;
  279. {$EXTERNALSYM dnet_getalias}
  280. function dnet_htoa(const add: TDNNAddr): PChar; stdcall;
  281. {$EXTERNALSYM dnet_htoa}
  282. function dnet_ntoa(const add: TDNNAddr): PChar; stdcall;
  283. {$EXTERNALSYM dnet_ntoa}
  284. function getnodeadd: PDNNAddr; stdcall;
  285. {$EXTERNALSYM getnodeadd}
  286. function getnodebyaddr(addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  287. {$EXTERNALSYM getnodebyaddr}
  288. function getnodebyname(name: PChar): PNodeEntF; stdcall;
  289. {$EXTERNALSYM getnodebyname}
  290. function getnodename: PChar; stdcall;
  291. {$EXTERNALSYM getnodename}
  292. *)
  293. // typedefs for C++ compatability
  294. type
  295. LPDNETADDR = function(cp: PChar): PDNNAddr; stdcall;
  296. {$EXTERNALSYM LPDNETADDR}
  297. TDNetAddr = LPDNETADDR;
  298. LPDNETEOF = function(s: TSocket): Integer; stdcall;
  299. {$EXTERNALSYM LPDNETEOF}
  300. TDNetEOF = LPDNETEOF;
  301. LPDNETGETACC = function(const nacc: TDNetAccent): PDNetAccent; stdcall;
  302. {$EXTERNALSYM LPDNETGETACC}
  303. TDNetGetAcc = LPDNETGETACC;
  304. LPDNETGETALIAS = function(P: PChar): PChar; stdcall;
  305. {$EXTERNALSYM LPDNETGETALIAS}
  306. TDNetGetAlias = LPDNETGETALIAS;
  307. LPDNETHTOA = function(const add: TDNNAddr): PChar; stdcall;
  308. {$EXTERNALSYM LPDNETHTOA}
  309. TDNetHToA = LPDNETHTOA;
  310. LPDNETNTOA = function(const add: TDNNAddr): PChar; stdcall;
  311. {$EXTERNALSYM LPDNETNTOA}
  312. TDNetNToA = LPDNETNTOA;
  313. LPGETNODEADD = function: PDNNAddr; stdcall;
  314. {$EXTERNALSYM LPGETNODEADD}
  315. TGetNodeAdd = LPGETNODEADD;
  316. LPGETNODEBYADDR = function(addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  317. {$EXTERNALSYM LPGETNODEBYADDR}
  318. TGetNodeByAddr = LPGETNODEBYADDR;
  319. LPGETNODEBYNAME = function(name: PChar): PNodeEntF; stdcall;
  320. {$EXTERNALSYM LPGETNODEBYNAME}
  321. TGetNodeByName = LPGETNODEBYNAME;
  322. LPGETNODENAME = function: PChar; stdcall;
  323. {$EXTERNALSYM LPGETNODENAME}
  324. TGetNodeName = LPGETNODENAME;
  325. implementation
  326. end.