/*
*   wsnwlink.h
*
*   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.
*
*/

#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. Adds "unsigned char sa_ptype" to
*   the SOCKADDR_IPX structure.  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.
*
*/

#define IPX_MAXSIZE 0x4006

/*
*
*/

#define IPX_ADDRESS 0x4007

typedef struct _IPX_ADDRESS_DATA {
   INT   adapternum;
   UCHAR netnum[4];
   UCHAR nodenum[6];
} IPX_ADDRESS_DATA, *PIPX_ADDRESS_DATA;

#endif