-- ***************************************************************** -- CISCO-VOICE-URI-CLASS-MIB.my: Voice URI Class MIB file -- -- June 2002 Prashanth Prabhu -- -- Copyright (c) 1996-1999, 2000, 2001 by cisco Systems, Inc. -- All rights reserved. -- ***************************************************************** CISCO-VOICE-URI-CLASS-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF ciscoExperiment FROM CISCO-SMI; ciscoVoiceUriClassMIB MODULE-IDENTITY LAST-UPDATED "200210100000Z" ORGANIZATION "Cisco Systems, Inc." CONTACT-INFO " Cisco Systems Customer Service Postal: 170 W. Tasman Drive San Jose, CA 95134 USA Tel: +1 800 553-NETS E-mail: cs-voice@cisco.com" DESCRIPTION "This MIB provides information about Voice URI classes that are used to select Dial Peers based on URI's. A Voice URI class contains a set of configurations that is used to match a Voice URI. URI - Uniform Resource Indicator URL - Uniform Resource Locator regex - regular expression RFC 2543 - SIP: Session Initiation Protocol RFC 2806 - URLs for Telephone Calls" REVISION "200210100000Z" DESCRIPTION "Initial version of this MIB module." ::= { ciscoExperiment 99999999 } -- -- Textual Conventions -- -- -- Voice URI Class textual conventions -- CvUriClassTagIndex ::= TEXTUAL-CONVENTION DISPLAY-HINT "32a" STATUS current DESCRIPTION "A Voice URI class tag. This is a value used to uniquely identify each Voice URI class in the system." SYNTAX OCTET STRING (SIZE (1..32)) CvUriClassTag ::= TEXTUAL-CONVENTION DISPLAY-HINT "32a" STATUS current DESCRIPTION "This textual convention is an extension of the CvUriClassTagIndex convention. This extension allows zero-length strings to be used for tags. Examples of usage of zero-length strings as tags might include situations where none of the Voice URI classes need to be referenced." SYNTAX OCTET STRING (SIZE (0..32)) CvUriClassPattern ::= TEXTUAL-CONVENTION DISPLAY-HINT "32a" STATUS current DESCRIPTION "A regular expression pattern that is configured in the voice URI classes. The default value is a zero-length string. Any pattern set to this default value is not used for matching with the URI" SYNTAX OCTET STRING (SIZE (0..32)) CvUriClassPreference ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "Preference for a field in the URI. Lower number indicates higher preference. The preference is used to break ties when more than one class matches a given URI. The class, which has the longest match for a field with the highest preference is given higher priority." SYNTAX INTEGER (1..10) -- Voice URI Class MIB objects definitions --********************************************************************* -- Voice URI Class Group --********************************************************************* -- -- The objects in this group are responsible for Voice URI class -- configuration. The URI classes are used to match voice dial-peers to -- calls that contain URI's. The Voice URI classes contain information, -- typically regular expressions, which is used to match with either -- specific fields in the URI (e.g., user-id, host, etc.) or the entire -- URI (a generic regex). One restriction imposed on the Voice URI -- classes is that the user should set either field-specific patterns or -- the generic pattern, not both. -- -- A class is said to match a given URI under the following conditions: -- - If field-specific regexes are configured in the URI class, then -- all of them should match corresponding field values in the URI. -- - If a generic regex is configured, then it should match the entire -- URI. -- The classes are schema-specific i.e., the match properties of the -- classes are tailored for URI's of specific schemas such as sip: or -- tel:. Currently only the sip: and tel: schemas are supported by this -- MIB. -- -- The classes are essentially templates, which can be referred to by -- their tags in the Voice dial-peers. Hence the same Voice URI class -- may be configured under more than one dial-peer. The properties of -- the Voice URI class are used to check for a voice dial-peer match -- with a given URI. If the Voice URI class configured in a voice dial -- peer matches, according to the aforementioned rules, with a URI, -- then the corresponding dial-peer is also considered a match for the -- URI. The dial-peer is then selected to either accept the call or -- place the call, depending on whether the call is inbound or outbound. -- -- The SIP Voice URI classes can also have a preference assigned to some -- of the patterns in the class. When more than one Voice class matches -- a URI, these preferences are used to determine how they are to be -- sorted i.e., to determine which one of the Voice class should be -- given priority. -- The preference is used as a way to break the ties - the match-length -- for the pattern with the highest preference is used to break the -- initial tie; if that fails the one with the next highest is used and -- so on, until the tie cannot be broken anymore. When the Voice classes -- are used under dial-peers, this sorting is used in addition to -- whatever scheme might be in use to sort the dial-peers. The -- preference values should be unique i.e., no two patterns can have the -- same value. -- Currently, the user-id and host patterns can have preferences -- associated with them. By default the host portion has higher -- preference over the other. -- -- -- -- A brief description of regular expressions follows: -- -- Regular expressions (RE's) provide a mechanism to select strings -- based on certain match criteria. RE's are patterns constructed -- out of alphanumeric characters - an RE can be a single-character or -- multiple-character pattern. The characters fall into two broad -- types - ordinary and special. When used in an RE the ordinary -- characters match only themselves. The special characters, on -- the other hand, serve to perform certain functions in the pattern; -- they will be explained in more detail below. Note that a special -- character could be forced to match itself by preceding it with a -- backslash (\); this is also referred to as "escaping". -- -- Special characters - -- -- +====+==========================================================+ -- | () | group characters into a sub-pattern | -- | | | -- | [] | designates a range of single character patterns | -- | | | -- | ^ | 1. matches the beginning of the string | -- | | 2. if present as the first character within a range, all | -- | | characters except those in the range are matched | -- | | | -- | $ | matches the end of the string | -- | | | -- | - | separates the end point of a range | -- | | | -- | . | matches any single character (including white space) | -- | | | -- | * | matches zero or more sequences of the preceding | -- | | character or sub-pattern | -- | | | -- | + | matches one of more sequences of the preceding character | -- | | or sub-pattern | -- | | | -- | ? | matches at most one occurrence of the preceding character| -- | | or sub-pattern | -- | | | -- | _ | matches comma(,), left brace({), right brace(}), | -- | | left parenthesis((), right parenthesis()), | -- | | beginning of string, end of string and space | -- | | | -- | \ | removes the "special ness", if any, of the succeeding | -- | | character | -- | | i.e., the '\' "escapes" the succeeding character into | -- | | matching itself | -- +====+==========================================================+ -- -- Single-character RE examples: -- "a" -- match any strings that contain 'a' -- e.g., "bcda" -- -- "." -- match any strings that contain any character -- e.g., "ABcD" ".xyz" -- -- Multiple-character RE examples: -- "a-z" -- match a string that contains a lower case alphabetic character -- e.g., "Aabcd" -- -- "^ABC" -- match a string that begins with sub-string ABC -- e.g., "ABCdef" -- -- "(ABC)+" -- match a string that contains sub-string ABC repeated one or more -- times -- e.g., "defABC" or "defABCABC" -- -- "cisco\.com" -- match a string that contains the character '.' -- e.g., "cisco.com" but not "ciscoAcom" -- -- -- -- An example to illustrate the workings of SIP URI classes follows: -- -- Example: The URI in the call is sip:abc@xyz.com, -- where -- user-id - abc -- host - xyz.com -- -- Consider the sip: schema-specific Voice URI classes below. -- +========+==================+==================+==================+ -- | | | | | -- | tag | user-id match | host match | generic match | -- | | regex len | regex len | URI len | -- | | pattern | pattern | pattern | -- | | | | | -- +========+==================+==================+==================+ -- | | | | | -- | SIP_1 | ab 2 | xyz\.com 7 | | -- | SIP_2 | abc 3 | xyz 3 | | -- | SIP_3 | a 1 | xyz.com 7 | | -- | SIP_4 | | | abc@.*com 11 | -- | | | | | -- +========+==================+==================+==================+ -- where, -- user-id regex pattern refers to cvSIPUriClassCfgUserIDPattern -- host regex pattern refers to cvSIPUriClassCfgHostPattern -- generic regex pattern refers to cvCommonUriClassCfgURIPattern -- -- Case 1: The preferences are set to their defaults - host has -- preference over user-id portion. -- i.e., cvUriClassSIPHostPreference = 1 -- cvUriClassSIPUserIDPreference = 2 -- -- Sorted order of classes: SIP_1, SIP_3, SIP_2 and SIP_4 -- -- Case 2: The preferences are reversed from the defaults - user-id has -- preference over host portion. -- i.e., cvUriClassSIPHostPreference = 3 -- cvUriClassSIPUserIDPreference = 2 -- -- Sorted order of classes: SIP_2, SIP_1, SIP_3 and SIP_4 -- -- By extension the Voice dial-peers that refer to these classes are -- sorted in similar order. -- -- -- -- So, to configure voice dial-peers to be selected based on URI's the -- following needs to be done: -- [1] Create the Voice URI class entry. -- [2] Set the field-specific or generic regex in the Voice URI class. -- [3] Set the preferences for the field-specific regexes (optional). -- [4] Set the object(s) in the voice dial-peer -- (CISCO-VOICE-DIAL-CONTROL-MIB), to use this class to match -- inbound or outbound URI's. -- -- The Voice URI class once created is considered active. If and when a -- class is destroyed, any reference to that class is removed from all -- the voice dial-peers. -- cvUriClassMIBNotifications OBJECT IDENTIFIER ::= { ciscoVoiceUriClassMIB 0 } cvUriClassMIBObjects OBJECT IDENTIFIER ::= { ciscoVoiceUriClassMIB 1 } cvUriClass OBJECT IDENTIFIER ::= { cvUriClassMIBObjects 1 } cvUriClassSIPGeneralConfig OBJECT IDENTIFIER ::= { cvUriClassMIBObjects 2 } -- -- Voice Generic URI Class Configuration Table -- cvUriClassCfgTable OBJECT-TYPE SYNTAX SEQUENCE OF CvUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table contains generic Voice URI class information." ::= { cvUriClass 1 } cvUriClassCfgEntry OBJECT-TYPE SYNTAX CvUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single Voice URI class. The creation of this entry will result in the automatic creation of a corresponding 'cvUriClassCfgType' URI class entry and a cvCommonUriClassCfgEntry." INDEX { IMPLIED cvUriClassCfgTag } ::= { cvUriClassCfgTable 1 } CvUriClassCfgEntry ::= SEQUENCE { cvUriClassCfgTag CvUriClassTagIndex, cvUriClassCfgType INTEGER, cvUriClassCfgStatus RowStatus } cvUriClassCfgTag OBJECT-TYPE SYNTAX CvUriClassTagIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "A name that uniquely identifies a Voice URI class in the system." ::= { cvUriClassCfgEntry 1 } cvUriClassCfgType OBJECT-TYPE SYNTAX INTEGER { sip (1), tel (2) } MAX-ACCESS read-create STATUS current DESCRIPTION "Specifies the type of Voice URI class. The type is the schema of the URI's, which this class is configured to match. sip - Voice URI class to match sip: URI's (RFC 2543) tel - Voice URI class to match tel: URI's (RFC 2806) Once created this object cannot be modified." ::= { cvUriClassCfgEntry 2 } cvUriClassCfgStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object is used to create, modify or delete a row in this table. A row can be deleted or modified regardless of its current state. When the row is created with createAndWait, it is placed in notInService state, until such time when either the state is changed to active, or the row is deleted." ::= { cvUriClassCfgEntry 3 } -- -- Voice SIP URI Class Configuration Table -- cvSIPUriClassCfgTable OBJECT-TYPE SYNTAX SEQUENCE OF CvSIPUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table contains information related to sip: schema-specific Voice URI classes." ::= { cvUriClass 2 } cvSIPUriClassCfgEntry OBJECT-TYPE SYNTAX CvSIPUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single sip: schema-specific Voice URI class. This entry is created automatically when a cvUriClassCfgEntry of cvUriClassCfgType(1) is created. The manager cannot create this entry." INDEX { IMPLIED cvUriClassCfgTag } ::= { cvSIPUriClassCfgTable 1 } CvSIPUriClassCfgEntry ::= SEQUENCE { cvSIPUriClassCfgUserIDPattern CvUriClassPattern, cvSIPUriClassCfgHostPattern CvUriClassPattern, cvSIPUriClassCfgPhoneCtxtPattern CvUriClassPattern } cvSIPUriClassCfgUserIDPattern OBJECT-TYPE SYNTAX CvUriClassPattern MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match the user-id in a sip: URI. If this object is set to a zero-length string it is not used for matching with the URI. This object cannot be set if cvCommonUriClassCfgURIPattern is also set." DEFVAL { "" } ::= { cvSIPUriClassCfgEntry 1 } cvSIPUriClassCfgHostPattern OBJECT-TYPE SYNTAX CvUriClassPattern MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match the host portion in a sip: URI. If this object is set to a zero-length string it is not used for matching with the URI. This object cannot be set if cvCommonUriClassCfgURIPattern is also set." DEFVAL { "" } ::= { cvSIPUriClassCfgEntry 2 } cvSIPUriClassCfgPhoneCtxtPattern OBJECT-TYPE SYNTAX CvUriClassPattern MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match the phone-context attribute in a sip: URI. If this object is set to a zero-length string it is not used for matching with the URI. This object cannot be set if cvCommonUriClassCfgURIPattern is also set." DEFVAL { "" } ::= { cvSIPUriClassCfgEntry 3 } -- -- Voice TEL URI Class Configuration Table -- cvTELUriClassCfgTable OBJECT-TYPE SYNTAX SEQUENCE OF CvTELUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table contains information related to tel: schema-specific Voice URI classes." ::= { cvUriClass 3 } cvTELUriClassCfgEntry OBJECT-TYPE SYNTAX CvTELUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single sip: schema-specific Voice URI class. This entry is created automatically when a cvUriClassCfgEntry of cvUriClassCfgType(2) is created. The manager cannot create this entry." INDEX { IMPLIED cvUriClassCfgTag } ::= { cvTELUriClassCfgTable 1 } CvTELUriClassCfgEntry ::= SEQUENCE { cvTELUriClassCfgPhoneNumPattern CvUriClassPattern, cvTELUriClassCfgPhoneCtxtPattern CvUriClassPattern } cvTELUriClassCfgPhoneNumPattern OBJECT-TYPE SYNTAX CvUriClassPattern MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match the phone number portion in a tel: URI. If this object is set to a zero-length string it is not used for matching with the URI. This object cannot be set if cvCommonUriClassCfgURIPattern is also set." DEFVAL { "" } ::= { cvTELUriClassCfgEntry 1 } cvTELUriClassCfgPhoneCtxtPattern OBJECT-TYPE SYNTAX CvUriClassPattern MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match the phone-context attribute in a tel: URI. If this object is set to a zero-length string it is not used for matching with the URI. This object cannot be set if cvCommonUriClassCfgURIPattern is also set." DEFVAL { "" } ::= { cvTELUriClassCfgEntry 2 } -- -- Voice Common URI Class Configuration Table -- cvCommonUriClassCfgTable OBJECT-TYPE SYNTAX SEQUENCE OF CvCommonUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table contains common configuration information specific to the Voice URI classes." ::= { cvUriClass 4 } cvCommonUriClassCfgEntry OBJECT-TYPE SYNTAX CvCommonUriClassCfgEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single sip: schema-specific Voice URI class. This entry is created automatically when a cvUriClassCfgEntry is created. The manager cannot create this entry." INDEX { IMPLIED cvUriClassCfgTag } ::= { cvCommonUriClassCfgTable 1 } CvCommonUriClassCfgEntry ::= SEQUENCE { cvCommonUriClassCfgURIPattern OCTET STRING } cvCommonUriClassCfgURIPattern OBJECT-TYPE SYNTAX OCTET STRING (SIZE (0..128)) MAX-ACCESS read-write STATUS current DESCRIPTION "A regular expression to match an entire URI. If this object is set to a zero-length string it is not used for matching with the URI. This object is mutually exclusive with patterns that match specific fields from the URI e.g., cvSIPUriClassCfgUserIDPattern, or cvSIPUriClassCfgPhonePattern. If more than one class matches a URI, the classes that matched with the URI based on this pattern, are given the least priority amongst matching classes." DEFVAL { "" } ::= { cvCommonUriClassCfgEntry 1 } -- -- Voice SIP URI Class Preference Configuration -- cvUriClassSIPHostPreference OBJECT-TYPE SYNTAX CvUriClassPreference MAX-ACCESS read-write STATUS current DESCRIPTION "Preference assigned to the match length resulting from a match of cvSIPUriClassCfgHostPattern against the host portion of a sip: URI." DEFVAL { 1 } ::= { cvUriClassSIPGeneralConfig 1 } cvUriClassSIPUserIDPreference OBJECT-TYPE SYNTAX CvUriClassPreference MAX-ACCESS read-write STATUS current DESCRIPTION "Preference assigned to the match length resulting from a match of cvSIPUriClassCfgUserIDPattern against the user-id portion of a sip: URI." DEFVAL { 2 } ::= { cvUriClassSIPGeneralConfig 2 } cvUriClassMIBConformance OBJECT IDENTIFIER ::= { ciscoVoiceUriClassMIB 2 } cvUriClassMIBCompliances OBJECT IDENTIFIER ::= { cvUriClassMIBConformance 1 } cvUriClassMIBGroups OBJECT IDENTIFIER ::= { cvUriClassMIBConformance 2 } -- compliance statements cvUriClassMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for entities which implement the CISCO VOICE URI CLASS MIB." MODULE -- this module MANDATORY-GROUPS { cvUriClassGroup } ::= { cvUriClassMIBCompliances 1} -- units of conformance cvUriClassGroup OBJECT-GROUP OBJECTS { cvUriClassCfgType, cvUriClassCfgStatus, cvSIPUriClassCfgUserIDPattern, cvSIPUriClassCfgHostPattern, cvSIPUriClassCfgPhoneCtxtPattern, cvTELUriClassCfgPhoneNumPattern, cvTELUriClassCfgPhoneCtxtPattern, cvCommonUriClassCfgURIPattern, cvUriClassSIPHostPreference, cvUriClassSIPUserIDPreference } STATUS current DESCRIPTION "A collection of objects providing the general Voice URI Class configuration capability." ::= { cvUriClassMIBGroups 1 } END