-- ====================================================================== -- -- 3Com Corporation -- 80 Central Street -- Boxborough, MA 01719 -- (978) 264-1400 -- -- Change History: -- -- Aug 14, 1998 - tmeiczin Corrected syntax to compiled with SMICng -- May 13, 1998 - gute edits from second review. -- May 8, 1998 - gute edits from first review. -- -- Revision 1.0.0 Initially created by Flavio Fernandes -- -- ====================================================================== -- -- Interpretation of the Interface Table for Routing Policy -- -- OBJECT VALUE/USE -- -- a3ComRoutePolicyIndex A unique value, greater than zero for each -- routing policy entry. -- a3ComRoutePolicyProtocolType Protocol referred by the policy entry. -- undefined(1), ip_rip(2), ip_ospf(3), -- ip_bgp4(4), ipx_rip(5), ipx_sap(6), -- at_rtmp(7), at_kip(8), at_aurp(9). -- a3ComRoutePolicyType Type of policy. import(1), export(2). -- a3ComRoutePolicyOriginProtocol Mask used to determine which protocols -- within the specified family will be -- advertised. Only used when policy is of -- the type export. -- a3ComRoutePolicySourceAddress Address of advertising router. -- a3ComRoutePolicyRouteAddress Address being advertised. -- a3ComRoutePolicyRouteMask Mask information that goes together with -- the advertised address. -- a3ComRoutePolicyAction Command taken when the policy entry is -- matched. accept(1), reject(2). -- a3ComRoutePolicyAdjustMetric Type of operation to be performed with -- metric given. noop(1), add(2), subtract(3), -- multiply(4), divide(5), module(6). -- a3ComRoutePolicyMetric Value by which converted route metric is -- calculated. -- a3ComRoutePolicyWeight Value used to specify the order of -- precedence for policies that match the -- same route. -- lowest/default(1), (2..15)valid values, -- highest precedence(16). -- a3ComRoutePolicyExportType Type of advertisement to use when a given -- protocol can advertise routes in multiple -- ways. -- a3ComRoutePolicyRowStatus Status column for this routing policy. -- ====================================================================== A3COM-SWITCHING-SYSTEMS-ROUTEPOLICY-MIB DEFINITIONS ::= BEGIN IMPORTS DisplayString FROM RFC1213-MIB OBJECT-TYPE FROM RFC-1212 enterprises, IpAddress FROM RFC1155-SMI -- RowStatus -- FROM SNMPv2-TC ; -- The Following was removed to allow compiling with SunNet Manager -- RowStatus -- FROM SNMPv2-TC; RowStatus ::= INTEGER { -- the following two values are states: -- these values may be read or written active(1), notInService(2), -- the following value is a state: -- this value may be read, but not written notReady(3), -- the following three values are -- actions: these values may be written, -- but are never read createAndGo(4), createAndWait(5), destroy(6) } -- Textual convention a3Com OBJECT IDENTIFIER ::= { enterprises 43 } switchingSystemsMibs OBJECT IDENTIFIER ::= { a3Com 29 } a3ComSwitchingSystemsMib OBJECT IDENTIFIER ::= { switchingSystemsMibs 4 } -- Structure of MIB -- -- The objects are arranged into the following groups: -- -- 3Com switchingSystemsMibs a3ComSwitchingSystemsMib a3ComRoutePolicyGroup a3ComRoutePolicy OBJECT IDENTIFIER ::= { a3ComSwitchingSystemsMib 23 } -- The 3COM Switching Routing Policy Interface Table -- -- This table is implemented by the 3Com network devices that support -- routing policies. a3ComRoutePolicyTable OBJECT-TYPE SYNTAX SEQUENCE OF A3ComRoutePolicyEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This table is used to provide routing policy facilities. The implementation allows a list of policies to be set up and matched before a given route is learned or advertised by the router, which is the device being managed." ::= { a3ComRoutePolicy 1 } a3ComRoutePolicyEntry OBJECT-TYPE SYNTAX A3ComRoutePolicyEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An entry used to define a routing policy. A row in this table is created by setting a3ComRoutePolicyRowStatus to createAndGo(4) or createAndWait(5), indexed by the next available index (a3ComRoutePolicyNextFreeIndex). The only mandatory object in this table is the a3ComRoutePolicyProtocolType. An entry in this table is deleted by setting a3ComRoutePolicyRowStatus to destroy(6), indexed by the id of the entry about to be removed. An example of the indexing of this table is a3ComRoutePolicyType.3" INDEX { a3ComRoutePolicyIndex } ::= { a3ComRoutePolicyTable 1 } A3ComRoutePolicyEntry ::= SEQUENCE { a3ComRoutePolicyIndex INTEGER, a3ComRoutePolicyProtocolType INTEGER, a3ComRoutePolicyType INTEGER, a3ComRoutePolicyOriginProtocol INTEGER, a3ComRoutePolicySourceAddress DisplayString, a3ComRoutePolicyRouteAddress DisplayString, a3ComRoutePolicyRouteMask DisplayString, a3ComRoutePolicyAction INTEGER, a3ComRoutePolicyAdjustMetric INTEGER, a3ComRoutePolicyMetric INTEGER, a3ComRoutePolicyWeight INTEGER, a3ComRoutePolicyExportType INTEGER, a3ComRoutePolicyRowStatus RowStatus } a3ComRoutePolicyIndex OBJECT-TYPE SYNTAX INTEGER (1..4294967295) ACCESS read-only STATUS mandatory DESCRIPTION "Unique identifier of a row in the policy table. The actual number of rows that can be created on any particular device depends on the memory and processing resources available at the time." ::= { a3ComRoutePolicyEntry 1 } a3ComRoutePolicyProtocolType OBJECT-TYPE SYNTAX INTEGER { undefined(1), ip-rip(2), ip-ospf(3), ip-bgp4(4), ipx-rip(5), ipx-sap(6), at-rtmp(7), at-kip(8), at-aurp(9) } ACCESS read-write STATUS mandatory DESCRIPTION "This mandatory object defines the protocol in which a policy will be used. Once such protocol family is defined, the agent will use this information to parse the source, route, as well as all other objects that apply. Once a policy entry is successfully made active(1), this object may not be modified. If the protocol chosen is not supported by the agent or is set to undefined(1), an error is returned." DEFVAL { undefined } ::= { a3ComRoutePolicyEntry 2 } a3ComRoutePolicyType OBJECT-TYPE SYNTAX INTEGER { import(1), export(2) } ACCESS read-write STATUS mandatory DESCRIPTION "This object specifies what type of policy this is. The type import regards to ingress -- where a route advertised externally is learned by the device managed. And the type export regards to egress -- where a route is advertised by the device managed. Note that the type of policy also mandates which fields are to be parsed upon entry activation. This object can be no longer modified once the entry is activated." DEFVAL { import } ::= { a3ComRoutePolicyEntry 3 } a3ComRoutePolicyOriginProtocol OBJECT-TYPE SYNTAX INTEGER (0..63) ACCESS read-write STATUS mandatory DESCRIPTION "This object is only used when a3ComRoutePolicyType is set to export(2). It makes up a mask of protocols, within the protocol suite, that matches the policy entry. If set to zero, the mask will be interpreted as a match, independent of how the route was learned. A value of 1 stands for matches on routes directly attached. A value of 2 stands for matches on routes that were statically defined in the routing table. All other values in the mask carry different meaning, depending on the current value of a3ComRoutePolicyProtocolType. The following tables summarizes such values: ------------------------------------- Any Protocol Family ------------------------------------- 00 | all (route learned by any way) 01 | directly attached route 02 | statically defined route ------------------------------------- ------------------------------------- IP | IPX | APPLETALK ------------------------------------- 04 | rip | rip | rtmp 08 | ospf | sap | kip 16 | bgp4 | unused | aurp 32 | unused | unused | unused ------------------------------------- Table 1: Route policy origin protocol mask The value of this object can be modified at any time. Examples: 1) When exporting from any protocol suite, any route learned in that suite will be advertised if a3ComRoutePolicyOriginProtocol is set to zero and the other preconditions apply. 2) When exporting from any protocol suite, only routes that were learned from static definition or that are directly attached would be advertised if a3ComRoutePolicyOriginProtocol is set to 3 (mask of 1 + 2) and the other preconditions apply. 3) When exporting from ip_rip(2), only routes that were learned from rip or bgp4 advertisements would be given out if a3ComRoutePolicyOriginProtocol is set to 20 (mask of 4 + 16) and the other preconditions apply. 4) If at example 3 we had a3ComRoutePolicyProtocolType set to at_rtmp(7) instead of ip_rip(2), the same value (i.e. 20) would indicate that advertisements under appleTalk rtmp would only include routes learned from rtmp(4) or aurp(16)." DEFVAL { 0 } ::= { a3ComRoutePolicyEntry 4 } a3ComRoutePolicySourceAddress OBJECT-TYPE SYNTAX DisplayString (SIZE(0..50)) ACCESS read-write STATUS mandatory DESCRIPTION "This DisplayString is the network address of the gateway to the route address. Note that when the policy is of the type import(1), this object will correspond to a neighboring router address, and for export(2) policies, this object will most likely correspond to the address of the managed device. The following formats can be used for this object: IP cccc - ipAddress MIB IP nnn.nnn.nnn.nnn - decimal dotted format IPX AABBCCDD:AABBCCDDEEFF - network : node AppleTalk n[...].n[...] - dotted notation Also note that each format described above must be followed according to the protocol family set in the a3ComRoutePolicyProtocolType object. When using the ip family, the agent will be smart enough to understand either one of the two formats listed. Note then that the object a3ComRoutePolicyProtocolType must have been set before this object gets set in order to allow the agent to properly parse its contents. If a3ComRoutePolicySourceAddress is set to empty, which is the default value, the matching process will be independent from the address of the router that is advertising. The value of this object can be modified at any time." ::= { a3ComRoutePolicyEntry 5 } a3ComRoutePolicyRouteAddress OBJECT-TYPE SYNTAX DisplayString (SIZE(0..50)) ACCESS read-write STATUS mandatory DESCRIPTION "This DisplayString is the network address of the route to which this policy applies. Such address will be known when a route advertisement is received by the device being managed. The following formats can be used for this object: IP cccc - ipAddress MIB IP nnn.nnn.nnn.nnn - decimal dotted format IPX AABBCCDD:AABBCCDDEEFF - network : node AppleTalk n[...].n[...] - dotted notation Note that each format described above must be followed according to the protocol family set in the a3ComRoutePolicyProtocolType object. When using the ip family, the agent will be smart enough to understand either one of the two formats listed. When performing an snmp get, the agent will unconditionally return this value using the decimal dotted format if such is an ip address. Note then that the object a3ComRoutePolicyProtocolType must have been set before this object gets set in order to allow the agent to properly parse its contents. If a3ComRoutePolicyRouteAddress is set to empty, which is the default value, the matching process will be independent from the route. The value of this object can be modified at any time." ::= { a3ComRoutePolicyEntry 6 } a3ComRoutePolicyRouteMask OBJECT-TYPE SYNTAX DisplayString (SIZE(0..16)) ACCESS read-write STATUS mandatory DESCRIPTION "This DisplayString is the network mask of the route to which this policy applies. The following formats can be used: IP cccc - ipAddress MIB IP nnn.nnn.nnn.nnn - decimal dotted format The agent will be smart enough to understand either one of the two formats listed, based on the size of the argument given. When performing an snmp get, the agent will unconditionally return this value using the decimal dotted format. a3ComRoutePolicyRouteMask will be ignored if the protocol family is not ip or if a3ComRoutePolicyRouteAddress is empty. On the other hand, an error will be returned if an invalid mask is existent upon entry activation. The value of this object can be modified at any time." ::= { a3ComRoutePolicyEntry 7 } a3ComRoutePolicyAction OBJECT-TYPE SYNTAX INTEGER { accept(1), reject(2) } ACCESS read-write STATUS mandatory DESCRIPTION "This object specifies whether the protocol rejects a route that matches the policy or accepts it. a3ComRoutePolicyAction can be modified at any time." DEFVAL { accept } ::= { a3ComRoutePolicyEntry 8 } a3ComRoutePolicyAdjustMetric OBJECT-TYPE SYNTAX INTEGER { noop(1), add(2), subtract(3), multiply(4), divide(5), module(6) } ACCESS read-write STATUS mandatory DESCRIPTION "This object defines what type of operation that can be additionally performed at a route metric. Note that this object will be always ignored if a3ComRoutePolicyAction is of the type reject(2). Furthermore, a3ComRoutePolicyAdjustMetric will also be ignored in occasions where a3ComRoutePolicyAction is of the type accept(1) and the object a3ComRoutePolicyMetric is set to zero. a3ComRoutePolicyAdjustMetric can be modified at any time." DEFVAL { noop } ::= { a3ComRoutePolicyEntry 9 } a3ComRoutePolicyMetric OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-write STATUS mandatory DESCRIPTION "This object is the value by which an additional adjustment can be performed on a matched route metric. The actual operation performed is defined by a3ComRoutePolicyAdjustMetric. If a3ComRoutePolicyMetric is zero, no metric adjustments are made. If a3ComRoutePolicyAdjustMetric is set to noop(1) and a3ComRoutePolicyMetric is a non-zero value, such value will be unconditionally used as the route metric. Note that the a3ComRoutePolicyMetric is only used when a3ComRoutePolicyAction is set to accept(1). If this object is set with a value outside its scope, which varies depending on a3ComRoutePolicyProtocolType, the lowest or highest value will be used instead and no error will be returned. This object can be modified at any time." DEFVAL { 0 } ::= { a3ComRoutePolicyEntry 10 } a3ComRoutePolicyWeight OBJECT-TYPE SYNTAX INTEGER (1..16) ACCESS read-write STATUS mandatory DESCRIPTION "This object assigns an administrative weight to the policy entry. A policy with a higher value takes precedence over a policy with a lower value. Usage of a3ComRoutePolicyWeight applies when an order of precedence is desired within multiple policies that match a common route. This object can be modified at any time." DEFVAL { 1 } ::= { a3ComRoutePolicyEntry 11 } a3ComRoutePolicyExportType OBJECT-TYPE SYNTAX INTEGER { ip-ospf-type1(1), ip-ospf-type2(2), default(3) } ACCESS read-write STATUS mandatory DESCRIPTION "This object describes which type of route advertisement the router will use when a given protocol can export routes in multiple ways. In situations when there is only one way routes can be exported, a3ComRoutePolicyExportType will be ignored. If a3ComRoutePolicyExportType is set to a value not supported by the router or just doesn't match the protocol family being used, the device being managed will automatically use the default advertisement type and no error will be returned." DEFVAL { default } ::= { a3ComRoutePolicyEntry 12 } a3ComRoutePolicyRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "The status column for a routing policy. This object can be set to: active(1), createAndGo(4), createAndWait(5), destroy(6) The following values may be read: inactive(2) active(1) A new policy entry in this table is created by setting this object to createAndGo(4) or createAndWait(5), indexed by the next available index (a3ComRoutePolicyNextFreeIndex). An error will be returned when an existing policy entry is set to createAndGo(4) or createAndWait(5), and that is a mechanism to detect racing conditions. Setting this object to active(1) causes the agent to attempt to commit to row based on the contents of the object in the row. If all necessary information is present in the row and the values are acceptable to the agent, the agent will change the status to active(1). If any of the necessary objects are not available or result in error, the agent will reject the request. Once a policy entry is made active(1), most fields can still be modified. Setting this object to destroy(6) will remove the entry." ::= { a3ComRoutePolicyEntry 13 } a3ComRoutePolicyNextFreeIndex OBJECT-TYPE SYNTAX INTEGER (1..4294967295) ACCESS read-only STATUS mandatory DESCRIPTION "The value of the next available policy entry. This object is automatically increased once a new policy is successfully made active(1). A new policy entry in a3ComRoutePolicyTable is created by setting a3ComRoutePolicyRowStatus to createAndGo(4) or createAndWait(5), indexed by the value of this object." ::= { a3ComRoutePolicy 2 } a3ComRoutePolicyIpIfTable OBJECT-TYPE SYNTAX SEQUENCE OF A3ComRoutePolicyIpIfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This table is used to provide a list of ip interfaces under a given policy. Thus, the list generated under this table only applies to policies under the ip suite. Furthermore, the current mib specification resorts only two conditions: 1) a3ComRoutePolicyProtocolType set to ip_rip(2) 2) a3ComRoutePolicyProtocolType set to ip_ospf(3), a3ComRoutePolicyType is set to export(2) and the route about to be advertised is from ospf's direct policy. In any condition other than these two, this table will simply be ignored and no errors are returned, even if there are entries defined. In situations where either one of the conditions listed above is true and there are no entries in this table for the policy it is indexed by, any interface will satisfy. In other words, an empty list stands for an unconditional match on the interface, given all other preconditions apply. If one or more entries in this table are present and the policy is of one of the two types listed above, a route will be advertised/learned (or not, depending on a3ComRoutePolicyAction) only through the interfaces listed." ::= { a3ComRoutePolicy 3 } a3ComRoutePolicyIpIfEntry OBJECT-TYPE SYNTAX A3ComRoutePolicyIpIfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An entry used to define an ip interface under a policy. A row in this table is created by setting a3ComRoutePolicyIpIfRowStatus with createAndGo(4), indexed by the id of an existing a3ComRoutePolicyEntry and the address of an existing ip interface at the device being managed. An entry in this table is deleted in similar way, except that the value set is destroy(6) instead of createAndGo(4). Entries in this table can be added or removed at any time. If an invalid address or policy index is given, an error is returned. An example of the indexing of this table is a3ComRoutePolicyIpIfRowStatus.3.158.101.112.205 which would stand for a3ComRoutePolicyEntry of index 3 with the ip address 158.101.112.205" INDEX { a3ComRoutePolicyIpIfIndex, a3ComRoutePolicyIpIfAddressIndex } ::= { a3ComRoutePolicyIpIfTable 1 } A3ComRoutePolicyIpIfEntry ::= SEQUENCE { a3ComRoutePolicyIpIfIndex INTEGER, a3ComRoutePolicyIpIfAddressIndex IpAddress, a3ComRoutePolicyIpIfRowStatus RowStatus } a3ComRoutePolicyIpIfIndex OBJECT-TYPE SYNTAX INTEGER (1..4294967295) ACCESS read-only STATUS mandatory DESCRIPTION "The identifier of a policy entry under a3ComRoutePolicyTable that this entry belongs to. Note that it is possible to have multiple entries in this table (a3ComRoutePolicyIpIfTable) with the same a3ComRoutePolicyIpIfIndex, and that is why this table is indexed by both a3ComRoutePolicyIpIfIndex and a3ComRoutePolicyIpIfAddressIndex." ::= { a3ComRoutePolicyIpIfEntry 1 } a3ComRoutePolicyIpIfAddressIndex OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The address of an existing ip interface at the device being managed." ::= { a3ComRoutePolicyIpIfEntry 2 } a3ComRoutePolicyIpIfRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "The status column for an ip interface of a routing policy. This object can be set to: createAndGo(4), destroy(6) The following values may be read: active(1) A new ip interface entry in this table is created by setting this object to createAndGo(4), indexed by the id of an existing a3ComRoutePolicyEntry and the address of an existing ip interface at the device being managed. An error will be returned if any of the fields listed above contain invalid value. Once created successfully, this entry will automatically be made active(1). An entry in this table is deleted in similar way, except that the value set is destroy(6) instead of createAndGo(4). If a new entry, for instance, was to be created in this table for the policy 2 with ip interface address of 158.101.112.205, this object would be set to createAndGo(4) with the oid a3ComRoutePolicyIpIfRowStatus.3.158.101.112.205" ::= { a3ComRoutePolicyIpIfEntry 3 } END -- Usage Examples -- ============== -- The following examples iterate the instance values for policy entries. -- These examples are kept simple to make them more understandable. -- If an object is not listed under a given example, assume that object -- is irrelevant and contains the default value. -- -- Example 1: An import (a.k.a. ingress) policy entry that will force the -- router to reject any OSPF route advertisement it receives from neighbor -- router that has the address 129.63.1.1 Let's also say that this entry -- has index 3 under the a3ComRoutePolicyTable. -- -- Routing policy entry a3ComRoutePolicyTable -- Route policy entry index 3. -- a3ComRoutePolicyProtocolType.3 == ip_ospf(3) -- a3ComRoutePolicyType.3 == import(1) -- a3ComRoutePolicySourceAddress.3 == "129.63.1.1" -- a3ComRoutePolicyAction.3 == reject(2) -- -- -- Example 2: An export (a.k.a. egress) policy entry that will force the -- router to make all rip advertisements with the actual metric plus 6. -- Let's have the policy restricting the advertisements to be only routes -- that were learned from static, bgp4 or that are directly attached. For -- example 2, let's also say that this entry has index 2 under the -- a3ComRoutePolicyTable. -- -- Routing policy entry a3ComRoutePolicyTable -- Route policy entry index 2. -- a3ComRoutePolicyProtocolType.2 == ip_rip(2) -- a3ComRoutePolicyType.2 == export(2) -- a3ComRoutePolicyOriginProtocol.2 == 19 (see table 1) -- a3ComRoutePolicyAction.2 == accept(1) -- a3ComRoutePolicyAdjustMetric.2 == add(2) -- a3ComRoutePolicyMetric.2 == 6 -- -- -- Example 3: For this example, let's reuse what was given on previous -- example and add a further restriction. Assume that the router being -- managed has 3 ip interfaces defined, and we only want the route -- advertisements of example 2 to come out of 2 of them. In order to do -- that, we would define two entries under the a3ComRoutePolicyIpIfTable. -- Note that in situations when this table is empty the agent will behave -- as if all ip interfaces were listed. -- -- Assume that the following ip interfaces are defined in the box: -- 158.101.112.254, 158.101.117.254, 158.101.160.254 And In this list, -- the last interface is the one we want filtered. -- -- Routing policy ip interface entry a3ComRoutePolicyIpIfTable -- Route policy entry index 2.158.101.112.254 -- a3ComRoutePolicyIpIfRowStatus.2.158.101.112.254 == createAndGo(4) -- Route policy entry index 2.158.101.117.254 -- a3ComRoutePolicyIpIfRowStatus.2.158.101.117.254 == createAndGo(4)