-- ****************************************************************************
-- ****************************************************************************
--             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-SIPPROXY-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;

sipProxyMIB 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  " SIP Proxy

                The SIP Proxy (SipProxy) service is used to add local
                survivability for local endpoints and SIP phones.
                "
 ::= { mediatrixServices 4600 }

sipProxyMIBObjects OBJECT IDENTIFIER ::= { sipProxyMIB 1 }

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

-- Group:Status Group

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

statusGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 100 }
 -- Scalar:MonitoringState

 monitoringState OBJECT-TYPE
  SYNTAX        INTEGER { destinationIsUp(100) , destinationIsDown(200) ,
                inactive(300) , unknown(400) }
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " MonitoringState

                Indicates the current monitoring status. A SIP server is
                monitored to determine if it is usable. Monitoring is
                performed through the SIP OPTIONS method.

                  * DestinationIsUp: The destination SIP server correctly
                    responds and is considered to be alive.
                  * DestinationIsDown: The destination SIP server fails to
                    correctly respond. The destination SIP server is
                    considered to be down.
                  * Inactive: The monitoring is not in use.
                  * Unknown: The initial response to monitoring has not yet
                    been received. This is the initial state when monitoring
                    is used.

                "
  ::= { statusGroup 100 }

 -- Scalar:ProxyStatus

 proxyStatus OBJECT-TYPE
  SYNTAX        INTEGER { starting(100) , running(200) ,
                runningInSurvivability(300) , stopping(400) ,
                errorPortAlreadyInUse(500) ,
                errorWaitingForTimeSynchronization(600) , errorInternal(700) }
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " ProxyStatus

                The SipProxy service current status.

                  * Starting: The SIP proxy is starting: it cannot listen for
                    incoming SIP traffic or send SIP traffic.
                  * Running: The SIP proxy acts in transparent mode: it does
                    not respond to REGISTER requests and it transparently
                    forwards SIP messages to their normal routes. Registration
                    Throttling can be activated in that state.
                  * RunningInSurvivability: The SIP proxy acts in
                    survivability mode: it responds to REGISTER requests and
                    it routes SIP messages.
                  * Stopping: The SIP proxy is stopping: it cannot listen for
                    incoming SIP traffic or send SIP traffic.
                  * ErrorPortAlreadyInUse: The SIP proxy cannot open its IP
                    port because the port is already used by a SIP gateway.
                  * ErrorWaitingForTimeSynchronization: The SIP proxy is
                    started but it cannot open the SIP TLS port because the
                    real-time clock is not synchronised. This generally occurs
                    when the SNTP server is not set or is unreachable.
                  * ErrorInternal: The SIP proxy cannot start because of an
                    internal error. Refer to the release notes or contact a
                    technical support specialist.

                "
  ::= { statusGroup 200 }

 -- Scalar:Number of Active Calls

 nbActiveCalls OBJECT-TYPE
  SYNTAX        Unsigned32
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION " Number of Active Calls

                The number of active calls currently handled by the SIP proxy.

                The maximum number of active calls is platform-dependent.

                "
  ::= { statusGroup 250 }

 -- ***************************************************************************
 
 -- Table:TLS Persistent Connection Status

 -- ***************************************************************************
 
 tlsPersistentConnectionStatusTable OBJECT-TYPE
  SYNTAX        SEQUENCE OF TlsPersistentConnectionStatusEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " TLS Persistent Connection Status

                This table holds the status of the TLS persistent connections.
                "
  ::= { statusGroup 300 }
  tlsPersistentConnectionStatusEntry OBJECT-TYPE
   SYNTAX        TlsPersistentConnectionStatusEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " A row in table TLS Persistent Connection Status. "
   INDEX         {
                   tlsPersistentConnectionStatusId
                 }

   ::= { tlsPersistentConnectionStatusTable 1 }

  TlsPersistentConnectionStatusEntry ::= SEQUENCE
  {
    tlsPersistentConnectionStatusId               Unsigned32,
    tlsPersistentConnectionStatusLocalPort        MxAdvancedIpPort,
    tlsPersistentConnectionStatusRemoteHost       OCTET STRING,
    tlsPersistentConnectionStatusRemoteHostIpAddr OCTET STRING,
    tlsPersistentConnectionStatusState            INTEGER
  }

  -- Index:Index

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

                 Unique identifier of the row.
                 "
   ::= { tlsPersistentConnectionStatusEntry 100 }

  -- Columnar:Local Port

  tlsPersistentConnectionStatusLocalPort OBJECT-TYPE
   SYNTAX        MxAdvancedIpPort
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Local Port

                 Local port used by the TLS persistent connection.
                 "
   ::= { tlsPersistentConnectionStatusEntry 300 }

  -- Columnar:Remote Host

  tlsPersistentConnectionStatusRemoteHost OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Remote Host

                 The remote host used to establish the TLS persistent
                 connection. The remote host can be a host name or an IP
                 address of the proxy, outbound proxy, or registrar.
                 "
   ::= { tlsPersistentConnectionStatusEntry 400 }

  -- Columnar:Remote Host Ip Address

  tlsPersistentConnectionStatusRemoteHostIpAddr OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Remote Host Ip Address

                 The resolved IP address of the remote host used to establish
                 the TLS persistent connection.
                 "
   ::= { tlsPersistentConnectionStatusEntry 450 }

  -- Columnar:State

  tlsPersistentConnectionStatusState OBJECT-TYPE
   SYNTAX        INTEGER { up(100) , down(200) , waitingShutdown(300) ,
                 waitingUp(400) }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " State

                 The current state of the TLS persistent connection.

                   * Up: The TLS connection is established and ready to be
                     used.
                   * Down: The TLS connection is not established.
                   * WaitingShutdown: The TLS connection is established but in
                     a graceful shutdown.
                   * WaitingUp: The TLS connection is established but not yet
                     ready to be used.

                 "
   ::= { tlsPersistentConnectionStatusEntry 500 }

 -- End of table:TLS Persistent Connection Status

-- End of group:Status Group

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

-- Group:Proxy Group

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

proxyGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 200 }
 -- Scalar:Survivability Mode

 survivabilityMode OBJECT-TYPE
  SYNTAX        INTEGER { automatic(100) , alwaysOn(200) , disabled(300) }
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Survivability Mode

                Survivability mode executed by the SIP proxy.

                  * Automatic: The SIP proxy applies the normal survivability
                    strategy, i.e. it uses monitoring to determine if the SIP
                    server is up or down.
                  * AlwaysOn: The SIP proxy always acts as if the SIP server
                    is down. Useful for debugging.
                  * Disabled: The SIP proxy always acts as if the SIP server
                    is up. Useful for debugging.

                Note that this parameter does not affect whether monitoring is
                performed or not.

                "
  DEFVAL        { automatic }
  ::= { proxyGroup 100 }

 -- Scalar:Configuration Modified Status

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

                Indicates that some configuration changes need the
                ApplyConfiguration command to be executed in order to take
                effect or to be validated. Restarting the service will also
                apply these changes.

                  * Yes: The configuration has been modified but has not been
                    applied.
                  * No: The configuration has not been modified.

                Use the ApplyConfiguration command to apply the configuration.

                "
  ::= { proxyGroup 300 }

 -- Scalar:Configuration Applied Status

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

                Indicates that the configuration changes were applied or not.

                  * Yes: Configuration changes were applied successfully.
                  * No: Configuration changes not applied because of errors.

                "
  ::= { proxyGroup 400 }

-- End of group:Proxy Group

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

-- Group:Network Group

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

networkGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 300 }
 -- Scalar:Network Interface

 networkInterface OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(1..50) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Network Interface

                The network on which the SIP proxy listens for incoming SIP
                traffic and sends SIP traffic.
                "
  DEFVAL        { "Uplink" }
  ::= { networkGroup 100 }

 -- Scalar:SIP Port

 port OBJECT-TYPE
  SYNTAX        MxAdvancedIpPort
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " SIP Port

                Port on which the SIP proxy listens for incoming unsecure SIP
                traffic.

                This is used only when UDP and/or TCP transports are enabled.

                If set to 0, the unit uses the default SIP port.

                "
  DEFVAL        { 0 }
  ::= { networkGroup 200 }

 -- Scalar:SIP Secure Port

 securePort OBJECT-TYPE
  SYNTAX        MxAdvancedIpPort
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " SIP Secure Port

                Port on which the SIP proxy listens for incoming secure SIP
                traffic.

                This is used only when the TLS transport is enabled.

                If set to 0, the unit uses the default SIP secure port.

                "
  DEFVAL        { 0 }
  ::= { networkGroup 300 }

-- End of group:Network Group

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

-- Group:Register Group

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

registerGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 400 }
 -- Scalar:Register Contact Override

 contactOverrideEnable OBJECT-TYPE
  SYNTAX        MxEnableState
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Register Contact Override

                Defines if the SIP proxy should modify the Contact header of
                REGISTER requests.

                  * Disabled: Act as a transparent proxy. Generally not
                    recommended in TLS.
                  * Enabled: Modify the Contact header of REGISTER requests
                    with the IP address and port of the proxy, so inbound
                    requests are routed back to the proxy. Also adds an alias
                    in the Contact URI for tracking purposes.

                "
  DEFVAL        { enable }
  ::= { registerGroup 50 }

 -- Scalar:Endpoint Survivability Expiration

 endpointSurvivabilityExpiration OBJECT-TYPE
  SYNTAX        Unsigned32 ( 10..86400 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Endpoint Survivability Expiration

                Configures the maximum registration expiration delay, i.e. the
                EXPIRES value returned by the SIP proxy registrar in the 200
                OK responses.

                This value is expressed in seconds (s).

                This parameter applies only when the survivability mode is
                active, when the SIP proxy's internal registrar replies to the
                REGISTER requests.

                  * If the value included in the REGISTER is lower or equal to
                    the value of this parameter, the value included in the
                    REGISTER is used.
                  * Otherwise, the value defined by the
                    EndpointSurvivabilityExpiration parameter is used.

                Note: Using expiration values smaller than 32 seconds may
                cause conflicts with the SIP retransmission timeouts. It is
                not recommended to use expiration values smaller than 32
                seconds unless the network environment requires very few
                retransmissions or the retransmission timeouts of the devices
                are set to short values.

                "
  DEFVAL        { 90 }
  ::= { registerGroup 100 }

 -- Scalar:Relayed Throttling Expiration

 relayedThrottlingExpiration OBJECT-TYPE
  SYNTAX        Unsigned32 ( 0..0 | 10..86400 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Relayed Throttling Expiration

                Configures the expiration value in the REGISTERs relayed to
                the external registrar when Registration Throttling is used.

                This value is expressed in seconds (s).

                A value of 0 has the effect proposing no expiration value to
                the registrar during Registration Throttling. Any expiration
                value present in the REGISTER is removed before relaying it to
                the registrar.

                The value of the RelayedThrottlingExpiration should be at
                least twice the value of the EndpointThrottlingExpiration
                parameter otherwise Registration Throttling is ineffective.

                The expiration value returned by the registrar in the 200 OK
                response always has precedence over the expiration value that
                we propose in the REGISTER requests sent to the registrar

                Note: Using expiration values smaller than 32 seconds may
                cause conflicts with the SIP retransmission timeouts. It is
                not recommended to use expiration values smaller than 32
                seconds unless the network environment requires very few
                retransmissions or the retransmission timeouts of the devices
                are set to short values.

                "
  DEFVAL        { 0 }
  ::= { registerGroup 200 }

 -- Scalar:Endpoint Throttling Expiration

 endpointThrottlingExpiration OBJECT-TYPE
  SYNTAX        Unsigned32 ( 0..0 | 10..3600 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Endpoint Throttling Expiration

                Configures the maximum registration expiration on the endpoint
                side when Registration Throttling is used.

                This value is expressed in seconds (s).

                A value of 0 disables Registration Throttling.

                The value of the RelayedThrottlingExpiration should be at
                least twice the value of the EndpointThrottlingExpiration
                parameter otherwise Registration Throttling is ineffective.

                This parameter applies only when the Registration Throttling
                replies to REGISTER requests.

                  * If the expiration value included in the REGISTER is lower
                    or equal to the value of this parameter, the value
                    included in the REGISTER is used.
                  * Otherwise, the value defined by the
                    EndpointThrottlingExpiration parameter is used.
                  * The expiration value returned by the registrar in the 200
                    OK has no impact on the expiration used on the endpoint
                    side.

                Note: Using expiration values smaller than 32 seconds may
                cause conflicts with the SIP retransmission timeouts. It is
                not recommended to use expiration values smaller than 32
                seconds unless the network environment requires very few
                retransmissions or the retransmission timeouts of the devices
                are set to short values.

                "
  DEFVAL        { 120 }
  ::= { registerGroup 300 }

 -- ***************************************************************************
 
 -- Group:Registration Cache Group

 -- ***************************************************************************
 
 registrationCacheGroup OBJECT IDENTIFIER
  ::= { registerGroup 400 }
  -- Scalar:Registration Cache Search Name

  registrationCacheSearchName OBJECT-TYPE
   SYNTAX        OCTET STRING
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Registration Cache Search Name

                 The name pattern to search in Aor and Contact from the
                 registration database used to populate the
                 RegistrationCacheSearchResult table when using the
                 SearchRegistration command.
                 "
   ::= { registrationCacheGroup 100 }

  -- Scalar:Registration Cache Search Sort

  registrationCacheSearchSort OBJECT-TYPE
   SYNTAX        INTEGER { aor(100) , contact(200) , receivedTime(300) ,
                 endpointExpiration(400) , registrarExpiration(500) , unsorted
                 (1000) }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Registration Cache Search Sort

                 The sort order applied to RegistrationCacheSearchResult table
                 when using the SearchRegistration command.

                   * Aor: Address of record in the REGISTER.
                   * Contact: Contact in the REGISTER.
                   * ReceivedTime: Time at which the registration was received.
                   * EndpointExpiration: Time at which the endpoint-side
                     registration expires.
                   * RegistrarExpiration: Time at which the registrar-side
                     registration expires.
                   * Unsorted: Internal cache order.

                 "
   DEFVAL        { receivedTime }
   ::= { registrationCacheGroup 200 }

  -- ***************************************************************************
  
  -- Table:Registration Cache Search Result

  -- ***************************************************************************
  
  registrationCacheSearchResultTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF RegistrationCacheSearchResultEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " Registration Cache Search Result

                 This table contains the registration cache entries filtered by
                 the SearchRegistrationCache command.
                 "
   ::= { registrationCacheGroup 300 }
   registrationCacheSearchResultEntry OBJECT-TYPE
    SYNTAX        RegistrationCacheSearchResultEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION " A row in table Registration Cache Search Result. "
    INDEX         {
                    registrationCacheSearchResultId
                  }

    ::= { registrationCacheSearchResultTable 1 }

   RegistrationCacheSearchResultEntry ::= SEQUENCE
   {
     registrationCacheSearchResultId                  Unsigned32,
     registrationCacheSearchResultAor                 OCTET STRING,
     registrationCacheSearchResultContact             OCTET STRING,
     registrationCacheSearchResultReceivedTime        OCTET STRING,
     registrationCacheSearchResultEndpointExpiration  OCTET STRING,
     registrationCacheSearchResultRegistrarExpiration OCTET STRING,
     registrationCacheSearchResultRegisteredTo        INTEGER
   }

   -- Index:Id

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

                  Unique numerical identifier for a registration search result.
                  "
    ::= { registrationCacheSearchResultEntry 100 }

   -- Columnar:Address of Record

   registrationCacheSearchResultAor OBJECT-TYPE
    SYNTAX        OCTET STRING
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION " Address of Record

                  The Address of Record, in URI format, present in the
                  REGISTER.

                  For example: sip:alice@example.com

                  This value is taken from the REGISTER.

                  "
    ::= { registrationCacheSearchResultEntry 200 }

   -- Columnar:

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

                  The Contact, in URI format, present in the REGISTER.

                  For example: sip:5551212@192.168.11.23:5060

                  This value is taken from the REGISTER.

                  "
    ::= { registrationCacheSearchResultEntry 300 }

   -- Columnar:Received Time

   registrationCacheSearchResultReceivedTime OBJECT-TYPE
    SYNTAX        OCTET STRING
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION " Received Time

                  Time at which the registration was received. Expressed as the
                  local time computed from the Time Zone defined in the
                  Hoc.StaticTimeZone parameter.

                  Format is DD/MM/YYYY hh:mm:ss

                  "
    ::= { registrationCacheSearchResultEntry 400 }

   -- Columnar:Endpoint Expiration

   registrationCacheSearchResultEndpointExpiration OBJECT-TYPE
    SYNTAX        OCTET STRING
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION " Endpoint Expiration

                  Time at which the registration expires on the endpoint side.
                  Expressed as a local time computed from the Time Zone defined
                  in the Hoc.StaticTimeZone parameter.

                  Format is DD/MM/YYYY hh:mm:ss

                  The expiration time of the endpoint side can differ from the
                  expiration time of the registrar side. This happens:

                    * if Registration Throttling is enabled and the expiration
                      delay is shorter on the endpoint side, or
                    * if the system is in survivability.

                  "
    ::= { registrationCacheSearchResultEntry 500 }

   -- Columnar:RegistrarEndpoint Expiration

   registrationCacheSearchResultRegistrarExpiration OBJECT-TYPE
    SYNTAX        OCTET STRING
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION " RegistrarEndpoint Expiration

                  Time at which the registration expires on the registrar side.
                  Expressed as a local time computed from the Time Zone defined
                  in the Hoc.StaticTimeZone parameter.

                  Format is DD/MM/YYYY hh:mm:ss

                  The expiration time of the endpoint side can differ from the
                  expiration time of the registrar side. This happens:

                    * if Registration Throttling is enabled, where the
                      expiration delay is shorter on the endpoint side, or
                    * if the system is in survivability.

                  When the SipProxy service state switches to
                  RunningInSurvivability, all the registrations on the
                  registrar side are overridden at the time the switch
                  occurred. This ensures that endpoint registrations are
                  quickly refreshed on the registrar side after the system
                  exits from survivability mode.

                  "
    ::= { registrationCacheSearchResultEntry 550 }

   -- Columnar:Registered To

   registrationCacheSearchResultRegisteredTo OBJECT-TYPE
    SYNTAX        INTEGER { normal(100) , local(200) }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION " Registered To

                  Registrar that handled the registration.

                    * Normal: The registration was forwarded to the normal
                      registrar.
                    * Local: The registration was handled by the local
                      registrar.

                  "
    ::= { registrationCacheSearchResultEntry 600 }

  -- End of table:Registration Cache Search Result

  -- Scalar:Total Registration Cache Count

  totalRegistrationCacheCount OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Total Registration Cache Count

                 The total number of registrations cached by the SipProxy
                 service. This number also includes the registrations in
                 progress but not yet completed.
                 "
   ::= { registrationCacheGroup 400 }

 -- End of group:Registration Cache Group

-- End of group:Register Group

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

-- Group:Monitoring Group

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

monitoringGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 500 }
 -- Scalar:Monitoring Interval

 monitoringInterval OBJECT-TYPE
  SYNTAX        Unsigned32 ( 0..3600 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Monitoring Interval

                Interval at which monitoring requests are sent to verify the
                SIP server status.

                This value is expressed in seconds (s).

                SIP OPTIONS are sent periodically to the monitored SIP server.

                The SIP server is considered unreachable if one of these
                conditions occurs:

                  * No response is received after the retransmission timer
                    expires (configurable via the
                    InteropRequestTransactionTimeout parameter).
                  * The response code received is listed in the
                    KeepAliveOptionErrorCodes parameter.

                When the SIP server is considered unreachable, the
                survivability mode enters its active state. Monitoring is
                still performed when the SIP server is unreachable and as soon
                as it becomes reachable again, the survivability mode becomes
                inactive.

                Setting this parameter to 0 disables the monitoring.

                "
  DEFVAL        { 30 }
  ::= { monitoringGroup 100 }

 -- Scalar:Monitoring Toggle Delay

 monitoringToggleDelay OBJECT-TYPE
  SYNTAX        Unsigned32 ( 0..3600 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Monitoring Toggle Delay

                Delay before reporting a status change of the monitored
                destination.

                This value is expressed in seconds (s).

                Monitoring must succeed or fail for at least this duration to
                conclude that the state of monitoring has changed (toggled).

                Delay measurement is reset each time the result of a
                monitoring attempt is obtained that reconfirms the current
                state of monitoring.

                "
  DEFVAL        { 0 }
  ::= { monitoringGroup 200 }

 -- Scalar:Monitoring Destination

 monitoringDestination OBJECT-TYPE
  SYNTAX        MxIpHostNamePort
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Monitoring Destination

                Destination target. FQDN and port for a specific SIP proxy.
                "
  DEFVAL        { "" }
  ::= { monitoringGroup 300 }

 -- Scalar:KeepAlive Option Error Codes

 keepAliveOptionErrorCodes OBJECT-TYPE
  SYNTAX        OCTET STRING ( SIZE(0..255) )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " KeepAlive Option Error Codes

                Comma-separated list of response codes indicating that the SIP
                server is down, when monitoring is performed through SIP
                OPTIONS.
                "
  DEFVAL        { "" }
  ::= { monitoringGroup 400 }

-- End of group:Monitoring Group

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

-- Group:Option Group

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

optionGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 600 }
 -- Scalar:SIP OPTIONS Method Support

 sipOptionsMethodSupport OBJECT-TYPE
  SYNTAX        INTEGER { default(100) , acceptAll(200) , rejectAll(300) }
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " SIP OPTIONS Method Support

                Determines the behaviour of the SIP proxy when answering a SIP
                OPTIONS request.

                  * Default: The SIP proxy responds with a 200 OK only if the
                    SIP proxy is the destination of the OPTIONS request
                    regardless of the other content. If the SIP proxy is not
                    the destination, the OPTIONS request is forwarded.
                  * AcceptAll: The SIP proxy accepts all OPTIONS requests and
                    responds with a 200 OK, regardless of the content and
                    destination.
                  * RejectAll: The SIP proxy rejects all OPTIONS requests and
                    responds with an error 405 Method Not Allowed.

                "
  DEFVAL        { default }
  ::= { optionGroup 100 }

-- End of group:Option Group

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

-- Group:Routing Group

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

routingGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 700 }
 -- ***************************************************************************
 
 -- Table:Route

 -- ***************************************************************************
 
 routeTable OBJECT-TYPE
  SYNTAX        SEQUENCE OF RouteEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " Route

                This table contains the routes that can be applied by the SIP
                proxy. Each table entry is a route. When a SIP request must be
                routed, the table is searched in decreasing priority order to
                find the first matching route. A route is selected when the
                criteria defined by CriteriaType and CriteriaExpression
                parameters matches.

                "
  ::= { routingGroup 100 }
  routeEntry OBJECT-TYPE
   SYNTAX        RouteEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " A row in table Route. "
   INDEX         {
                   routeId
                 }

   ::= { routeTable 1 }

  RouteEntry ::= SEQUENCE
  {
    routeId                               Unsigned32,
    routePriority                         Unsigned32,
    routeCriteriaType                     INTEGER,
    routeCriteriaExpression               OCTET STRING,
    routeTargetType                       INTEGER,
    routeTargetUserTransformationName     OCTET STRING,
    routeRegisteredUserTransformationName OCTET STRING,
    routeHardcodedHostPort                MxIpHostNamePort,
    routeConfigStatus                     INTEGER,
    routeDelete                           INTEGER
  }

  -- Index:Id

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

                 Unique numerical identifier for a routing rule.
                 "
   ::= { routeEntry 100 }

  -- Columnar:Priority

  routePriority OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Priority

                 Priority used to determine search order in the table when
                 routing is executed.
                 "
   DEFVAL        { 1 }
   ::= { routeEntry 200 }

  -- Columnar:Configuration Status

  routeConfigStatus OBJECT-TYPE
   SYNTAX        INTEGER { valid(100) , priorityDuplicate(200) ,
                 missingHardcodedHostport(300) ,
                 inexistentTargetUserTransformation(400) ,
                 inexistentRegisteredUserTransformation(500) , invalid(600) }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Configuration Status

                 Indicates if the configuration of this row is valid.

                   * Valid: The current content of the row is valid.
                   * PriorityDuplicate: Two or more entries have the same
                     priority.
                   * MissingHardcodedHostport: The TargetType parameter is set
                     to 'HardcodedHost' but the HardcodedHostPort parameter is
                     not configured.
                   * InexistentTargetUserTransformation: The
                     TargetUserTransformationName parameter refers to an
                     inexistent transformation.
                   * InexistentRegisteredUserTransformation: The
                     RegisteredUserTransformationName parameter refers to an
                     inexistent transformation.
                   * Invalid: The current content of the row is invalid.

                 "
   ::= { routeEntry 2000 }

  -- Row command:Delete

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

                 Deletes this row.
                 "
   DEFVAL        { noOp }
   ::= { routeEntry 2100 }

  -- Columnar:Criteria Type

  routeCriteriaType OBJECT-TYPE
   SYNTAX        INTEGER { toUri(100) , toUser(200) , toHost(300) , contactUri
                 (400) , contactUser(500) , contactHost(600) }
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Criteria Type

                 Type of criteria used to match the routing rule against the
                 SIP message.

                   * ToUri: The full URI of the TO header.
                   * ToUser: The user part of the URI in the TO header.
                   * ToHost: The host part of the URI in the TO header.
                   * ContactUri: The full URI of the CONTACT header.
                   * ContactUser: The user part of the URI in the CONTACT
                     header.
                   * ContactHost: The host part of the URI in the CONTACT
                     header.

                 "
   DEFVAL        { toUser }
   ::= { routeEntry 300 }

  -- Columnar:Expression Criteria

  routeCriteriaExpression OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..255) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Expression Criteria

                 Regular expression compared with the value of the Criteria
                 Type found in the SIP message. If it matches, the route
                 defined by this table entry is used.

                 The regular expression is implicitly searched from the
                 beginning of the searched string. The regular expression must
                 not contain the begin string character (^).

                 The special syntax %gateway=gw_name% can be used to refer to
                 an internal gateway. The gw_name refers to the gateway name
                 as it appears in the SipEp.Gateway.Name parameter.

                 "
   DEFVAL        { "" }
   ::= { routeEntry 400 }

  -- Columnar:Target Type

  routeTargetType OBJECT-TYPE
   SYNTAX        INTEGER { registeredAor(100) , registeredAorUser(200) ,
                 hardcodedHost(300) }
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Target Type

                 Type of target used by the route.

                   * RegisteredAor: Routing is based on the registration
                     database. Entries with an AOR matching the Request-URI
                     (R-URI) of the SIP request are looked up in the database.
                     Matching is based on the full AOR.
                   * RegisteredAorUser: Routing is based on the registration
                     database. Entries with an AOR matching the R-URI of the
                     SIP request are looked up in the database. Matching is
                     based on the user portion of the AOR.
                   * HardcodedHost: The SIP request is routed to the host
                     defined by the HardcodedHostPort parameter. The use of a
                     specific phone number can also be forced by using the
                     transformation specified by the
                     Route.TargetUserTransformationName parameter. When this
                     option is selected, the
                     Route.RegisteredUserTransformationName parameter is not
                     used.

                 "
   DEFVAL        { registeredAorUser }
   ::= { routeEntry 500 }

  -- Columnar:Target User Transformation Name

  routeTargetUserTransformationName OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..255) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Target User Transformation Name

                 Name of the transformation in the UserTransformations table.
                 This transformation is applied to the user part of the target
                 Request-URI (R-URI) in the SIP request. This transformation
                 allows modifying the user part of the R-URI in a SIP request
                 forwarded by the router. This parameter can be used to modify
                 a phone number: add/remove a regional code, add a prefix, add
                 a suffix, ...

                 "
   DEFVAL        { "" }
   ::= { routeEntry 600 }

  -- Columnar:Registered User Transformation Name

  routeRegisteredUserTransformationName OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..255) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Registered User Transformation Name

                 Name of a transformation in the UserTransformations table.
                 This transformation is used during the registration database
                 lookup, to normalise the database entries before checking for
                 matches. The transformation is applied to the user part of
                 the RegistrationStatus.Aor parameter. Only a copy of the
                 parameter is modified: this transformation does not modify
                 the content of the RegistrationStatus table.

                 This parameter is ignored when the Route.TargetType parameter
                 is set to 'HardcodedHost'.

                 "
   DEFVAL        { "" }
   ::= { routeEntry 700 }

  -- Columnar:Hardcoded Host and Port

  routeHardcodedHostPort OBJECT-TYPE
   SYNTAX        MxIpHostNamePort
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Hardcoded Host and Port

                 Hardcoded host that can be used as a target in routes. The
                 host can be expressed as an IP address or a domain name. The
                 port is optional. A port value of 0 is interpreted as the
                 default port.

                 The special %gateway=gw_name% syntax can be used to refer to
                 an internal gateway. The gw_name refers to the gateway name
                 as it appears in the SipEp.Gateway.Name parameter.

                 "
   DEFVAL        { "" }
   ::= { routeEntry 800 }

 -- End of table:Route

 -- ***************************************************************************
 
 -- Table:User Transformations table

 -- ***************************************************************************
 
 userTransformationsTable OBJECT-TYPE
  SYNTAX        SEQUENCE OF UserTransformationsEntry
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION " User Transformations table

                This table contains the transformations to be applied to a
                user portion of a URI. The name and the criteria must match to
                have the transformation applied. There can be multiple entries
                with the same name. The entries are checked in decreasing
                priority order and the first entry with matching name and
                criteria is applied. If no matching entry is found, no
                transformation is applied and the user stays unmodified.
                "
  ::= { routingGroup 300 }
  userTransformationsEntry OBJECT-TYPE
   SYNTAX        UserTransformationsEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION " A row in table User Transformations table. "
   INDEX         {
                   userTransformationsId
                 }

   ::= { userTransformationsTable 1 }

  UserTransformationsEntry ::= SEQUENCE
  {
    userTransformationsId           Unsigned32,
    userTransformationsPriority     Unsigned32,
    userTransformationsName         OCTET STRING,
    userTransformationsCriteria     OCTET STRING,
    userTransformationsPattern      OCTET STRING,
    userTransformationsConfigStatus INTEGER,
    userTransformationsDelete       INTEGER
  }

  -- Index:Id

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

                 Unique numerical identifier.
                 "
   ::= { userTransformationsEntry 100 }

  -- Columnar:Priority

  userTransformationsPriority OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Priority

                 Priority used to determine search order in the table when
                 routing is executed. Search order is from lower to higher
                 priority values.

                 Entries with the same name must have different prioriry
                 values.

                 "
   DEFVAL        { 1 }
   ::= { userTransformationsEntry 200 }

  -- Columnar:Configuration Status

  userTransformationsConfigStatus OBJECT-TYPE
   SYNTAX        INTEGER { valid(100) , priorityDuplicate(200) , missingName
                 (300) , invalid(400) }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION " Configuration Status

                 Indicates if the configuration of this row is valid.

                   * Valid: The current content of the row is valid.
                   * PriorityDuplicate: Two or more entries with the same name
                     have the same priority.
                   * MissingName: The entry must have a name.
                   * Invalid: The current content of the row is invalid.

                 "
   ::= { userTransformationsEntry 2000 }

  -- Row command:Delete

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

                 Deletes this row.
                 "
   DEFVAL        { noOp }
   ::= { userTransformationsEntry 2100 }

  -- Columnar:Transformation name

  userTransformationsName OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..50) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Transformation name

                 The name of the transformation. There can be several
                 transformations of the same name. Must match values of
                 RegisteredUserTransformationName or UserTransformationName
                 parameters.

                 "
   DEFVAL        { "" }
   ::= { userTransformationsEntry 300 }

  -- Columnar:Transformation Criteria

  userTransformationsCriteria OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..250) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Transformation Criteria

                 The criteria to be used in the transformation. If the
                 criteria does not match, the search in the table continues.
                 The criteria is a regular expression used for two things:

                   * Matching: If the expression matches, this transformation
                     is used. If it does not, the search continues for entries
                     with the same name in the table.
                   * Creating groups to be used as backreferences in the
                     pattern expression.

                 The regular expression is implicitly searched from the
                 beginning of the searched string: the begin string character
                 (^) must not be used in the regular expression.

                 "
   DEFVAL        { "" }
   ::= { userTransformationsEntry 400 }

  -- Columnar:Transformation Pattern

  userTransformationsPattern OBJECT-TYPE
   SYNTAX        OCTET STRING ( SIZE(0..250) )
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION " Transformation Pattern

                 Pattern expression that creates the transformed value. Can
                 use backreferences to the groups created in the criteria.
                 "
   DEFVAL        { "" }
   ::= { userTransformationsEntry 500 }

 -- End of table:User Transformations table

-- End of group:Routing Group

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

-- Group:Interop Group

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

interopGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 800 }
 -- Scalar:Request Transaction Timeout

 interopRequestTransactionTimeout OBJECT-TYPE
  SYNTAX        Unsigned32 ( 1..32 )
  MAX-ACCESS    read-write
  STATUS        current
  DESCRIPTION " Request Transaction Timeout

                The transaction timeout for SIP requests. Corresponds to
                timers B and F in RFC 3261.

                This value applies to:

                  * all requests (INVITE as well as non-INVITE) relayed by the
                    SipProxy service, and
                  * the monitoring requests initiated by the SipProxy itself.

                Setting this parameter to a relatively small value is useful
                in cases where the SipProxy handles a request with an FQDN
                that resolves to several targets. It gives time to try several
                targets when the first target(s) do not respond.

                Example: if this parameter is set to 5 seconds and the SIP
                client that sent a request through the SipProxy has a
                transaction timeout of 32 seconds, the SipProxy is able to try
                about 6 targets before the transaction timer of the SIP client
                expires.

                This parameter is ignored if it has a value larger than the
                value of the SipEp.InteropTransmissionTimeout parameter.

                This value is expressed in seconds (s).

                "
  DEFVAL        { 32 }
  ::= { interopGroup 100 }

-- End of group:Interop Group

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

-- Group:Notification Messages Configuration

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

notificationsGroup OBJECT IDENTIFIER
 ::= { sipProxyMIBObjects 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
 ::= { sipProxyMIBObjects 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
