-- ****************************************************************************
-- ****************************************************************************
--             Copyright(c) 2004 Mediatrix Telecom, Inc.
--  NOTICE:
--   This document contains information that is confidential and proprietary
--   to Mediatrix Telecom, Inc.
--   Mediatrix Telecom, Inc. reserves all rights to this document as well as
--   to the Intellectual Property of the document and the technology and
--   know-how that it includes and represents.
--   This publication cannot be reproduced, neither in whole nor in part in
--   any form whatsoever without written prior approval by
--   Mediatrix Telecom, Inc.
--   Mediatrix Telecom, Inc. reserves the right to revise this publication
--   and make changes at any time and without the obligation to notify any
--   person and/or entity of such revisions and/or changes.
-- ****************************************************************************
-- ****************************************************************************

MX-IPROUTING-MIB
DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32,
        Integer32
    FROM SNMPv2-SMI
        MODULE-COMPLIANCE,
        OBJECT-GROUP
    FROM SNMPv2-CONF
        MxEnableState,
        MxActivationState,
        MxIpHostName,
        MxIpAddress,
        MxIpPort,
        MxAdvancedIpPort,
        MxIpSubnetMask,
        MxDigitMap
    FROM MX-TC
        MxUInt64,
        MxFloat32,
        MxIpHostNamePort,
        MxIpAddr,
        MxIpAddrPort,
        MxIpAddrMask,
        MxUri,
        MxUrl
    FROM MX-TC2
        mediatrixServices
    FROM MX-SMI2;

ipRoutingMIB MODULE-IDENTITY
 LAST-UPDATED   "1910210000Z"
 ORGANIZATION " Mediatrix Telecom, Inc. "
 CONTACT-INFO " Mediatrix Telecom, Inc.
                4229, Garlock Street
                Sherbrooke (Quebec)
                Canada
                Phone: (819) 829-8749
                "
 DESCRIPTION  " IP routing

                The IP Routing (IpRouting) service manages the unit's IP
                routing table.
                "
 ::= { mediatrixServices 3500 }

ipRoutingMIBObjects OBJECT IDENTIFIER ::= { ipRoutingMIB 1 }

-- *****************************************************************************

-- Table:IP routes

-- *****************************************************************************

advancedIpRoutesTable OBJECT-TYPE
 SYNTAX            SEQUENCE OF AdvancedIpRoutesEntry
 MAX-ACCESS        not-accessible
 STATUS            current
 DESCRIPTION     " IP routes

                   This table shows the configured routes in the table.
                   "
 ::= { ipRoutingMIBObjects 200 }
 advancedIpRoutesEntry OBJECT-TYPE
  SYNTAX        AdvancedIpRoutesEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " A row in table IP routes. "
  INDEX         {
                  advancedIpRoutesId
                }

  ::= { advancedIpRoutesTable 1 }

 AdvancedIpRoutesEntry ::= SEQUENCE
 {
   advancedIpRoutesId               Unsigned32,
   advancedIpRoutesPriority         Unsigned32,
   advancedIpRoutesActivation       MxEnableState,
   advancedIpRoutesSourceAddress    OCTET STRING,
   advancedIpRoutesSourceLink       OCTET STRING,
   advancedIpRoutesForwardToNetwork OCTET STRING,
   advancedIpRoutesDelete           INTEGER
 }

 -- Columnar:Priority

 advancedIpRoutesPriority OBJECT-TYPE
  SYNTAX        Unsigned32 ( 1..252 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Priority

                Priority of the ip route execution.
                "
  DEFVAL        { 1 }
  ::= { advancedIpRoutesEntry 100 }

 -- Columnar:Activation

 advancedIpRoutesActivation OBJECT-TYPE
  SYNTAX        MxEnableState
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Activation

                Activates this route.

                  * Enable: Activate this route.
                  * Disable: Do not activate this route.

                "
  DEFVAL        { disable }
  ::= { advancedIpRoutesEntry 200 }

 -- Columnar:Source Address

 advancedIpRoutesSourceAddress OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Source Address

                Specifies the source IP address criteria an incoming packet
                must have to match this rule. When left empty, any source
                address matches this rule. The supported format for the source
                network is: IP address[/mask].

                When specifying a network name, it is mandatory to use the '/'
                format.

                  * Example: 192.168.1.0
                  * Example: 192.168.1.0/24
                  * Example: Lan1/

                "
  DEFVAL        { "" }
  ::= { advancedIpRoutesEntry 300 }

 -- Columnar:Source Link

 advancedIpRoutesSourceLink OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Source Link

                Specifies the source link criteria an incoming packet must have
                to match this rule. When left empty, packets received on any
                link match this rule.
                "
  DEFVAL        { "" }
  ::= { advancedIpRoutesEntry 400 }

 -- Index:Id

 advancedIpRoutesId OBJECT-TYPE
  SYNTAX        Unsigned32
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " Id

                Unique identifier of the row in the table.
                "
  ::= { advancedIpRoutesEntry 50 }

 -- Columnar:Forward To Network

 advancedIpRoutesForwardToNetwork OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Forward To Network

                Network on which the packet is forwarded.
                "
  DEFVAL        { "" }
  ::= { advancedIpRoutesEntry 500 }

 -- Row command:Delete

 advancedIpRoutesDelete OBJECT-TYPE
  SYNTAX        INTEGER { noOp(0), delete(10) }
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Delete

                Deletes this row.
                "
  DEFVAL        { noOp }
  ::= { advancedIpRoutesEntry 900 }

-- End of table:IP routes

-- *****************************************************************************

-- Table:Static IP Routes

-- *****************************************************************************

staticIpRoutesTable OBJECT-TYPE
 SYNTAX        SEQUENCE OF StaticIpRoutesEntry
 MAX-ACCESS    not-accessible
 STATUS        current
 DESCRIPTION " Static IP Routes

               This table shows the configured IPv4 static routes in the table.
               "
 ::= { ipRoutingMIBObjects 600 }
 staticIpRoutesEntry OBJECT-TYPE
  SYNTAX        StaticIpRoutesEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " A row in table Static IP Routes. "
  INDEX         {
                  staticIpRoutesIndex
                }

  ::= { staticIpRoutesTable 1 }

 StaticIpRoutesEntry ::= SEQUENCE
 {
   staticIpRoutesIndex       Unsigned32,
   staticIpRoutesLink        OCTET STRING,
   staticIpRoutesDestination OCTET STRING,
   staticIpRoutesGateway     OCTET STRING,
   staticIpRoutesDelete      INTEGER
 }

 -- Index:Index

 staticIpRoutesIndex OBJECT-TYPE
  SYNTAX        Unsigned32
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " Index

                Unique identifier of the row in the table.
                "
  ::= { staticIpRoutesEntry 100 }

 -- Columnar:Link

 staticIpRoutesLink OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Link

                Output link (interface) name. When left empty, the link is
                selected automatically.
                "
  DEFVAL        { "" }
  ::= { staticIpRoutesEntry 200 }

 -- Columnar:Destination Address

 staticIpRoutesDestination OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Destination Address

                Specifies the destination IP address criteria that an outgoing
                packet must have to match this route. The supported format for
                the destination is: IP address[/mask].

                When specifying a network as a destination, it is mandatory to
                use the '/' format.

                  * Example: 192.168.1.5 specifies an IP address as the
                    destination.
                  * Example: 192.168.1.0/24 specifies a network address as the
                    destination.

                "
  DEFVAL        { "" }
  ::= { staticIpRoutesEntry 300 }

 -- Columnar:Gateway Address

 staticIpRoutesGateway OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..51) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Gateway Address

                Specifies the IP address of the gateway used by the route.
                "
  DEFVAL        { "" }
  ::= { staticIpRoutesEntry 400 }

 -- Row command:Delete

 staticIpRoutesDelete OBJECT-TYPE
  SYNTAX        INTEGER { noOp(0), delete(10) }
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Delete

                Deletes this row.
                "
  DEFVAL        { noOp }
  ::= { staticIpRoutesEntry 500 }

-- End of table:Static IP Routes

-- Scalar:IPv4 Forwarding Enable

ipv4ForwardingEnable OBJECT-TYPE
 SYNTAX        MxEnableState
 MAX-ACCESS    read-write
 STATUS        current
 DESCRIPTION " IPv4 Forwarding Enable

               Enables/disables IPv4 forwarding.

                1. Enable: Forwarding is enabled.
                2. Disable: Forwarding is disabled.

               "
 DEFVAL        { enable }
 ::= { ipRoutingMIBObjects 800 }

-- ****************************************************************************

-- Group:Status Group

-- ****************************************************************************

statusGroup OBJECT IDENTIFIER
 ::= { ipRoutingMIBObjects 10000 }
 -- Scalar:Configuration Modified Status

 configModifiedStatus OBJECT-TYPE
  SYNTAX        INTEGER { yes(100) , no(200) }
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " Configuration Modified Status

                Shows whether or not the routing table configuration has been
                modified without being applied.

                 1. Yes: The configuration has been modified but it has not
                    been applied.
                 2. No: The IP routing service uses the configured rules.

                Use the command IpRouting.ApplyConfig to apply the
                configuration.

                "
  ::= { statusGroup 100 }

 -- ***************************************************************************
 
 -- Table:Advanced IP Routes Status

 -- ***************************************************************************
 
 advancedIpRoutesStatusTable OBJECT-TYPE
  SYNTAX        SEQUENCE OF AdvancedIpRoutesStatusEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " Advanced IP Routes Status

                This table shows the current advanced routes used by the unit.
                "
  ::= { statusGroup 200 }
  advancedIpRoutesStatusEntry OBJECT-TYPE
   SYNTAX        AdvancedIpRoutesStatusEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " A row in table Advanced IP Routes Status. "
   INDEX         {
                   advancedIpRoutesStatusId
                 }

   ::= { advancedIpRoutesStatusTable 1 }

  AdvancedIpRoutesStatusEntry ::= SEQUENCE
  {
    advancedIpRoutesStatusId               Unsigned32,
    advancedIpRoutesStatusPriority         Unsigned32,
    advancedIpRoutesStatusSourceAddress    OCTET STRING,
    advancedIpRoutesStatusSourceLink       OCTET STRING,
    advancedIpRoutesStatusForwardToNetwork OCTET STRING,
    advancedIpRoutesStatusStatus           INTEGER
  }

  -- Columnar:Priority

  advancedIpRoutesStatusPriority OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Priority

                 Unique identifier of the row in the table.
                 "
   ::= { advancedIpRoutesStatusEntry 100 }

  -- Columnar:Source Address

  advancedIpRoutesStatusSourceAddress OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Source Address

                 Source address[/mask] criteria used to match the rule.
                 "
   ::= { advancedIpRoutesStatusEntry 200 }

  -- Columnar:Source Link

  advancedIpRoutesStatusSourceLink OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Source Link

                 Source link criteria used to match the rule.
                 "
   ::= { advancedIpRoutesStatusEntry 300 }

  -- Columnar:Forward To Network

  advancedIpRoutesStatusForwardToNetwork OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Forward To Network

                 Network on which the packet is forwarded.
                 "
   ::= { advancedIpRoutesStatusEntry 350 }

  -- Columnar:Status

  advancedIpRoutesStatusStatus OBJECT-TYPE
   SYNTAX        INTEGER { disabled(100) , invalidConfig(200) , active(300) ,
                 duplicatePriority(400) }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Status

                 Status of the rule

                   * Disabled: The advanced IP route is disabled.
                   * InvalidConfig: The advanced IP route cannot be applied.
                   * Active: The advanced IP route is currently active.
                   * DuplicatePriority: The entered Priority level already
                     exists.

                 "
   ::= { advancedIpRoutesStatusEntry 400 }

  -- Index:Id

  advancedIpRoutesStatusId OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Id

                 Unique identifier of the row in the table.
                 "
   ::= { advancedIpRoutesStatusEntry 50 }

 -- End of table:Advanced IP Routes Status

 -- ***************************************************************************
 
 -- Table:IP Routes Status

 -- ***************************************************************************
 
 ipRoutesStatusTable OBJECT-TYPE
  SYNTAX        SEQUENCE OF IpRoutesStatusEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " IP Routes Status

                This table shows the current IPv4 routes used by the unit.
                "
  ::= { statusGroup 300 }
  ipRoutesStatusEntry OBJECT-TYPE
   SYNTAX        IpRoutesStatusEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " A row in table IP Routes Status. "
   INDEX         {
                   ipRoutesStatusIndex
                 }

   ::= { ipRoutesStatusTable 1 }

  IpRoutesStatusEntry ::= SEQUENCE
  {
    ipRoutesStatusIndex       Unsigned32,
    ipRoutesStatusLink        OCTET STRING,
    ipRoutesStatusDestination OCTET STRING,
    ipRoutesStatusGateway     OCTET STRING,
    ipRoutesStatusProtocol    INTEGER
  }

  -- Index:Index

  ipRoutesStatusIndex OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Index

                 Unique identifier of the row in the table.
                 "
   ::= { ipRoutesStatusEntry 100 }

  -- Columnar:Link

  ipRoutesStatusLink OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Link

                 Link (interface) ID.
                 "
   ::= { ipRoutesStatusEntry 200 }

  -- Columnar:Destination

  ipRoutesStatusDestination OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Destination

                 Destination IP address or network address.

                 When the address is a network address, the format is 'address
                 /mask length'

                   * Example: 192.168.1.25 for an IP address.
                   * Example: 192.168.1.0/24 for a network address with a mask
                     length of 24 bits.

                 "
   ::= { ipRoutesStatusEntry 300 }

  -- Columnar:Gateway Address

  ipRoutesStatusGateway OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Gateway Address

                 Specifies the gateway IP address.
                 "
   ::= { ipRoutesStatusEntry 400 }

  -- Columnar:Protocol

  ipRoutesStatusProtocol OBJECT-TYPE
   SYNTAX        INTEGER { other(100) , kernel(200) , static(300) , dhcp(400)
                 }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Protocol

                 Identifies the entity that installed the route.

                   * Dhcp: The route was installed dynamically by the DHCP
                     protocol.
                   * Static: The route was installed by the administrator of
                     the unit.
                   * Kernel: The route was installed by the operating system.
                   * Other: The route was installed by another entity.

                 "
   ::= { ipRoutesStatusEntry 500 }

 -- End of table:IP Routes Status

-- End of group:Status Group

-- ****************************************************************************

-- Group:Notification Messages Configuration

-- ****************************************************************************

notificationsGroup OBJECT IDENTIFIER
 ::= { ipRoutingMIBObjects 60010 }
 -- Scalar:Minimal Severity of Notification

 minSeverity OBJECT-TYPE
  SYNTAX        INTEGER { disable(0) , debug(100) , info(200) , warning(300) ,
                error(400) , critical (500) }
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Minimal Severity of Notification

                Sets the minimal severity to issue a notification message
                incoming from this service.

                  * Disable: No notification is issued.
                  * Debug: All notification messages are issued.
                  * Info: Notification messages with a 'Informational' and
                    higher severity are issued.
                  * Warning: Notification messages with a 'Warning' and higher
                    severity are issued.
                  * Error: Notification messages with an 'Error' and higher
                    severity are issued.
                  * Critical: Notification messages with a 'Critical' severity
                    are issued.

                "
  DEFVAL        { warning }
  ::= { notificationsGroup 100 }

-- End of group:Notification Messages Configuration

-- ****************************************************************************

-- Group:Configuration Settings

-- ****************************************************************************

configurationGroup OBJECT IDENTIFIER
 ::= { ipRoutingMIBObjects 60020 }
 -- Scalar:Need Restart

 needRestartInfo OBJECT-TYPE
  SYNTAX        INTEGER { no(0) , yes(100) }
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " Need Restart

                Indicates if the service needs to be restarted for the
                configuration to fully take effect.

                  * Yes: Service needs to be restarted.
                  * No: Service does not need to be restarted.

                Services can be restarted by using the
                Scm.ServiceCommands.Restart command.

                "
  ::= { configurationGroup 100 }

-- End of group:Configuration Settings

END
