home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / atalkwsh.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  5KB  |  198 lines

  1. /*++
  2.  
  3. Copyright 1992 - 1998 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     wshatalk.h
  8.  
  9. Abstract:
  10.  
  11.     This is the header file for application using Windows Sockets for
  12.     Appletalk.
  13.  
  14. Revision History:
  15.     10 Jul 1992     Initial Version
  16.  
  17. --*/
  18.  
  19. #ifndef    _ATALKWSH_
  20. #define    _ATALKWSH_
  21.  
  22. //
  23. //  All protocol types should be specified in the Decimal base
  24. //
  25.  
  26. #define DECIMAL_BASE                10
  27.  
  28. //
  29. //  Protocol number 0 is invalid in the Appletalk case
  30. //
  31.  
  32. #define    ATPROTO_BASE                (1000 * AF_APPLETALK)
  33. #define    SOL_APPLETALK                (ATPROTO_BASE)
  34.  
  35. #define DDPPROTO_RTMP               (ATPROTO_BASE + 1)
  36. #define DDPPROTO_NBP                (ATPROTO_BASE + 2)
  37. #define DDPPROTO_ATP                (ATPROTO_BASE + 3)
  38. #define DDPPROTO_AEP                (ATPROTO_BASE + 4)
  39. #define DDPPROTO_RTMPRQ             (ATPROTO_BASE + 5)
  40. #define DDPPROTO_ZIP                (ATPROTO_BASE + 6)
  41. #define DDPPROTO_ADSP               (ATPROTO_BASE + 7)
  42.  
  43. #define DDPPROTO_MAX                (ATPROTO_BASE + 255)
  44.  
  45. //
  46. //  Define the higher layer appletalk protocol types
  47. //
  48.  
  49. #define ATPROTO_ADSP                (DDPPROTO_MAX + 1)
  50. #define ATPROTO_ATP                 (DDPPROTO_MAX + 2)
  51. #define ATPROTO_ASP                 (DDPPROTO_MAX + 3)
  52. #define ATPROTO_PAP                 (DDPPROTO_MAX + 4)
  53.  
  54. #define SO_REGISTER_NAME             0xA000
  55. #define SO_DEREGISTER_NAME           0xA001
  56. #define SO_REMOVE_NAME                SO_DEREGISTER_NAME
  57. #define SO_LOOKUP_NAME               0xA002
  58. #define SO_CONFIRM_NAME               0xA003
  59. #define    SO_LOOKUP_MYZONE            0xA004
  60. #define    SO_GETMYZONE                SO_LOOKUP_MYZONE
  61. #define SO_LOOKUP_ZONES              0xA005
  62. #define SO_GETZONELIST                SO_LOOKUP_ZONES
  63. #define    SO_LOOKUP_ZONES_ON_ADAPTER    0xA006
  64. #define    SO_GETLOCALZONES            SO_LOOKUP_ZONES_ON_ADAPTER
  65. #define    SO_LOOKUP_NETDEF_ON_ADAPTER    0xA007
  66. #define    SO_GETNETINFO                SO_LOOKUP_NETDEF_ON_ADAPTER
  67.  
  68. //
  69. //  PAP-specific options
  70. //
  71.  
  72. #define SO_PAP_SET_SERVER_STATUS    0xA007
  73. #define SO_PAP_GET_SERVER_STATUS    0xA008
  74. #define    SO_PAP_PRIME_READ            0xA009
  75.  
  76.  
  77. #define ATADDR_ANY                     0            // Dynamic socket (=0)
  78. #define ATADDR_BROADCAST               0xFF         // Broadcast node id (=ff)
  79.  
  80. //
  81. //    Define flags/error codes peculiar to Appletalk
  82. //
  83.  
  84. #define    WSAEMSGPARTIAL                (WSABASEERR+100)
  85.  
  86.  
  87. //    Maximum pap status size
  88. #define    MAX_PAP_STATUS_SIZE            255
  89. #define    MIN_PAP_READ_BUF_SIZE        4096
  90.  
  91. //    These are the unused 4 bytes returned in the PAP status packet. If ever
  92. //    they are to be interpreted, they will be available.
  93. #define    PAP_UNUSED_STATUS_BYTES        4
  94.  
  95.  
  96. //
  97. //  SOCKADDR_AT structure
  98. //
  99.  
  100. typedef struct sockaddr_at
  101. {
  102.     USHORT    sat_family;
  103.     USHORT    sat_net;
  104.     UCHAR     sat_node;
  105.     UCHAR     sat_socket;
  106. } SOCKADDR_AT, *PSOCKADDR_AT;
  107.  
  108.  
  109. //
  110. //    ***WARNING***
  111. //    This is defined to be the same as the ATALK ADDRESS defined in atalktdi.h
  112. //    Change this if the other changes.
  113. //
  114.  
  115. typedef    union
  116. {
  117.     struct
  118.     {
  119.         USHORT        Network;
  120.         UCHAR        Node;
  121.         UCHAR       Socket;
  122.     };
  123.     ULONG            Address;
  124. } WSH_ATALK_ADDRESS, *PWSH_ATALK_ADDRESS;
  125.  
  126. //
  127. //  Typedefs for the various options
  128. //
  129.  
  130. //
  131. //  ***WARNING***:
  132. //  This should be exactly the same as NBP_NAME defined in atalktdi.h
  133. //
  134.  
  135. #define MAX_ENTITY  32
  136. typedef struct
  137. {
  138.     CHAR    ObjectNameLen;
  139.     CHAR    ObjectName[MAX_ENTITY];
  140.     CHAR    TypeNameLen;
  141.     CHAR    TypeName[MAX_ENTITY];
  142.     CHAR    ZoneNameLen;
  143.     CHAR    ZoneName[MAX_ENTITY];
  144. } WSH_NBP_NAME, *PWSH_NBP_NAME;
  145.  
  146. typedef struct
  147. {
  148.     WSH_ATALK_ADDRESS        Address;
  149.     USHORT                    Enumerator;
  150.     WSH_NBP_NAME            NbpName;
  151. } WSH_NBP_TUPLE, *PWSH_NBP_TUPLE;
  152.  
  153. typedef WSH_NBP_NAME    WSH_REGISTER_NAME, *PWSH_REGISTER_NAME;
  154. typedef WSH_NBP_NAME    WSH_DEREGISTER_NAME, *PWSH_DEREGISTER_NAME;
  155. typedef WSH_NBP_NAME    WSH_REMOVE_NAME, *PWSH_REMOVE_NAME;
  156.  
  157. typedef struct _WSH_LOOKUP_ZONES
  158. {
  159.     ULONG   NoZones;
  160.  
  161.     //
  162.     //  CHAR    Zones[] - null separated zones
  163.     //
  164.  
  165. } WSH_LOOKUP_ZONES, *PWSH_LOOKUP_ZONES;
  166.  
  167. typedef struct _WSH_LOOKUP_NETDEF_ON_ADAPTER
  168. {
  169.     USHORT    NetworkRangeLowerEnd;
  170.     USHORT    NetworkRangeUpperEnd;
  171.  
  172.     //    This will be followed by a null terminated ansi default zone.
  173.     //    PUCHAR    DefaultZone[]
  174.  
  175. } WSH_LOOKUP_NETDEF_ON_ADAPTER , *PWSH_LOOKUP_NETDEF_ON_ADAPTER;
  176.  
  177. typedef struct _WSH_LOOKUP_NAME
  178. {
  179.     WSH_NBP_TUPLE    LookupTuple;
  180.     ULONG   NoTuples;
  181.  
  182.     //
  183.     //  Array of NoTuple WSH_NBP_TUPLEs
  184.     //
  185.  
  186. } WSH_LOOKUP_NAME, *PWSH_LOOKUP_NAME;
  187.  
  188. typedef struct _WSH_PAP_GET_SERVER_STATUS
  189. {
  190.     SOCKADDR_AT            ServerAddr;
  191.     UCHAR                Reserved[PAP_UNUSED_STATUS_BYTES];
  192.     UCHAR                ServerStatus[MAX_PAP_STATUS_SIZE+1];
  193.  
  194. } WSH_PAP_GET_SERVER_STATUS, *PWSH_PAP_GET_SERVER_STATUS;
  195.  
  196. #endif    // _ATALKWSH_
  197.  
  198.