1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _ATALKWSH_
7 #define _ATALKWSH_
8 
9 #define DECIMAL_BASE 10
10 
11 #define ATPROTO_BASE (1000 *AF_APPLETALK)
12 #define SOL_APPLETALK (ATPROTO_BASE)
13 
14 #define DDPPROTO_RTMP (ATPROTO_BASE + 1)
15 #define DDPPROTO_NBP (ATPROTO_BASE + 2)
16 #define DDPPROTO_ATP (ATPROTO_BASE + 3)
17 #define DDPPROTO_AEP (ATPROTO_BASE + 4)
18 #define DDPPROTO_RTMPRQ (ATPROTO_BASE + 5)
19 #define DDPPROTO_ZIP (ATPROTO_BASE + 6)
20 #define DDPPROTO_ADSP (ATPROTO_BASE + 7)
21 
22 #define DDPPROTO_MAX (ATPROTO_BASE + 255)
23 
24 #define ATPROTO_ADSP (DDPPROTO_MAX + 1)
25 #define ATPROTO_ATP (DDPPROTO_MAX + 2)
26 #define ATPROTO_ASP (DDPPROTO_MAX + 3)
27 #define ATPROTO_PAP (DDPPROTO_MAX + 4)
28 
29 #define SO_REGISTER_NAME 0xA000
30 #define SO_DEREGISTER_NAME 0xA001
31 #define SO_REMOVE_NAME SO_DEREGISTER_NAME
32 #define SO_LOOKUP_NAME 0xA002
33 #define SO_CONFIRM_NAME 0xA003
34 #define SO_LOOKUP_MYZONE 0xA004
35 #define SO_GETMYZONE SO_LOOKUP_MYZONE
36 #define SO_LOOKUP_ZONES 0xA005
37 #define SO_GETZONELIST SO_LOOKUP_ZONES
38 #define SO_LOOKUP_ZONES_ON_ADAPTER 0xA006
39 #define SO_GETLOCALZONES SO_LOOKUP_ZONES_ON_ADAPTER
40 #define SO_LOOKUP_NETDEF_ON_ADAPTER 0xA007
41 #define SO_GETNETINFO SO_LOOKUP_NETDEF_ON_ADAPTER
42 
43 #define SO_PAP_SET_SERVER_STATUS 0xA007
44 #define SO_PAP_GET_SERVER_STATUS 0xA008
45 #define SO_PAP_PRIME_READ 0xA009
46 
47 #define ATADDR_ANY 0
48 #define ATADDR_BROADCAST 0xFF
49 
50 #define WSAEMSGPARTIAL (WSABASEERR+100)
51 
52 #define MAX_PAP_STATUS_SIZE 255
53 #define MIN_PAP_READ_BUF_SIZE 4096
54 
55 #define PAP_UNUSED_STATUS_BYTES 4
56 
57 typedef struct sockaddr_at {
58   USHORT sat_family;
59   USHORT sat_net;
60   UCHAR sat_node;
61   UCHAR sat_socket;
62 } SOCKADDR_AT,*PSOCKADDR_AT;
63 
64 typedef union {
65   struct {
66     USHORT Network;
67     UCHAR Node;
68     UCHAR Socket;
69   };
70   ULONG Address;
71 } WSH_ATALK_ADDRESS,*PWSH_ATALK_ADDRESS;
72 
73 #define MAX_ENTITY 32
74 typedef struct {
75   CHAR ObjectNameLen;
76   CHAR ObjectName[MAX_ENTITY];
77   CHAR TypeNameLen;
78   CHAR TypeName[MAX_ENTITY];
79   CHAR ZoneNameLen;
80   CHAR ZoneName[MAX_ENTITY];
81 } WSH_NBP_NAME,*PWSH_NBP_NAME;
82 
83 typedef struct {
84   WSH_ATALK_ADDRESS Address;
85   USHORT Enumerator;
86   WSH_NBP_NAME NbpName;
87 } WSH_NBP_TUPLE,*PWSH_NBP_TUPLE;
88 
89 typedef WSH_NBP_NAME WSH_REGISTER_NAME,*PWSH_REGISTER_NAME;
90 typedef WSH_NBP_NAME WSH_DEREGISTER_NAME,*PWSH_DEREGISTER_NAME;
91 typedef WSH_NBP_NAME WSH_REMOVE_NAME,*PWSH_REMOVE_NAME;
92 
93 typedef struct _WSH_LOOKUP_ZONES {
94   ULONG NoZones;
95 } WSH_LOOKUP_ZONES,*PWSH_LOOKUP_ZONES;
96 
97 typedef struct _WSH_LOOKUP_NETDEF_ON_ADAPTER {
98   USHORT NetworkRangeLowerEnd;
99   USHORT NetworkRangeUpperEnd;
100 } WSH_LOOKUP_NETDEF_ON_ADAPTER,*PWSH_LOOKUP_NETDEF_ON_ADAPTER;
101 
102 typedef struct _WSH_LOOKUP_NAME {
103   WSH_NBP_TUPLE LookupTuple;
104   ULONG NoTuples;
105 } WSH_LOOKUP_NAME,*PWSH_LOOKUP_NAME;
106 
107 typedef struct _WSH_PAP_GET_SERVER_STATUS {
108   SOCKADDR_AT ServerAddr;
109   UCHAR Reserved[PAP_UNUSED_STATUS_BYTES];
110   UCHAR ServerStatus[MAX_PAP_STATUS_SIZE+1];
111 } WSH_PAP_GET_SERVER_STATUS,*PWSH_PAP_GET_SERVER_STATUS;
112 
113 #endif
114