jwaws2dnet.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  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. // $Id: JwaWS2dnet.pas,v 1.4 2004/12/08 08:18:40 marquardt Exp $
  43. unit JwaWS2dnet;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "ws2dnet.h"'}
  47. {$HPPEMIT ''}
  48. {$I jediapilib.inc}
  49. interface
  50. uses
  51. JwaWinSock2;
  52. //************************************************************************
  53. // Winsock V2.0 DECnet definitions File: WS2DNET.H
  54. //************************************************************************
  55. //
  56. // DECnet WinSock Definitions
  57. //
  58. const
  59. DNPROTO_NSP = 1; // DECnet NSP transport protocol
  60. {$EXTERNALSYM DNPROTO_NSP}
  61. DNPROTO_RAW = 255;
  62. {$EXTERNALSYM DNPROTO_RAW}
  63. DN_MAXADDL = 20; // maximum DECnet address length
  64. {$EXTERNALSYM DN_MAXADDL}
  65. DN_ADDL = 2; // DECnet NSP address length
  66. {$EXTERNALSYM DN_ADDL}
  67. DN_MAXOPTL = 16; // Maximum DECnet optional data length
  68. {$EXTERNALSYM DN_MAXOPTL}
  69. DN_MAXOBJL = 16; // Maximum DECnet object name length
  70. {$EXTERNALSYM DN_MAXOBJL}
  71. DN_MAXACCL = 39; // Maximum DECnet access string length
  72. {$EXTERNALSYM DN_MAXACCL}
  73. DN_MAXALIASL = 128; // Maximum DECnet alias string length
  74. {$EXTERNALSYM DN_MAXALIASL}
  75. DN_MAXNODEL = 7; // Maximum DECnet Phase IV node string length
  76. {$EXTERNALSYM DN_MAXNODEL}
  77. // DECnet Extension Function Identifiers
  78. WS2API_DECNET_dnet_addr = 1;
  79. {$EXTERNALSYM WS2API_DECNET_dnet_addr}
  80. WS2API_DECNET_dnet_eof = 2;
  81. {$EXTERNALSYM WS2API_DECNET_dnet_eof}
  82. WS2API_DECNET_dnet_getacc = 3;
  83. {$EXTERNALSYM WS2API_DECNET_dnet_getacc}
  84. WS2API_DECNET_dnet_getalias = 4;
  85. {$EXTERNALSYM WS2API_DECNET_dnet_getalias}
  86. WS2API_DECNET_dnet_htoa = 5;
  87. {$EXTERNALSYM WS2API_DECNET_dnet_htoa}
  88. WS2API_DECNET_dnet_ntoa = 6;
  89. {$EXTERNALSYM WS2API_DECNET_dnet_ntoa}
  90. WS2API_DECNET_getnodeadd = 7;
  91. {$EXTERNALSYM WS2API_DECNET_getnodeadd}
  92. WS2API_DECNET_getnodebyaddr = 8;
  93. {$EXTERNALSYM WS2API_DECNET_getnodebyaddr}
  94. WS2API_DECNET_getnodebyname = 9;
  95. {$EXTERNALSYM WS2API_DECNET_getnodebyname}
  96. WS2API_DECNET_getnodename = 10;
  97. {$EXTERNALSYM WS2API_DECNET_getnodename}
  98. WS2API_DECNET_MAX = 10;
  99. {$EXTERNALSYM WS2API_DECNET_MAX}
  100. //
  101. // DECnet address structure
  102. //
  103. type
  104. dn_naddr = packed record
  105. a_len: Word; // length of address
  106. a_addr: array [0..DN_MAXADDL - 1] of Byte; // address as bytes
  107. end;
  108. {$EXTERNALSYM dn_naddr}
  109. DNNADDR = dn_naddr;
  110. {$EXTERNALSYM DNNADDR}
  111. LPDNNADDR = ^DNNADDR;
  112. {$EXTERNALSYM LPDNNADDR}
  113. TDNNAddr = DNNADDR;
  114. PDNNAddr = LPDNNADDR;
  115. //
  116. // DECnet socket address structure
  117. //
  118. sockaddr_dn = packed record
  119. sdn_family: Word; // AF_DECnet
  120. sdn_flags: Byte; // flags
  121. sdn_objnum: Byte; // object number
  122. sdn_objnamel: Word; // size of object name
  123. sdn_objname: array [0..DN_MAXOBJL - 1] of Char; // object name
  124. sdn_add: dn_naddr; // node address
  125. end;
  126. {$EXTERNALSYM sockaddr_dn}
  127. SOCKADDRDN = sockaddr_dn;
  128. {$EXTERNALSYM SOCKADDRDN}
  129. LPSOCKADDRDN = ^SOCKADDRDN;
  130. {$EXTERNALSYM LPSOCKADDRDN}
  131. TSockAddrDN = SOCKADDRDN;
  132. PSockAddrDN = LPSOCKADDRDN;
  133. // Common DECnet object numbers (used in sockaddr_dn)
  134. const
  135. DNOBJECT_FAL = 17; // = file access listener;
  136. {$EXTERNALSYM DNOBJECT_FAL}
  137. DNOBJECT_NICE = 19; // = network management;
  138. {$EXTERNALSYM DNOBJECT_NICE}
  139. DNOBJECT_DTERM = 23; // = remote terminals;
  140. {$EXTERNALSYM DNOBJECT_DTERM}
  141. DNOBJECT_MIRROR = 25; // = loopback mirror;
  142. {$EXTERNALSYM DNOBJECT_MIRROR}
  143. DNOBJECT_EVR = 26; // = event receiver;
  144. {$EXTERNALSYM DNOBJECT_EVR}
  145. DNOBJECT_MAIL11 = 27; // = Mail-11 service;
  146. {$EXTERNALSYM DNOBJECT_MAIL11}
  147. DNOBJECT_PHONE = 29; // = phone utility;
  148. {$EXTERNALSYM DNOBJECT_PHONE}
  149. DNOBJECT_CTERM = 42; // = command terminals;
  150. {$EXTERNALSYM DNOBJECT_CTERM}
  151. DNOBJECT_DTR = 63; // = data test receiver;
  152. {$EXTERNALSYM DNOBJECT_DTR}
  153. //
  154. // DECnet node structure
  155. //
  156. type
  157. nodeent_f = packed record
  158. n_name: PChar; // name of node
  159. n_addrtype: Word; // node address type
  160. n_length: Word; // address length
  161. n_addr: PChar; // address
  162. n_params: PChar; // node parameters
  163. n_reserved: array [0..15] of Byte; // Reserved
  164. end;
  165. {$EXTERNALSYM nodeent_f}
  166. NODEENTF = nodeent_f;
  167. {$EXTERNALSYM NODEENTF}
  168. LPNODEENTF = ^NODEENTF;
  169. {$EXTERNALSYM LPNODEENTF}
  170. TNodeEntF = NODEENTF;
  171. PNodeEntF = LPNODEENTF;
  172. //
  173. // DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
  174. //
  175. optdata_dn = packed record
  176. opt_status: Word; // extended status return
  177. opt_optl: Word; // user data length
  178. opt_data: array [0..DN_MAXOPTL - 1] of Byte; // user data
  179. end;
  180. {$EXTERNALSYM optdata_dn}
  181. OPTDATADN = optdata_dn;
  182. {$EXTERNALSYM OPTDATADN}
  183. LPOPTDATADN = ^OPTDATADN;
  184. {$EXTERNALSYM LPOPTDATADN}
  185. TOptDataDN = OPTDATADN;
  186. POptDataDN = LPOPTDATADN;
  187. //
  188. // DECnet set/get DSO_CONACCESS access (control data) structure
  189. //
  190. accessdata_dn = packed record
  191. acc_accl: Word; // account string length
  192. acc_acc: array [0..DN_MAXACCL] of Byte; // account string
  193. acc_passl: Word; // password string length
  194. acc_pass: array [0..DN_MAXACCL] of Byte; // password string
  195. acc_userl: Word; // user string length
  196. acc_user: array [0..DN_MAXACCL] of Byte; // user string
  197. end;
  198. {$EXTERNALSYM accessdata_dn}
  199. ACCESSDATADN = accessdata_dn;
  200. {$EXTERNALSYM ACCESSDATADN}
  201. LPACCESSDATADN = ^ACCESSDATADN;
  202. {$EXTERNALSYM LPACCESSDATADN}
  203. TAccessDataDN = ACCESSDATADN;
  204. PAccessDataDN = LPACCESSDATADN;
  205. //
  206. // DECnet call data structure (concatenated access and optional data)
  207. //
  208. calldata_dn = packed record
  209. optdata_dn: optdata_dn;
  210. accessdata_dn: accessdata_dn;
  211. end;
  212. {$EXTERNALSYM calldata_dn}
  213. CALLDATADN = calldata_dn;
  214. {$EXTERNALSYM CALLDATADN}
  215. LPCALLDATADN = ^CALLDATADN;
  216. {$EXTERNALSYM LPCALLDATADN}
  217. TCallDataDN = CALLDATADN;
  218. PCallDataDN = LPCALLDATADN;
  219. //
  220. // DECnet incoming access control structure
  221. //
  222. dnet_accent = packed record
  223. dac_status: Byte; // Reserved
  224. dac_type: Byte; // DN_NONE, etc.
  225. dac_username: array [0..DN_MAXACCL] of Char;
  226. dac_password: array [0..DN_MAXACCL] of Char;
  227. end;
  228. {$EXTERNALSYM dnet_accent}
  229. DNETACCENT = dnet_accent;
  230. {$EXTERNALSYM DNETACCENT}
  231. LPDNETACCENT = ^DNETACCENT;
  232. {$EXTERNALSYM LPDNETACCENT}
  233. TDNetAccent = DNETACCENT;
  234. PDNetAccent = LPDNETACCENT;
  235. const
  236. DN_NONE = $00;
  237. {$EXTERNALSYM DN_NONE}
  238. DN_RO = $01;
  239. {$EXTERNALSYM DN_RO}
  240. DN_WO = $02;
  241. {$EXTERNALSYM DN_WO}
  242. DN_RW = $03;
  243. {$EXTERNALSYM DN_RW}
  244. // DECnet logical link information structure
  245. type
  246. linkinfo_dn = packed record
  247. idn_segsize: Word; // segment size for link
  248. idn_linkstate: Byte; // logical link state
  249. end;
  250. {$EXTERNALSYM linkinfo_dn}
  251. LINKINFODN = linkinfo_dn;
  252. {$EXTERNALSYM LINKINFODN}
  253. LPLINKINFODN = ^LINKINFODN;
  254. {$EXTERNALSYM LPLINKINFODN}
  255. TLinkInfoDN = LINKINFODN;
  256. PLinkInfoDN = LPLINKINFODN;
  257. const
  258. SO_LINKINFO = 7; // set/get link information
  259. {$EXTERNALSYM SO_LINKINFO}
  260. LL_INACTIVE = 0; // logical link inactive
  261. {$EXTERNALSYM LL_INACTIVE}
  262. LL_CONNECTING = 1; // logical link connecting
  263. {$EXTERNALSYM LL_CONNECTING}
  264. LL_RUNNING = 2; // logical link running
  265. {$EXTERNALSYM LL_RUNNING}
  266. LL_DISCONNECTING = 3; // logical link disconnecting
  267. {$EXTERNALSYM LL_DISCONNECTING}
  268. //*********************************************************************
  269. // DECnet WinSock 2 extended function prototypes
  270. //*********************************************************************
  271. (*
  272. MVB TODO: Extension functions must be dynamically queried for using WSAIoctl.
  273. function dnet_addr(cp: PChar): PDNAddr; stdcall;
  274. {$EXTERNALSYM dnet_addr}
  275. function dnet_eof(s: SOCKET): Integer; stdcall;
  276. {$EXTERNALSYM dnet_eof}
  277. function dnet_getacc(const nacc: TDNetAccent): PDNetAccent; stdcall;
  278. {$EXTERNALSYM dnet_getacc}
  279. function dnet_getalias(P: PChar): PChar; stdcall;
  280. {$EXTERNALSYM dnet_getalias}
  281. function dnet_htoa(const add: TDNNAddr): PChar; stdcall;
  282. {$EXTERNALSYM dnet_htoa}
  283. function dnet_ntoa(const add: TDNNAddr): PChar; stdcall;
  284. {$EXTERNALSYM dnet_ntoa}
  285. function getnodeadd: PDNNAddr; stdcall;
  286. {$EXTERNALSYM getnodeadd}
  287. function getnodebyaddr(addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  288. {$EXTERNALSYM getnodebyaddr}
  289. function getnodebyname(name: PChar): PNodeEntF; stdcall;
  290. {$EXTERNALSYM getnodebyname}
  291. function getnodename: PChar; stdcall;
  292. {$EXTERNALSYM getnodename}
  293. *)
  294. // typedefs for C++ compatability
  295. type
  296. LPDNETADDR = function(cp: PChar): PDNNAddr; stdcall;
  297. {$EXTERNALSYM LPDNETADDR}
  298. TDNetAddr = LPDNETADDR;
  299. LPDNETEOF = function(s: TSocket): Integer; stdcall;
  300. {$EXTERNALSYM LPDNETEOF}
  301. TDNetEOF = LPDNETEOF;
  302. LPDNETGETACC = function(const nacc: TDNetAccent): PDNetAccent; stdcall;
  303. {$EXTERNALSYM LPDNETGETACC}
  304. TDNetGetAcc = LPDNETGETACC;
  305. LPDNETGETALIAS = function(P: PChar): PChar; stdcall;
  306. {$EXTERNALSYM LPDNETGETALIAS}
  307. TDNetGetAlias = LPDNETGETALIAS;
  308. LPDNETHTOA = function(const add: TDNNAddr): PChar; stdcall;
  309. {$EXTERNALSYM LPDNETHTOA}
  310. TDNetHToA = LPDNETHTOA;
  311. LPDNETNTOA = function(const add: TDNNAddr): PChar; stdcall;
  312. {$EXTERNALSYM LPDNETNTOA}
  313. TDNetNToA = LPDNETNTOA;
  314. LPGETNODEADD = function: PDNNAddr; stdcall;
  315. {$EXTERNALSYM LPGETNODEADD}
  316. TGetNodeAdd = LPGETNODEADD;
  317. LPGETNODEBYADDR = function(addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  318. {$EXTERNALSYM LPGETNODEBYADDR}
  319. TGetNodeByAddr = LPGETNODEBYADDR;
  320. LPGETNODEBYNAME = function(name: PChar): PNodeEntF; stdcall;
  321. {$EXTERNALSYM LPGETNODEBYNAME}
  322. TGetNodeByName = LPGETNODEBYNAME;
  323. LPGETNODENAME = function: PChar; stdcall;
  324. {$EXTERNALSYM LPGETNODENAME}
  325. TGetNodeName = LPGETNODENAME;
  326. implementation
  327. end.