text: /*++
  
  Copyright (c) 1995-1999 Microsoft Corporation
  
  Module Name:
  
      ipxsap.h
  
  Abstract:
  
      This module contains the definitions of the:
  
      interface management APIs structures
      sap global management APIs structures
      sap MIB management APIs structures
  
  Author:
  
      Stefan Solomon  06/30/1995
  
  Revision History:
  
  
  --*/
  
  #ifndef _IPXSAP_
  #define _IPXSAP_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif
  
  #include <ipxconst.h>
  
  typedef struct _SAP_GLOBAL_INFO {
      DWORD       EventLogMask;
  } SAP_GLOBAL_INFO, *PSAP_GLOBAL_INFO;
  
  //********************************************************************
  //								     *
  //		    SAP Configuration Information		     *
  //								     *
  //********************************************************************
  
  //*** SAP Interface Configuration Information ***
  
  typedef struct _SAP_IF_INFO {
  
      ULONG	    AdminState;  // The desired state of the interface
      ULONG	    UpdateMode;	// SAP update mechanism used on this interface
      ULONG	    PacketType;  // The SAP packet type used on this interface
      ULONG	    Supply; // Send SAP updates on this interface
      ULONG	    Listen; // Listen to SAP updates on this interface
      ULONG	    GetNearestServerReply; // Reply to GetNearestServer
      ULONG	    PeriodicUpdateInterval; // in seconds - default 60
      ULONG	    AgeIntervalMultiplier; // default 3
  
      } SAP_IF_INFO, *PSAP_IF_INFO;
  
  // UpdateMode Values:
  //
  // This parameter controls the SAP	database update on this interface.
  //
  // If this is a LAN interface, use IPX_PERIODIC_UPDATE as default.
  // If this is a WAN router interface with static routes, use IPX_NO_UPDATE as default.
  // If you want to trigger an update on this interface and to keep the data
  // as static data, use IPX_AUTO_STATIC value.
  // IPX_AUTO_STATIC update can be set only on a WAN interface
  //
  // PacketType Default Values:
  //
  // If UpdateMode is set to IPX_NO_UPDATE, this field is meaningless.
  // If this is a LAN interface, use IPX_STANDARD_PACKET_TYPE as default.
  // If you want reliable delivery of the update data in a triggered update,
  // use IPX_RELIABLE_DELIVERY_PACKET_TYPE (this can be set only in combination with
  // IPX_AUTO_STATIC_UPDATE in the UpdateMode).
  
  
  // IPX Service Filter Info
  //
  
  typedef struct _SAP_SERVICE_FILTER_INFO {
      union {
          USHORT	    ServiceType;
          ULONG       ServiceType_align;  // Ensures aligment
          };
      UCHAR	    ServiceName[48];
      } SAP_SERVICE_FILTER_INFO, *PSAP_SERVICE_FILTER_INFO;
  
  // ServiceType - a wildcard (0xFFFF) means any type.
  
  // ServiceName - (1-47)chars service name. A null byte as the first byte
  // signifies ANY server of this type
  
  //*** SAP Filters Only Information ***
  
  typedef struct _SAP_IF_FILTERS {
  
      ULONG		    SupplyFilterAction;
      ULONG		    SupplyFilterCount;
      ULONG		    ListenFilterAction;
      ULONG		    ListenFilterCount;
      SAP_SERVICE_FILTER_INFO ServiceFilter[1];
  
      } SAP_IF_FILTERS, *PSAP_IF_FILTERS;
  
  // FilterAction -
  
  #define IPX_SERVICE_FILTER_PERMIT	    1
  #define IPX_SERVICE_FILTER_DENY 	    2
  
  //
  //*** SAP Interface Configuration Information ***
  //
  // This structure is passed in AddInterface and SetInterface Entry Points
  //
  
  typedef struct _SAP_IF_CONFIG {
  
      SAP_IF_INFO	    SapIfInfo;
      SAP_IF_FILTERS  SapIfFilters;
  
      } SAP_IF_CONFIG, *PSAP_IF_CONFIG;
  
  
  // ***********************************************************
  // ***							   ***
  // ***		SAP MIB Table Identifiers		   ***
  // ***							   ***
  // ***********************************************************
  
  
  #define SAP_BASE_ENTRY			    0
  #define SAP_INTERFACE_TABLE		    1
  
  //************************************************************
  //							     *
  //		SAP MIB Basic Structures		     *
  //							     *
  //************************************************************
  
  //
  // SAP MIB Base Entry
  //
  
  typedef struct _SAP_MIB_BASE {
  
      ULONG	    SapOperState;
  
      } SAP_MIB_BASE, *PSAP_MIB_BASE;
  
  
  //
  // SAP MIB Interface Table Entry
  //
  
  typedef struct _SAP_IF_STATS {
  
      ULONG		    SapIfOperState;   // up, down or sleeping
      ULONG		    SapIfInputPackets;
      ULONG		    SapIfOutputPackets;
  
      } SAP_IF_STATS, *PSAP_IF_STATS;
  
  
  typedef struct _SAP_INTERFACE {
  
      ULONG	    InterfaceIndex;
      SAP_IF_INFO	    SapIfInfo;
      SAP_IF_STATS    SapIfStats;
  
      } SAP_INTERFACE, *PSAP_INTERFACE;
  
  //***************************************************************
  //								*
  //	     INPUT DATA For: Get, GetFirst, GetNext		*
  //								*
  //***************************************************************
  
  typedef struct _SAP_MIB_GET_INPUT_DATA {
  
      ULONG		TableId;
      ULONG		InterfaceIndex;
  
      } SAP_MIB_GET_INPUT_DATA, *PSAP_MIB_GET_INPUT_DATA;
  
  //***************************************************************
  //								*
  //	     INPUT DATA For: Create, Delete, Set		*
  //								*
  //***************************************************************
  
  typedef struct _SAP_MIB_SET_INPUT_DATA {
  
      ULONG				TableId;
  	SAP_INTERFACE		SapInterface;
      } SAP_MIB_SET_INPUT_DATA, *PSAP_MIB_SET_INPUT_DATA;
  
  //
  // ***			SAP Base Entry					***
  //
  
  // MIB Functions: Get
  
  // INPUT DATA: SAP_MIB_GET_INPUT_DATA and Index is not used
  
  // OUTPUT DATA: SAP_INTERFACE
  
  //
  // ***			SAP Interface Table				    ***
  //
  
  // MIB Functions: Get, GetFirst, GetNext, Set
  
  // INPUT DATA: SAP_MIB_GET_INPUT_DATA for Get, GetFirst and GetNext
  //	       SAP_MIB_SET_INPUT_DATA for Set
  
  //
  // OUTPUT DATA: SAP_INTERFACE
  //
  
  #endif
  