You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
292 lines
7.4 KiB
292 lines
7.4 KiB
/********************************************************************/
|
|
/** Microsoft LAN Manager **/
|
|
/** Copyright (c) Microsoft Corporation. All rights reserved. **/
|
|
/********************************************************************/
|
|
/* :ts=4 */
|
|
|
|
//** IPINFO.H - IP SNMP information definitions..
|
|
//
|
|
// This file contains all of the definitions for IP that are
|
|
// related to SNMP information gathering.
|
|
|
|
#ifndef IPINFO_INCLUDED
|
|
#define IPINFO_INCLUDED
|
|
|
|
#pragma warning(push)
|
|
#pragma warning(disable:4201) // nameless struct/union
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef CTE_TYPEDEFS_DEFINED
|
|
#define CTE_TYPEDEFS_DEFINED
|
|
|
|
typedef unsigned long ulong;
|
|
typedef unsigned short ushort;
|
|
typedef unsigned char uchar;
|
|
typedef unsigned int uint;
|
|
|
|
#endif // CTE_TYPEDEFS_DEFINED
|
|
|
|
|
|
typedef struct IPSNMPInfo {
|
|
ulong ipsi_forwarding;
|
|
ulong ipsi_defaultttl;
|
|
ulong ipsi_inreceives;
|
|
ulong ipsi_inhdrerrors;
|
|
ulong ipsi_inaddrerrors;
|
|
ulong ipsi_forwdatagrams;
|
|
ulong ipsi_inunknownprotos;
|
|
ulong ipsi_indiscards;
|
|
ulong ipsi_indelivers;
|
|
ulong ipsi_outrequests;
|
|
ulong ipsi_routingdiscards;
|
|
ulong ipsi_outdiscards;
|
|
ulong ipsi_outnoroutes;
|
|
ulong ipsi_reasmtimeout;
|
|
ulong ipsi_reasmreqds;
|
|
ulong ipsi_reasmoks;
|
|
ulong ipsi_reasmfails;
|
|
ulong ipsi_fragoks;
|
|
ulong ipsi_fragfails;
|
|
ulong ipsi_fragcreates;
|
|
ulong ipsi_numif;
|
|
ulong ipsi_numaddr;
|
|
ulong ipsi_numroutes;
|
|
} IPSNMPInfo;
|
|
|
|
typedef struct ICMPStats {
|
|
ulong icmps_msgs;
|
|
ulong icmps_errors;
|
|
ulong icmps_destunreachs;
|
|
ulong icmps_timeexcds;
|
|
ulong icmps_parmprobs;
|
|
ulong icmps_srcquenchs;
|
|
ulong icmps_redirects;
|
|
ulong icmps_echos;
|
|
ulong icmps_echoreps;
|
|
ulong icmps_timestamps;
|
|
ulong icmps_timestampreps;
|
|
ulong icmps_addrmasks;
|
|
ulong icmps_addrmaskreps;
|
|
} ICMPStats;
|
|
|
|
typedef struct ICMPSNMPInfo {
|
|
ICMPStats icsi_instats;
|
|
ICMPStats icsi_outstats;
|
|
} ICMPSNMPInfo;
|
|
|
|
typedef struct ICMPv6Stats {
|
|
ulong icmps_msgs;
|
|
ulong icmps_errors;
|
|
ulong icmps_typecount[256];
|
|
} ICMPv6Stats;
|
|
|
|
typedef struct ICMPv6SNMPInfo {
|
|
ICMPv6Stats icsi_instats;
|
|
ICMPv6Stats icsi_outstats;
|
|
} ICMPv6SNMPInfo;
|
|
|
|
#define IP_FORWARDING 1
|
|
#define IP_NOT_FORWARDING 2
|
|
|
|
typedef struct IPAddrEntry {
|
|
ulong iae_addr;
|
|
ulong iae_index;
|
|
ulong iae_mask;
|
|
ulong iae_bcastaddr;
|
|
ulong iae_reasmsize;
|
|
ushort iae_context;
|
|
ushort iae_pad;
|
|
} IPAddrEntry;
|
|
|
|
typedef struct IPRouteEntry {
|
|
ulong ire_dest;
|
|
ulong ire_index;
|
|
ulong ire_metric1;
|
|
ulong ire_metric2;
|
|
ulong ire_metric3;
|
|
ulong ire_metric4;
|
|
ulong ire_nexthop;
|
|
ulong ire_type;
|
|
ulong ire_proto;
|
|
ulong ire_age;
|
|
ulong ire_mask;
|
|
ulong ire_metric5;
|
|
#ifdef NT
|
|
ulong ire_context;
|
|
#endif
|
|
} IPRouteEntry;
|
|
|
|
typedef struct IPRouteBlock {
|
|
ulong numofroutes;
|
|
IPRouteEntry route[1];
|
|
} IPRouteBlock;
|
|
|
|
//
|
|
// Route with multiple nexthops and associated defns
|
|
//
|
|
|
|
typedef struct IPRouteNextHopEntry {
|
|
ulong ine_iretype;
|
|
ulong ine_nexthop;
|
|
ulong ine_ifindex;
|
|
#ifdef NT
|
|
ulong ine_context;
|
|
#endif
|
|
} IPRouteNextHopEntry;
|
|
|
|
|
|
typedef struct IPMultihopRouteEntry {
|
|
ulong imre_numnexthops;
|
|
ulong imre_flags;
|
|
IPRouteEntry imre_routeinfo;
|
|
IPRouteNextHopEntry imre_morenexthops[1];
|
|
} IPMultihopRouteEntry;
|
|
|
|
#define IMRE_FLAG_DELETE_DEST 0x00000001
|
|
|
|
//
|
|
// Input context to pass when querying a route
|
|
//
|
|
|
|
typedef enum {
|
|
IPNotifyNotification = 0,
|
|
IPNotifySynchronization,
|
|
IPNotifyMaximumVersion
|
|
} IPNotifyVersion;
|
|
|
|
typedef struct IPNotifyData {
|
|
ulong Version; // See IPNotifyVersion above.
|
|
ulong Add;
|
|
char Info[1];
|
|
} IPNotifyData, *PIPNotifyData;
|
|
|
|
typedef struct IPNotifyOutput {
|
|
ulong ino_addr;
|
|
ulong ino_mask;
|
|
ulong ino_info[6];
|
|
} IPNotifyOutput, *PIPNotifyOutput;
|
|
|
|
typedef union IPRouteNotifyOutput {
|
|
IPNotifyOutput irno_info;
|
|
struct {
|
|
ulong irno_dest;
|
|
ulong irno_mask;
|
|
ulong irno_nexthop;
|
|
ulong irno_proto;
|
|
ulong irno_ifindex;
|
|
ulong irno_metric;
|
|
ulong irno_flags;
|
|
};
|
|
} IPRouteNotifyOutput, *PIPRouteNotifyOutput;
|
|
|
|
#define IRNO_FLAG_ADD 0x00000001
|
|
#define IRNO_FLAG_DELETE 0x00000002
|
|
|
|
//
|
|
// Input context to pass when querying a route
|
|
//
|
|
typedef struct IPRouteLookupData {
|
|
ulong Version; //version of this structure
|
|
ulong DestAdd;
|
|
ulong SrcAdd;
|
|
char Info[1];
|
|
} IPRouteLookupData, *PIPRouteLookupData;
|
|
|
|
typedef struct AddrXlatInfo {
|
|
ulong axi_count;
|
|
ulong axi_index;
|
|
} AddrXlatInfo;
|
|
|
|
#define IRE_TYPE_OTHER 1
|
|
#define IRE_TYPE_INVALID 2
|
|
#define IRE_TYPE_DIRECT 3
|
|
#define IRE_TYPE_INDIRECT 4
|
|
|
|
#define IRE_PROTO_OTHER 1
|
|
#define IRE_PROTO_LOCAL 2
|
|
#define IRE_PROTO_NETMGMT 3
|
|
#define IRE_PROTO_ICMP 4
|
|
#define IRE_PROTO_EGP 5
|
|
#define IRE_PROTO_GGP 6
|
|
#define IRE_PROTO_HELLO 7
|
|
#define IRE_PROTO_RIP 8
|
|
#define IRE_PROTO_IS_IS 9
|
|
#define IRE_PROTO_ES_IS 10
|
|
#define IRE_PROTO_CISCO 11
|
|
#define IRE_PROTO_BBN 12
|
|
#define IRE_PROTO_OSPF 13
|
|
#define IRE_PROTO_BGP 14
|
|
|
|
#define IRE_METRIC_UNUSED 0xffffffff
|
|
|
|
#define IP_MIB_STATS_ID 1
|
|
#define IP_MIB_RTCHANGE_NOTIFY_ID 2
|
|
#define ICMP_MIB_STATS_ID 1
|
|
|
|
#define AT_MIB_ADDRXLAT_INFO_ID 1
|
|
#define AT_MIB_ADDRXLAT_ENTRY_ID 0x101
|
|
|
|
#define IP_MIB_RTTABLE_ENTRY_ID 0x101
|
|
#define IP_MIB_ADDRTABLE_ENTRY_ID 0x102
|
|
#define IP_MIB_RTTABLE_ENTRY_ID_EX 0x103
|
|
|
|
#define IP_INTFC_FLAG_P2P 1
|
|
#define IP_INTFC_FLAG_P2MP 2
|
|
#define IP_INTFC_FLAG_UNIDIRECTIONAL 4
|
|
|
|
|
|
typedef struct IPInterfaceInfo {
|
|
ulong iii_flags;
|
|
ulong iii_mtu;
|
|
ulong iii_speed;
|
|
ulong iii_addrlength;
|
|
uchar iii_addr[1];
|
|
} IPInterfaceInfo;
|
|
|
|
#define IP_INTFC_INFO_ID 0x103
|
|
#define IP_MIB_SINGLE_RT_ENTRY_ID 0x104
|
|
#define IP_GET_BEST_SOURCE 0x105
|
|
|
|
#ifndef s6_addr
|
|
|
|
struct in6_addr {
|
|
union {
|
|
unsigned char Byte[16];
|
|
unsigned short Word[8];
|
|
} u;
|
|
};
|
|
|
|
#define in_addr6 in6_addr
|
|
|
|
/*
|
|
** Defines to match RFC 2553.
|
|
*/
|
|
#define _S6_un u
|
|
#define _S6_u8 Byte
|
|
#define s6_addr _S6_un._S6_u8
|
|
|
|
/*
|
|
** Defines for our implementation.
|
|
*/
|
|
#define s6_bytes u.Byte
|
|
#define s6_words u.Word
|
|
|
|
#endif
|
|
|
|
typedef struct IP6RouteEntry {
|
|
ulong ire_Length;
|
|
struct in6_addr ire_Source;
|
|
ulong ire_ScopeId;
|
|
ulong ire_IfIndex;
|
|
} IP6RouteEntry;
|
|
|
|
#define IP6_MIB_STATS_ID IP_MIB_STATS_ID
|
|
#define IP6_GET_BEST_ROUTE_ID 3
|
|
#define ICMP6_MIB_STATS_ID 4
|
|
|
|
#pragma warning(pop)
|
|
|
|
#endif // IPINFO_INCLUDED
|