WS2dnet.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //************************************************************************
  2. //  Winsock V2.0  DECnet definitions File: WS2DNET.H 
  3. //************************************************************************
  4. #ifndef WS2DNET_H
  5. #define WS2DNET_H
  6. #include <winsock2.h>
  7. #pragma pack(push,ws2dnet,1)
  8.    
  9. //
  10. //  DECnet WinSock Definitions
  11. //
  12. #define DNPROTO_NSP      1  // DECnet NSP transport protocol
  13. #define DNPROTO_RAW    255 
  14. #define DN_MAXADDL      20  // maximum DECnet address length
  15. #define DN_ADDL          2  // DECnet NSP address length
  16. #define DN_MAXOPTL      16  // Maximum DECnet optional data length
  17. #define DN_MAXOBJL      16  // Maximum DECnet object name length
  18. #define DN_MAXACCL      39  // Maximum DECnet access string length
  19. #define DN_MAXALIASL   128  // Maximum DECnet alias string length
  20. #define DN_MAXNODEL      7  // Maximum DECnet Phase IV node string length
  21. // DECnet Extension Function Identifiers
  22. #define WS2API_DECNET_dnet_addr     1
  23. #define WS2API_DECNET_dnet_eof      2
  24. #define WS2API_DECNET_dnet_getacc   3
  25. #define WS2API_DECNET_dnet_getalias 4
  26. #define WS2API_DECNET_dnet_htoa     5
  27. #define WS2API_DECNET_dnet_ntoa     6
  28. #define WS2API_DECNET_getnodeadd    7
  29. #define WS2API_DECNET_getnodebyaddr 8
  30. #define WS2API_DECNET_getnodebyname 9
  31. #define WS2API_DECNET_getnodename   10
  32. #define WS2API_DECNET_MAX           10
  33. //
  34. //  DECnet address structure
  35. //  
  36. typedef struct dn_naddr {
  37. unsigned short a_len;         // length of address  
  38. unsigned char   a_addr[DN_MAXADDL]; // address as bytes  
  39. } DNNADDR, FAR *LPDNNADDR;
  40. //
  41. //  DECnet socket address structure
  42. //  
  43. typedef struct sockaddr_dn {
  44. unsigned short sdn_family;     // AF_DECnet  
  45. unsigned char sdn_flags;     // flags  
  46. unsigned char sdn_objnum;     // object number  
  47. unsigned short sdn_objnamel; // size of object name  
  48. char sdn_objname[DN_MAXOBJL]; // object name  
  49. struct dn_naddr  sdn_add;     // node address  
  50. } SOCKADDRDN, FAR *LPSOCKADDRDN;
  51. #define sdn_nodeaddrl sdn_add.a_len // node address length  
  52. #define sdn_nodeaddr sdn_add.a_addr  // node address  
  53. //  Common DECnet object numbers (used in sockaddr_dn)
  54. #define DNOBJECT_FAL 17 // file access listener  
  55. #define DNOBJECT_NICE 19 // network management  
  56. #define DNOBJECT_DTERM 23 // remote terminals  
  57. #define DNOBJECT_MIRROR 25 // loopback mirror  
  58. #define DNOBJECT_EVR 26 // event receiver  
  59. #define DNOBJECT_MAIL11 27 // Mail-11 service  
  60. #define DNOBJECT_PHONE 29 // phone utility  
  61. #define DNOBJECT_CTERM 42 // command terminals  
  62. #define DNOBJECT_DTR 63 // data test receiver  
  63. //
  64. //  DECnet node structure
  65. //
  66. typedef struct nodeent_f {
  67. char  FAR * n_name;   // name of node  
  68. unsigned short n_addrtype; // node address type  
  69. unsigned short n_length; // address length
  70. unsigned char FAR * n_addr; // address  
  71. unsigned char FAR * n_params; // node parameters  
  72. unsigned char   n_reserved[16]; // Reserved
  73. } NODEENTF, FAR *LPNODEENTF;                                          
  74. //
  75. //  DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
  76. //  
  77. typedef struct optdata_dn {
  78. unsigned short opt_status;           // extended status return  
  79. unsigned short opt_optl;           // user data length 
  80. unsigned char   opt_data[DN_MAXOPTL]; // user data  
  81. } OPTDATADN, FAR *LPOPTDATADN;
  82. //
  83. //  DECnet set/get DSO_CONACCESS access (control data) structure
  84. //  
  85. typedef struct accessdata_dn {
  86. unsigned short acc_accl;             // account string length 
  87. unsigned char acc_acc[DN_MAXACCL+1]; // account string  
  88. unsigned short acc_passl;             // password string length  
  89. unsigned char acc_pass[DN_MAXACCL+1]; // password string  
  90. unsigned short acc_userl;             // user string length 
  91. unsigned char acc_user[DN_MAXACCL+1]; // user string  
  92. } ACCESSDATADN, FAR *LPACCESSDATADN;
  93. //
  94. //  DECnet call data structure (concatenated access and optional data)
  95. //
  96. typedef struct calldata_dn { 
  97.     struct optdata_dn       optdata_dn;
  98.     struct accessdata_dn    accessdata_dn;
  99. } CALLDATADN, FAR *LPCALLDATADN;   
  100.     
  101. //
  102. //  DECnet incoming access control structure
  103. //
  104. typedef struct dnet_accent {
  105.     unsigned char dac_status;      // Reserved 
  106.     unsigned char dac_type;        // DN_NONE, etc.      
  107.     char dac_username[DN_MAXACCL+1];  
  108.     char dac_password[DN_MAXACCL+1]; 
  109. } DNETACCENT, FAR *LPDNETACCENT;
  110. #define DN_NONE          0x00   
  111. #define DN_RO            0x01
  112. #define DN_WO            0x02
  113. #define DN_RW            0x03
  114. // DECnet logical link information structure
  115. typedef struct linkinfo_dn {
  116. unsigned short idn_segsize; /* segment size for link */
  117. unsigned char idn_linkstate; /* logical link state */
  118. }LINKINFODN, FAR *LPLINKINFODN;
  119. #define SO_LINKINFO         7 /* set/get link information */
  120. #define LL_INACTIVE     0 /* logical link inactive */
  121. #define LL_CONNECTING     1 /* logical link connecting */
  122. #define LL_RUNNING     2 /* logical link running */
  123. #define LL_DISCONNECTING 3 /* logical link disconnecting */
  124. #pragma pack(pop,ws2dnet)
  125. //*********************************************************************
  126. //  DECnet WinSock 2 extended function prototypes
  127. //*********************************************************************  
  128. struct dn_naddr FAR *WSAAPI dnet_addr(const char FAR *);
  129. int WSAAPI dnet_eof(SOCKET);
  130. struct dnet_accent FAR *WSAAPI dnet_getacc(const struct dnet_accent FAR *);
  131. char FAR *WSAAPI dnet_getalias(const char FAR *);
  132. char FAR *WSAAPI dnet_htoa(const struct dn_naddr FAR *);
  133. char FAR *WSAAPI dnet_ntoa(const struct dn_naddr FAR *);
  134. struct dn_naddr FAR *WSAAPI getnodeadd(void);
  135. struct nodeent_f FAR *WSAAPI getnodebyaddr(const unsigned char FAR *addr, int, int);
  136. struct nodeent_f FAR *WSAAPI getnodebyname(const char FAR *);
  137. char FAR *WSAAPI getnodename(void);
  138. // typedefs for C++ compatability
  139. typedef struct dn_naddr FAR * (WSAAPI * LPDNETADDR)(const char FAR *);
  140. typedef int (WSAAPI * LPDNETEOF)(SOCKET);
  141. typedef struct dnet_accent FAR * (WSAAPI * LPDNETGETACC)(const struct 
  142. dnet_accent FAR *);
  143. typedef char FAR * (WSAAPI * LPDNETGETALIAS)(const char FAR *);
  144. typedef char FAR * (WSAAPI * LPDNETHTOA)(const struct dn_naddr FAR *);
  145. typedef char FAR * (WSAAPI * LPDNETNTOA)(const struct dn_naddr FAR *);
  146. typedef struct dn_naddr FAR * (WSAAPI * LPGETNODEADD)(void);
  147. typedef struct nodeent_f FAR * (WSAAPI * LPGETNODEBYADDR)(const unsigned 
  148. char FAR *addr, int, int);
  149. typedef struct nodeent_f FAR * (WSAAPI * LPGETNODEBYNAME)(const char FAR 
  150. *);
  151. typedef char FAR * (WSAAPI * LPGETNODENAME)(void);
  152. #endif // WS2DNET_H