summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/wsnwlink.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/wsnwlink.h')
-rw-r--r--public/sdk/inc/wsnwlink.h279
1 files changed, 279 insertions, 0 deletions
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
+