/*
 *  ndiswan.h   NDIS WAN definitions
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */

#ifndef _NDIS_WAN_
#define _NDIS_WAN_

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file;
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Special value for NdisRegisterMiniport() and NdisRegisterSpecial() */
#define NDIS_USE_WAN_WRAPPER    0x00000001L

/* NDIS TAPI status codes */
#define NDIS_STATUS_TAPI_INDICATION 0x40010080L

/* Framing bits */
#define RAS_FRAMING                     0x00000001L
#define RAS_COMPRESSION                 0x00000002L
#define ARAP_V1_FRAMING                 0x00000004L
#define ARAP_V2_FRAMING                 0x00000008L
#define ARAP_FRAMING                    (ARAP_V1_FRAMING | ARAP_V2_FRAMING)
#define PPP_MULTILINK_FRAMING           0x00000010L
#define PPP_SHORT_SEQUENCE_HDR_FORMAT   0x00000020L
#define PPP_MC_MULTILINK_FRAMING        0x00000040L
#define PPP_FRAMING                     0x00000100L
#define PPP_COMPRESS_ADDRESS_CONTROL    0x00000200L
#define PPP_COMPRESS_PROTOCOL_FIELD     0x00000400L
#define PPP_ACCM_SUPPORTED              0x00000800L
#define SLIP_FRAMING                    0x00001000L
#define SLIP_VJ_COMPRESSION             0x00002000L
#define SLIP_VJ_AUTODETECT              0x00004000L
#define MEDIA_NRZ_ENCODING              0x00010000L
#define MEDIA_NRZI_ENCODING             0x00020000L
#define MEDIA_NLPID                     0x00040000L
#define RFC_1356_FRAMING                0x00100000L
#define RFC_1483_FRAMING                0x00200000L
#define RFC_1490_FRAMING                0x00400000L
#define LLC_ENCAPSULATION               0x00800000L
#define SHIVA_FRAMING                   0x01000000L
#define NBF_PRESERVE_MAC_ADDRESS        0x01000000L
#define PASS_THROUGH_MODE               0x10000000L
#ifndef _WAN50_
    #define RAW_PASS_THROUGH_MODE       0x20000000L
#endif
#define TAPI_PROVIDER                   0x80000000L

/* Bridging flags */
#define BRIDGING_FLAG_LANFCS    0x00000001L
#define BRIDGING_FLAG_LANID     0x00000002L
#define BRIDGING_FLAG_PADDING   0x00000004L

/* Bridging capability flags */
#define BRIDGING_TINYGRAM               0x00000001L
#define BRIDGING_LANID                  0x00000002L
#define BRIDGING_NO_SPANNING_TREE       0x00000004L
#define BRIDGING_8021D_SPANNING_TREE    0x00000008L
#define BRIDGING_8021G_SPANNING_TREE    0x00000010L
#define BRIDGING_SOURCE_ROUTING         0x00000020L
#define BRIDGING_DEC_LANBRIDGE          0x00000040L

/* Bridging types */
#define BRIDGING_TYPE_8023_CANON    0x00000002L
#define BRIDGING_TYPE_8024_NO_CANON 0x00000004L
#define BRIDGING_TYPE_8025_NO_CANON 0x00000008L
#define BRIDGING_TYPE_FDDI_NO_CANON 0x00000010L
#define BRIDGING_TYPE_8024_CANON    0x00000400L
#define BRIDGING_TYPE_8025_CANON    0x00000800L
#define BRIDGING_TYPE_FDDI_CANON    0x00001000L

/* Compression type flags */
#define NDISWAN_COMPRESSION     0x00000001L
#define NDISWAN_ENCRYPTION      0x00000010L
#define NDISWAN_40_ENCRYPTION   0x00000020L
#define NDISWAN_128_ENCRYPTION  0x00000040L
#define NDISWAN_56_ENCRYPTION   0x00000080L
#define NDISWAN_HISTORY_LESS    0x01000000L

/* Compression type codes */
#define COMPTYPE_OUI        0
#define COMPTYPE_NT31RAS    254
#define COMPTYPE_NONE       255

/* WAN error codes */
#define WAN_ERROR_CRC               0x00000001L
#define WAN_ERROR_FRAMING           0x00000002L
#define WAN_ERROR_HARDWAREOVERRUN   0x00000004L
#define WAN_ERROR_BUFFEROVERRUN     0x00000008L
#define WAN_ERROR_TIMEOUT           0x00000010L
#define WAN_ERROR_ALIGNMENT         0x00000020L

/* NDIS WAN information */
typedef struct _NDIS_WAN_INFO {
    ULONG                   MaxFrameSize;
    ULONG                   MaxTransmit;
    ULONG                   HeaderPadding;
    ULONG                   TailPadding;
    ULONG                   Endpoints;
    UINT                    MemoryFlags;
    NDIS_PHYSICAL_ADDRESS   HighestAcceptableAddress;
    ULONG                   FramingBits;
    ULONG                   DesiredACCM;
} NDIS_WAN_INFO;
typedef NDIS_WAN_INFO   *PNDIS_WAN_INFO;

/* NDIS WAN set link information */
typedef struct _NDIS_WAN_SET_LINK_INFO {
    NDIS_HANDLE NdisLinkHandle;
    ULONG       MaxSendFrameSize;
    ULONG       MaxRecvFrameSize;
    ULONG       HeaderPadding;
    ULONG       TailPadding;
    ULONG       SendFramingBits;
    ULONG       RecvFramingBits;
    ULONG       SendCompressionBits;
    ULONG       RecvCompressionBits;
    ULONG       SendACCM;
    ULONG       RecvACCM;
} NDIS_WAN_SET_LINK_INFO;
typedef NDIS_WAN_SET_LINK_INFO  *PNDIS_WAN_SET_LINK_INFO;

/* NDIS WAN get link information */
typedef struct _NDIS_WAN_GET_LINK_INFO {
    NDIS_HANDLE NdisLinkHandle;
    ULONG       MaxSendFrameSize;
    ULONG       MaxRecvFrameSize;
    ULONG       HeaderPadding;
    ULONG       TailPadding;
    ULONG       SendFramingBits;
    ULONG       RecvFramingBits;
    ULONG       SendCompressionBits;
    ULONG       RecvCompressionBits;
    ULONG       SendACCM;
    ULONG       RecvACCM;
} NDIS_WAN_GET_LINK_INFO;
typedef NDIS_WAN_GET_LINK_INFO  *PNDIS_WAN_GET_LINK_INFO;

/* NDIS WAN get bridge information */
typedef struct _NDIS_WAN_GET_BRIDGE_INFO {
    NDIS_HANDLE NdisLinkHandle;
    USHORT      LanSegmentNumber;
    UCHAR       BridgeNumber;
    UCHAR       BridgingOptions;
    ULONG       BridgingCapabilities;
    UCHAR       BridgingType;
    UCHAR       MacBytes[6];
} NDIS_WAN_GET_BRIDGE_INFO;
typedef NDIS_WAN_GET_BRIDGE_INFO    *PNDIS_WAN_GET_BRIDGE_INFO;

/* NDIS WAN set bridge information */
typedef struct _NDIS_WAN_SET_BRIDGE_INFO {
    NDIS_HANDLE NdisLinkHandle;
    USHORT      LanSegmentNumber;
    UCHAR       BridgeNumber;
    UCHAR       BridgingOptions;
    ULONG       BridgingCapabilities;
    UCHAR       BridgingType;
    UCHAR       MacBytes[6];
} NDIS_WAN_SET_BRIDGE_INFO;
typedef NDIS_WAN_SET_BRIDGE_INFO    *PNDIS_WAN_SET_BRIDGE_INFO;

/* NDIS WAN compression information */
typedef struct _NDIS_WAN_COMPRESS_INFO {
    UCHAR   SessionKey[8];
    ULONG   MSCompType;
    UCHAR   CompType;
    USHORT  CompLength;
    union {
        struct {
            UCHAR   CompOUI[3];
            UCHAR   CompSubType;
            UCHAR   CompValues[32];
        } Proprietary;
        struct {
            UCHAR   CompValues[32];
        } Public;
    };
} NDIS_WAN_COMPRESS_INFO;
typedef NDIS_WAN_COMPRESS_INFO  *PNDIS_WAN_COMPRESS_INFO;

/* NDIS WAN get compression information */
typedef struct _NDIS_WAN_GET_COMP_INFO {
    NDIS_HANDLE             NdisLinkHandle;
    NDIS_WAN_COMPRESS_INFO  SendCapabilities;
    NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
} NDIS_WAN_GET_COMP_INFO;
typedef NDIS_WAN_GET_COMP_INFO  *PNDIS_WAN_GET_COMP_INFO;

/* NDIS WAN set compression information */
typedef struct _NDIS_WAN_SET_COMP_INFO {
    NDIS_HANDLE             NdisLinkHandle;
    NDIS_WAN_COMPRESS_INFO  SendCapabilities;
    NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
} NDIS_WAN_SET_COMP_INFO;
typedef NDIS_WAN_SET_COMP_INFO  *PNDIS_WAN_SET_COMP_INFO;

/* NDIS WAN get statistics information */
typedef struct _NDIS_WAN_GET_STATS_INFO {
    NDIS_HANDLE NdisLinkHandle;
    ULONG       BytesSent;
    ULONG       BytesRcvd;
    ULONG       FramesSent;
    ULONG       FramesRcvd;
    ULONG       CRCErrors;
    ULONG       TimeoutErrors;
    ULONG       AlignmentErrors;
    ULONG       SerialOverrunErrors;
    ULONG       FramingErrors;
    ULONG       BufferOverrunErrors;
    ULONG       BytesTransmittedUncompressed;
    ULONG       BytesReceivedUncompressed;
    ULONG       BytesTransmittedCompressed;
    ULONG       BytesReceivedCompressed;
    ULONG       TunnelPacketsReceived;
    ULONG       TunnelReceivePacketsPending;
    ULONG       TunnelPacketsIndicatedUp;
    ULONG       TunnelReceivePacketsRejected;
    ULONG       TunnelPacketsSent;
    ULONG       TunnelPacketsSentComplete;
    ULONG       TunnelTransmitPacketsPending;
    ULONG       TunnelPacketsTransmitError;
    ULONG       TunnelPacketsSentError;
    ULONG       TunnelTransmitPacketsRejected;
    ULONG       TunnelAcksSent;
    ULONG       TunnelAcksSentComplete;
    ULONG       TunnelGeneric1;
    ULONG       TunnelGeneric2;
    ULONG       TunnelGeneric3;
} NDIS_WAN_GET_STATS_INFO;
typedef NDIS_WAN_GET_STATS_INFO *PNDIS_WAN_GET_STATS_INFO;

/* NDIS MAC line up */
typedef struct _NDIS_MAC_LINE_UP {
    ULONG               LinkSpeed;
    NDIS_WAN_QUALITY    Quality;
    USHORT              SendWindow;
    NDIS_HANDLE         ConnectionWrapperID;
    NDIS_HANDLE         NdisLinkHandle;
    NDIS_HANDLE         NdisLinkContext;
} NDIS_MAC_LINE_UP;
typedef NDIS_MAC_LINE_UP    *PNDIS_MAC_LINE_UP;

/* NDIS MAC line down */
typedef struct _NDIS_MAC_LINE_DOWN {
    NDIS_HANDLE NdisLinkContext;
} NDIS_MAC_LINE_DOWN;
typedef NDIS_MAC_LINE_DOWN  *PNDIS_MAC_LINE_DOWN;

/* NDIS MAC fragment */
typedef struct _NDIS_MAC_FRAGMENT {
    NDIS_HANDLE NdisLinkContext;
    ULONG       Errors;
} NDIS_MAC_FRAGMENT;
typedef NDIS_MAC_FRAGMENT   *PNDIS_MAC_FRAGMENT;

/* NDIS WAN CO information */
typedef struct _NDIS_WAN_CO_INFO {
    ULONG   MaxFrameSize;
    ULONG   MaxSendWindow;
    ULONG   FramingBits;
    ULONG   DesiredACCM;
} NDIS_WAN_CO_INFO;
typedef NDIS_WAN_CO_INFO    *PNDIS_WAN_CO_INFO;

/* NDIS WAN CO set link information */
typedef struct _NDIS_WAN_CO_SET_LINK_INFO {
    ULONG   MaxSendFrameSize;
    ULONG   MaxRecvFrameSize;
    ULONG   SendFramingBits;
    ULONG   RecvFramingBits;
    ULONG   SendCompressionBits;
    ULONG   RecvCompressionBits;
    ULONG   SendACCM;
    ULONG   RecvACCM;
} NDIS_WAN_CO_SET_LINK_INFO;
typedef NDIS_WAN_CO_SET_LINK_INFO   *PNDIS_WAN_CO_SET_LINK_INFO;

/* NDIS WAN CO get link information */
typedef struct _NDIS_WAN_CO_GET_LINK_INFO {
    ULONG   MaxSendFrameSize;
    ULONG   MaxRecvFrameSize;
    ULONG   SendFramingBits;
    ULONG   RecvFramingBits;
    ULONG   SendCompressionBits;
    ULONG   RecvCompressionBits;
    ULONG   SendACCM;
    ULONG   RecvACCM;
} NDIS_WAN_CO_GET_LINK_INFO;
typedef NDIS_WAN_CO_GET_LINK_INFO   *PNDIS_WAN_CO_GET_LINK_INFO;

/* NDIS WAN CO get compression information */
typedef struct _NDIS_WAN_CO_GET_COMP_INFO {
    NDIS_WAN_COMPRESS_INFO  SendCapabilities;
    NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
} NDIS_WAN_CO_GET_COMP_INFO;
typedef NDIS_WAN_CO_GET_COMP_INFO   *PNDIS_WAN_CO_GET_COMP_INFO;

/* NDIS WAN CO set compression information */
typedef struct _NDIS_WAN_CO_SET_COMP_INFO {
    NDIS_WAN_COMPRESS_INFO  SendCapabilities;
    NDIS_WAN_COMPRESS_INFO  RecvCapabilities;
} NDIS_WAN_CO_SET_COMP_INFO;
typedef NDIS_WAN_CO_SET_COMP_INFO   *PNDIS_WAN_CO_SET_COMP_INFO;

/* NDIS WAN CO get statistics information */
typedef struct _NDIS_WAN_CO_GET_STATS_INFO {
    ULONG   BytesSent;
    ULONG   BytesRcvd;
    ULONG   FramesSent;
    ULONG   FramesRcvd;
    ULONG   CRCErrors;
    ULONG   TimeoutErrors;
    ULONG   AlignmentErrors;
    ULONG   SerialOverrunErrors;
    ULONG   FramingErrors;
    ULONG   BufferOverrunErrors;
    ULONG   BytesTransmittedUncompressed;
    ULONG   BytesReceivedUncompressed;
    ULONG   BytesTransmittedCompressed;
    ULONG   BytesReceivedCompressed;
    ULONG   TunnelPacketsReceived;
    ULONG   TunnelReceivePacketsPending;
    ULONG   TunnelPacketsIndicatedUp;
    ULONG   TunnelReceivePacketsRejected;
    ULONG   TunnelPacketsSent;
    ULONG   TunnelPacketsSentComplete;
    ULONG   TunnelTransmitPacketsPending;
    ULONG   TunnelPacketsTransmitError;
    ULONG   TunnelPacketsSentError;
    ULONG   TunnelTransmitPacketsRejected;
    ULONG   TunnelAcksSent;
    ULONG   TunnelAcksSentComplete;
    ULONG   TunnelGeneric1;
    ULONG   TunnelGeneric2;
    ULONG   TunnelGeneric3;
} NDIS_WAN_CO_GET_STATS_INFO;
typedef NDIS_WAN_CO_GET_STATS_INFO  *PNDIS_WAN_CO_GET_STATS_INFO;

/* NDIS WAN CO fragment */
typedef struct _NDIS_WAN_CO_FRAGMENT {
    ULONG   Errors;
} NDIS_WAN_CO_FRAGMENT;
typedef NDIS_WAN_CO_FRAGMENT    *PNDIS_WAN_CO_FRAGMENT;

/* WAN CO link parameters */
typedef struct _WAN_CO_LINKPARAMS {
    ULONG   TransmitSpeed;
    ULONG   ReceiveSpeed;
    ULONG   SendWindow;
} WAN_CO_LINKPARAMS;
typedef WAN_CO_LINKPARAMS   *PWAN_CO_LINKPARAMS;

/* WAN CO MTU link parameters */
typedef struct _WAN_CO_MTULINKPARAMS {
    ULONG   Version;
    ULONG   TransmitSpeed;
    ULONG   ReceiveSpeed;
    ULONG   SendWindow;
    ULONG   MTU;
} WAN_CO_MTULINKPARAMS;
typedef WAN_CO_MTULINKPARAMS    *PWAN_CO_MTULINKPARAMS;

/* Functions implemented as macros */
#define NdisMWanInitializeWrapper( x, p1, p2, p3 ) \
    NdisMInitializeWrapper( x, p1, p2, p3 )

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* _NDIS_WAN_ */
