From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- public/sdk/inc/wsnwlink.h | 279 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 public/sdk/inc/wsnwlink.h (limited to 'public/sdk/inc/wsnwlink.h') diff --git a/public/sdk/inc/wsnwlink.h b/public/sdk/inc/wsnwlink.h new file mode 100644 index 000000000..8f3024192 --- /dev/null +++ b/public/sdk/inc/wsnwlink.h @@ -0,0 +1,279 @@ +/* + * wsnwlink.h + * + * + * Microsoft Windows + * Copyright (C) Microsoft Corporation, 1992-1996. + * Microsoft-specific extensions to the Windows NT IPX/SPX Windows + * Sockets interface. These extensions are provided for use as + * necessary for compatibility with existing applications. They are + * otherwise not recommended for use, as they are only guaranteed to + * work * over the Microsoft IPX/SPX stack. An application which + * uses these * extensions may not work over other IPX/SPX + * implementations. Include this header file after winsock.h and + * wsipx.h. + * + * To open an IPX socket where a particular packet type is sent in + * the IPX header, specify NSPROTO_IPX + n as the protocol parameter + * of the socket() API. For example, to open an IPX socket that + * sets the packet type to 34, use the following socket() call: + * + * s = socket(AF_IPX, SOCK_DGRAM, NSPROTO_IPX + 34); + * + * Below are socket option that may be set or retrieved by specifying + * the appropriate manifest in the "optname" parameter of getsockopt() + * or setsockopt(). Use NSPROTO_IPX as the "level" argument for the + * call. + * + */ + +#ifndef _WSNWLINK_ +#define _WSNWLINK_ + + +/* + * Set/get the IPX packet type. The value specified in the + * optval argument will be set as the packet type on every IPX + * packet sent from this socket. The optval parameter of + * getsockopt()/setsockopt() points to an int. + * + */ + +#define IPX_PTYPE 0x4000 + + +/* + * Set/get the receive filter packet type. Only IPX packets with + * a packet type equal to the value specified in the optval + * argument will be returned; packets with a packet type that + * does not match are discarded. optval points to an int. + * + */ + +#define IPX_FILTERPTYPE 0x4001 + + +/* + * Stop filtering on packet type set with IPX_FILTERPTYPE. + * + */ + +#define IPX_STOPFILTERPTYPE 0x4003 + + +/* + * Set/get the value of the datastream field in the SPX header on + * every packet sent. optval points to an int. + * + */ + +#define IPX_DSTYPE 0x4002 + + +/* + * Enable extended addressing. On sends, adds the element + * "unsigned char sa_ptype" to the SOCKADDR_IPX structure, + * making the total length 15 bytes. On receives, add both + * the sa_ptype and "unsigned char sa_flags" to the SOCKADDR_IPX + * structure, making the total length 16 bytes. The current + * bits defined in sa_flags are: + * + * 0x01 - the received frame was sent as a broadcast + * 0x02 - the received frame was sent from this machine + * + * optval points to a BOOL. + * + */ + +#define IPX_EXTENDED_ADDRESS 0x4004 + + +/* + * Send protocol header up on all receive packets. optval points + * to a BOOL. + * + */ + +#define IPX_RECVHDR 0x4005 + + +/* + * Get the maximum data size that can be sent. Not valid with + * setsockopt(). optval points to an int where the value is + * returned. + * + */ + +#define IPX_MAXSIZE 0x4006 + + +/* + * Query information about a specific adapter that IPX is bound + * to. In a system with n adapters they are numbered 0 through n-1. + * Callers can issue the IPX_MAX_ADAPTER_NUM getsockopt() to find + * out the number of adapters present, or call IPX_ADDRESS with + * increasing values of adapternum until it fails. Not valid + * with setsockopt(). optval points to an instance of the + * IPX_ADDRESS_DATA structure with the adapternum filled in. + * + */ + +#define IPX_ADDRESS 0x4007 + +typedef struct _IPX_ADDRESS_DATA { + INT adapternum; /* input: 0-based adapter number */ + UCHAR netnum[4]; /* output: IPX network number */ + UCHAR nodenum[6]; /* output: IPX node address */ + BOOLEAN wan; /* output: TRUE = adapter is on a wan link */ + BOOLEAN status; /* output: TRUE = wan link is up (or adapter is not wan) */ + INT maxpkt; /* output: max packet size, not including IPX header */ + ULONG linkspeed; /* output: link speed in 100 bytes/sec (i.e. 96 == 9600 bps) */ +} IPX_ADDRESS_DATA, *PIPX_ADDRESS_DATA; + + +/* + * Query information about a specific IPX network number. If the + * network is in IPX's cache it will return the information directly, + * otherwise it will issue RIP requests to find it. Not valid with + * setsockopt(). optval points to an instance of the IPX_NETNUM_DATA + * structure with the netnum filled in. + * + */ + +#define IPX_GETNETINFO 0x4008 + +typedef struct _IPX_NETNUM_DATA { + UCHAR netnum[4]; /* input: IPX network number */ + USHORT hopcount; /* output: hop count to this network, in machine order */ + USHORT netdelay; /* output: tick count to this network, in machine order */ + INT cardnum; /* output: 0-based adapter number used to route to this net; + /* can be used as adapternum input to IPX_ADDRESS */ + UCHAR router[6]; /* output: MAC address of the next hop router, zeroed if + /* the network is directly attached */ +} IPX_NETNUM_DATA, *PIPX_NETNUM_DATA; + + +/* + * Like IPX_GETNETINFO except it *does not* issue RIP requests. If the + * network is in IPX's cache it will return the information, otherwise + * it will fail (see also IPX_RERIPNETNUMBER which *always* forces a + * re-RIP). Not valid with setsockopt(). optval points to an instance of + * the IPX_NETNUM_DATA structure with the netnum filled in. + * + */ + +#define IPX_GETNETINFO_NORIP 0x4009 + + +/* + * Get information on a connected SPX socket. optval points + * to an instance of the IPX_SPXCONNSTATUS_DATA structure. + * + * All numbers are in Novell (high-low) order. + * + */ + +#define IPX_SPXGETCONNECTIONSTATUS 0x400B + +typedef struct _IPX_SPXCONNSTATUS_DATA { + UCHAR ConnectionState; + UCHAR WatchDogActive; + USHORT LocalConnectionId; + USHORT RemoteConnectionId; + USHORT LocalSequenceNumber; + USHORT LocalAckNumber; + USHORT LocalAllocNumber; + USHORT RemoteAckNumber; + USHORT RemoteAllocNumber; + USHORT LocalSocket; + UCHAR ImmediateAddress[6]; + UCHAR RemoteNetwork[4]; + UCHAR RemoteNode[6]; + USHORT RemoteSocket; + USHORT RetransmissionCount; + USHORT EstimatedRoundTripDelay; /* In milliseconds */ + USHORT RetransmittedPackets; + USHORT SuppressedPacket; +} IPX_SPXCONNSTATUS_DATA, *PIPX_SPXCONNSTATUS_DATA; + + +/* + * Get notification when the status of an adapter that IPX is + * bound to changes. Typically this will happen when a wan line + * goes up or down. Not valid with setsockopt(). optval points + * to a buffer which contains an IPX_ADDRESS_DATA structure + * followed immediately by a HANDLE to an unsignaled event. + * + * When the getsockopt() query is submitted, it will complete + * successfully. However, the IPX_ADDRESS_DATA pointed to by + * optval will not be updated at that point. Instead the + * request is queued internally inside the transport. + * + * When the status of an adapter changes, IPX will locate a + * queued getsockopt() query and fill in all the fields in the + * IPX_ADDRESS_DATA structure. It will then signal the event + * pointed to by the HANDLE in the optval buffer. This handle + * should be obtained before calling getsockopt() by calling + * CreateEvent(). If multiple getsockopts() are submitted at + * once, different events must be used. + * + * The event is used because the call needs to be asynchronous + * but currently getsockopt() does not support this. + * + * WARNING: In the current implementation, the transport will + * only signal one queued query for each status change. Therefore + * only one service which uses this query should be running at + * once. + * + */ + +#define IPX_ADDRESS_NOTIFY 0x400C + + +/* + * Get the maximum number of adapters present. If this call returns + * n then the adapters are numbered 0 through n-1. Not valid + * with setsockopt(). optval points to an int where the value + * is returned. + * + */ + +#define IPX_MAX_ADAPTER_NUM 0x400D + + +/* + * Like IPX_GETNETINFO except it forces IPX to re-RIP even if the + * network is in its cache (but not if it is directly attached to). + * Not valid with setsockopt(). optval points to an instance of + * the IPX_NETNUM_DATA structure with the netnum filled in. + * + */ + +#define IPX_RERIPNETNUMBER 0x400E + + +/* + * A hint that broadcast packets may be received. The default is + * TRUE. Applications that do not need to receive broadcast packets + * should set this sockopt to FALSE which may cause better system + * performance (note that it does not necessarily cause broadcasts + * to be filtered for the application). Not valid with getsockopt(). + * optval points to a BOOL. + * + */ + +#define IPX_RECEIVE_BROADCAST 0x400F + + +/* + * On SPX connections, don't delay before sending ack. Applications + * that do not tend to have back-and-forth traffic over SPX should + * set this; it will increase the number of acks sent but will remove + * delays in sending acks. optval points to a BOOL. + * + */ + +#define IPX_IMMEDIATESPXACK 0x4010 + +#endif + -- cgit v1.2.3