// Copyright (c) 1997-2003 Microsoft Corporation, All Rights Reserved

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\CIMV2")

Instance of __Win32Provider as $PRoute
{
  Name = "RouteProvider";
  ClsId = "{23b77e99-5c2d-482d-a795-62ca3ae5b673}";
  HostingModel = "NetworkServiceHost";
};

Instance of __InstanceProviderRegistration
{
  Provider = $PRoute;
  SupportsGet = TRUE;
  SupportsPut = TRUE;
  SupportsDelete = TRUE;
  SupportsEnumeration = TRUE;
  QuerySupportLevels = {"WQL:UnarySelect"};
};

Instance of __Win32Provider as $PRouteEvent
{
  Name = "RouteEventProvider";
  ClsId = "{6D7A4B0E-66D5-4ac3-A7ED-0189E8CF5E77}";
  HostingModel = "NetworkServiceHost";
};

[dynamic,provider("RouteProvider") : ToInstance,SupportsCreate,CreateBy("PutInstance"),SupportsDelete,DeleteBy("DeleteInstance"),SupportsUpdate,Locale(1033) : ToInstance,UUID("{ABEE8C61-A43F-4088-0081-9D00B3FF6545}") : ToInstance] 
class Win32_IP4RouteTable : CIM_LogicalElement
{
  [read : ToSubclass,write : ToSubclass,key : ToInstance ToSubclass DisableOverride] string Destination;
  [key : ToInstance ToSubclass DisableOverride,read : ToSubclass,write : ToSubclass] string Mask;
  [Key : ToInstance ToSubclass DisableOverride,read : ToSubclass,write : ToSubclass] sint32 InterfaceIndex;
  [Key : ToInstance ToSubclass DisableOverride,read : ToSubclass,write : ToSubclass] string NextHop;
  [read : ToSubclass,write : ToSubclass,ValueMap{"1", "2", "3", "4"} : ToSubclass] uint32 Type;
  [read : ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"} : ToSubclass] uint32 Protocol;
  [read : ToSubclass] uint32 Age;
  [read : ToSubclass,write : ToSubclass] sint32 Metric1;
  [read : ToSubclass,write : ToSubclass] sint32 Metric2;
  [read : ToSubclass,write : ToSubclass] sint32 Metric3;
  [read : ToSubclass,write : ToSubclass] sint32 Metric4;
  [read : ToSubclass,write : ToSubclass] sint32 Metric5;
  [read : ToSubclass] string Information;
};

[dynamic,provider("RouteProvider") : ToInstance,Locale(1033) : ToInstance,UUID("{2CAF4666-AC9B-45AB-00A6-AF8C537794C2}") : ToInstance,SupportsCreate,CreateBy("PutInstance"),SupportsDelete,DeleteBy("DeleteInstance")] 
class Win32_IP4PersistedRouteTable : CIM_LogicalElement
{
  [read : ToSubclass,write : ToSubclass,key : ToInstance ToSubclass DisableOverride] string Destination;
  [read : ToSubclass,write : ToSubclass,key : ToInstance ToSubclass DisableOverride] string Mask;
  [read : ToSubclass,write : ToSubclass,key : ToInstance ToSubclass DisableOverride] string NextHop;
  [read : ToSubclass,write : ToSubclass,key : ToInstance ToSubclass DisableOverride] sint32 Metric1;
};

[Dynamic,provider("RouteProvider") : ToInstance,Locale(1033) : ToInstance,UUID("{7BA1437A-C51C-421B-A359-2906AF2BDD9F}") : ToInstance] 
class Win32_ActiveRoute : CIM_LogicalIdentity
{
  [Read : ToSubclass,Override("SystemElement") : ToSubclass,MappingStrings{""} : ToSubclass] Win32_IP4RouteTable Ref SystemElement;
  [Read : ToSubclass,Override("SameElement") : ToSubclass,MappingStrings{""} : ToSubclass] Win32_IP4PersistedRouteTable Ref SameElement;
};

[Locale(1033) : ToInstance,UUID("{1C385E29-A5B4-40F0-96CF-929FC00958B}") : ToInstance] 
class Win32_IP4RouteTableEvent : __ExtrinsicEvent
{
};

Instance of __EventProviderRegistration
{
  Provider = $PRouteEvent;
  EventQueryList = {"select * from Win32_IP4RouteTableEvent"};
};
#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\CIMV2")
instance of __namespace{ name="ms_409";};
#pragma namespace("\\\\.\\Root\\CIMV2\\ms_409")

[Description("The IP4RouteTable class information governs where network data packets are routed to (e.g. usually internet packets are sent to a gateway, and local packets may be routed directly by the client's machine).  Administrators can use this information to trace problems associated with misrouted packets, and also direct a computer to a new gateway as necessary. This class deals specifically with IP4 and does not address IPX or IP6. It is only intended to model the information revealed when typing the 'Route Print' command from the command prompt. \nPlease Note: though updating instances of this class is supported, supplying property values which are invalid or unrecognized by the network protocol stack will not update successfully and the original values will persist.  An error is not guaranteed to be generated when this happens, but if one does, nothing is updated.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_IP4RouteTable : CIM_LogicalElement
{
  [key : ToInstance ToSubclass DisableOverride,Description("The Destination property contains the destination IP address for this route.") : Amended ToSubclass] string Destination;
  [key : ToInstance ToSubclass DisableOverride,Description("The Mask property contains the mask used in this entry. Masks should be logical-ANDed with the destination address before being compared to the value in the ipRouteDest field.") : Amended ToSubclass] string Mask;
  [Key : ToInstance ToSubclass DisableOverride,Description("The InterfaceIndex property contains the index value that uniquely identifies the local interface through which the next hop of this route should be reached.") : Amended ToSubclass] sint32 InterfaceIndex;
  [Key : ToInstance ToSubclass DisableOverride,Description("The NextHop property contains the IP address of the next hop of this route. (In the case of a route bound to an interface that is realized via a broadcast media, the value of this field is the agent's IP address on that interface.).") : Amended ToSubclass] string NextHop;
  [Description("The Type property reveals the type of route. The values direct(3) and indirect(4) refer to the notion of direct and indirect routing in the IP architecture. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the RouteTable object. That is, it effectively disassociates the destination identified with said entry from the route identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive tabular information from agents that corresponds to entries not currently in use. Proper interpretation of such entries requires examination of the relevant ipRouteType object.") : Amended ToSubclass,Values{"other", "invalid", "direct", "indirect"} : Amended ToSubclass] uint32 Type;
  [Description("The Protocol property reveals the routing mechanism via which this route was learned. Inclusion of values for gateway routing protocols is not intended to imply that hosts must support those protocols.") : Amended ToSubclass,Values{"other", "local", "netmgmt", "icmp", "egp", "ggp", "hello", "rip", "is-is", "es-is", "ciscoIgrp", "bbnSpfIgp", "ospf", "bgp"} : Amended ToSubclass] uint32 Protocol;
  [Description("The Age property contains the number of seconds since this route was last updated or otherwise determined to be correct. No semantics of 'too old' can be implied except through knowledge of the routing protocol by which the route was learned.") : Amended ToSubclass] uint32 Age;
  [Description("The Metric1 property contains the primary routing metric for this route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric1;
  [Description("The Metric2 property contains an alternate routing metric for this route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric2;
  [Description("The Metric3 property contains an alternate routing metric for this route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric3;
  [Description("The Metric4 property contains an alternate routing metric for this route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric4;
  [Description("The Metric5 property contains an alternate routing metric for this route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric5;
  [Description("The Information property contains a reference to MIB definitions specific to the particular routing protocol that is responsible for this route, as determined by the value specified in the route's ipRouteProto value. If this information is not present, its value should be set to the OBJECT IDENTIFIER {0 0}, which is a syntactically valid object identifier, and any conformant implementation of ASN.1 and BER must be able to generate and recognize this value.") : Amended ToSubclass] string Information;
};

[Description("The IP4PersistedRouteTable class contains IP routes that are persisted.  By default, the routes you add to the routing table aren't permanent. You lose these routes when you reboot your computer. However, if you use the command route -p add, Windows NT makes the permanent--so you won't lose the route when you reboot your computer. Persistent entries are automatically reinserted in your route table each time your computer's route table is rebuilt. Windows NT stores persistent routes in the Registry. This class deals specifically with IP4 and does not address IPX or IP6.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_IP4PersistedRouteTable : CIM_LogicalElement
{
  [key : ToInstance ToSubclass DisableOverride,Description("The Destination property contains the destination IP address for this persisted route.") : Amended ToSubclass] string Destination;
  [key : ToInstance ToSubclass DisableOverride,Description("The Mask property contains the mask used in this persisted entry. Masks should be logical-ANDed with the destination address before being compared to the value in the ipRouteDest field.") : Amended ToSubclass] string Mask;
  [key : ToInstance ToSubclass DisableOverride,Description("The NextHop property contains the IP address of the next hop of this persisted route. (In the case of a route bound to an interface that is realized via a broadcast media, the value of this field is the agent's IP address on that interface.).") : Amended ToSubclass] string NextHop;
  [key : ToInstance ToSubclass DisableOverride,Description("The Metric1 property contains the primary routing metric for this persisted route. The semantics of this metric are determined by the routing protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1.") : Amended ToSubclass] sint32 Metric1;
};

[Description("The ActiveRoute class assoctiates the current IP4 Route being used with the persisted IP route table.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_ActiveRoute : CIM_LogicalIdentity
{
  [Description("The SystemElement represents the active IP route beingused.") : Amended ToSubclass] Win32_IP4RouteTable Ref SystemElement;
  [Description("The SameElement represents persistent IP route in thisrelationship.") : Amended ToSubclass] Win32_IP4PersistedRouteTable Ref SameElement;
};

[Description("The Win32_IP4RouteTableEvent class represents IP route change events resulting from the addition, removal or modification of IP routes on the computer system.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_IP4RouteTableEvent : __ExtrinsicEvent
{
};
