// **************************************************************************

// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
// File:  HIProv.mof
//
// Description:
//			MOF file for the ping instance provider.
//			Contains instances required to register this provider with
//			WBEM, and the definition of the class that this provider provides.
//
// History:
//
// **************************************************************************

/////////////////////////////////////////////////////////////////////
// Declare an instance of the __Win32Provider so as to "register" the
// HTTP provider
#pragma Namespace("\\root\\cimv2")

instance of __Win32Provider as $P
{
    Name    = "WMIPingProvider" ;
    ClsId   = "{734AC5AE-68E1-4fb5-B8DA-1D92F7FC6661}" ;
} ;    

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsPut = FALSE;
    SupportsGet = TRUE;
    SupportsDelete = FALSE;
    SupportsEnumeration = TRUE;
    QuerySupportLevels = { "WQL:UnarySelect" } ;
};


/////////////////////////////////////////////////////////////////////
//
// Declare a class whose dynamic instances are provided by the 
// sample provider.

[dynamic, provider("WMIPingProvider")]
class Win32_PingProtocolStatus
{
	[
		key,
		Description("Address requested")
	]
	String Address = "" ;

	[
		key, 
		Description("Time to live")
	]
	uint32 TimeToLive = 80 ;

	[
		key, 
		Description("Timeout in milliseconds")
	]
	uint32 Timeout = 4000 ;

	[
		key, 
		Description("Send buffer size")
	]
	uint32 BufferSize = 32 ;

	[
		key, 
		Description("Don't Fragment")
	]
	boolean NoFragmentation = FALSE ;

	[
		key, 
		Description("Type Of Service")
	]
	uint32 TypeofService = 0 ;

	[
		key, 
		Description("Record Route")
	]
	uint32 RecordRoute = 0 ;

	[
		key, 
		Description("Timestamp Route")
	]
	uint32 TimestampRoute = 0 ;

	[
		key,
		Description("Source Route Type")
	]
	uint32 SourceRouteType = 0 ;

	[
		key, 
		Description("Comma separated list of Source Routes")
	]
	String SourceRoute = "" ;

	[
		key, 
		Description("Resolve Addresses Names")
	]
	boolean ResolveAddressNames = FALSE ;
	
	[
		read, 
		Description("Ping Status Code"),
		Values {
			"IP_SUCCESS"
			"IP_BUF_TOO_SMALL",
			"IP_DEST_NET_UNREACHABLE",
			"IP_DEST_HOST_UNREACHABLE",
			"IP_DEST_PROT_UNREACHABLE",
			"IP_DEST_PORT_UNREACHABLE",
			"IP_NO_RESOURCES",
			"IP_BAD_OPTION",
			"IP_HW_ERROR",
			"IP_PACKET_TOO_BIG",
			"IP_REQ_TIMED_OUT",
			"IP_BAD_REQ",
			"IP_BAD_ROUTE",
			"IP_TTL_EXPIRED_TRANSIT",
			"IP_TTL_EXPIRED_REASSEM",
			"IP_PARAM_PROBLEM",
			"IP_SOURCE_QUENCH",
			"IP_OPTION_TOO_BIG",
			"IP_BAD_DESTINATION",
			"IP_NEGOTIATING_IPSEC",
			"IP_GENERAL_FAILURE"
		}
		ValueMap{
		0,
		11001,
		11002,
		11003,
		11004,
		11005,
		11006,
		11007,
		11008,
		11009,
		11010,
		11011,
		11012,
		11013,
		11014,
		11015,
		11016,
		11017,
		11018,
		11032,
		11050
		}
	]
	uint32 StatusCode ;

	[
		read, 
		Description("Time occurred to handle the request")
	]
	uint32 ResponseTime ;

	[
		read, 
		Description("Time To Live from request")
	]
	uint32 ResponseTimeToLive ;

	[
		read, 
		Description("Inconsistent reply data")
	]
	boolean ReplyInconsistency ;

	[
		read, 
		Description("Size of the buffer returned")
	]
	uint32 ReplySize ;

	[
		read, 
		Description("Routes recorded")
	]	
	String RouteRecord [] ;

	[
		MaxLen(4096), 
		Description("Protocol Address")
	]	
	String ProtocolAddress="";

};