1-- *****************************************************************
2-- CISCO-VOICE-URI-CLASS-MIB.my: Voice URI Class MIB file
3--
4-- June 2002 Prashanth Prabhu
5--
6-- Copyright (c) 1996-1999, 2000, 2001 by cisco Systems, Inc.
7-- All rights reserved.
8-- *****************************************************************
9
10CISCO-VOICE-URI-CLASS-MIB DEFINITIONS ::= BEGIN
11
12IMPORTS
13        MODULE-IDENTITY,
14        OBJECT-TYPE
15                FROM SNMPv2-SMI
16        TEXTUAL-CONVENTION,
17        RowStatus
18                FROM SNMPv2-TC
19        MODULE-COMPLIANCE,
20        OBJECT-GROUP
21                FROM SNMPv2-CONF
22        ciscoExperiment
23                FROM CISCO-SMI;
24
25
26ciscoVoiceUriClassMIB MODULE-IDENTITY
27        LAST-UPDATED    "200210100000Z"
28        ORGANIZATION    "Cisco Systems, Inc."
29        CONTACT-INFO
30                "       Cisco Systems
31                        Customer Service
32
33                Postal: 170 W. Tasman Drive
34                        San Jose, CA  95134
35                        USA
36
37                Tel: +1 800 553-NETS
38
39                E-mail: cs-voice@cisco.com"
40        DESCRIPTION
41                "This MIB provides information about Voice URI classes
42                 that are used to select Dial Peers based on URI's. A
43                 Voice URI class contains a set of configurations that
44                 is used to match a Voice URI.
45
46                 URI        - Uniform Resource Indicator
47                 URL        - Uniform Resource Locator
48                 regex      - regular expression
49                 RFC 2543   - SIP: Session Initiation Protocol
50                 RFC 2806   - URLs for Telephone Calls"
51        REVISION        "200210100000Z"
52        DESCRIPTION
53                "Initial version of this MIB module."
54        ::= { ciscoExperiment 99999999 }
55
56--
57-- Textual Conventions
58--
59
60--
61-- Voice URI Class textual conventions
62--
63
64CvUriClassTagIndex ::= TEXTUAL-CONVENTION
65        DISPLAY-HINT "32a"
66        STATUS       current
67        DESCRIPTION
68        "A Voice URI class tag. This is a value used to uniquely
69         identify each Voice URI class in the system."
70        SYNTAX       OCTET STRING (SIZE (1..32))
71
72CvUriClassTag ::= TEXTUAL-CONVENTION
73        DISPLAY-HINT "32a"
74        STATUS       current
75        DESCRIPTION
76        "This textual convention is an extension of the
77         CvUriClassTagIndex convention. This extension allows
78         zero-length strings to be used for tags. Examples of usage
79         of zero-length strings as tags might include situations
80         where none of the Voice URI classes need to be referenced."
81        SYNTAX       OCTET STRING (SIZE (0..32))
82
83CvUriClassPattern ::= TEXTUAL-CONVENTION
84        DISPLAY-HINT "32a"
85        STATUS       current
86        DESCRIPTION
87        "A regular expression pattern that is configured in the voice
88         URI classes. The default value is a zero-length string. Any
89         pattern set to this default value is not used for matching
90         with the URI"
91        SYNTAX       OCTET STRING (SIZE (0..32))
92
93CvUriClassPreference ::= TEXTUAL-CONVENTION
94        DISPLAY-HINT "d"
95        STATUS       current
96        DESCRIPTION
97        "Preference for a field in the URI. Lower number indicates
98         higher preference. The preference is used to break ties when
99         more than one class matches a given URI. The class, which has
100         the longest match for a field with the highest preference is
101         given higher priority."
102        SYNTAX       INTEGER (1..10)
103
104-- Voice URI Class MIB objects definitions
105
106
107--*********************************************************************
108-- Voice URI Class Group
109--*********************************************************************
110--
111-- The objects in this group are responsible for Voice URI class
112-- configuration. The URI classes are used to match voice dial-peers to
113-- calls that contain URI's. The Voice URI classes contain information,
114-- typically regular expressions, which is used to match with either
115-- specific fields in the URI (e.g., user-id, host, etc.) or the entire
116-- URI (a generic regex). One restriction imposed on the Voice URI
117-- classes is that the user should set either field-specific patterns or
118-- the generic pattern, not both.
119--
120-- A class is said to match a given URI under the following conditions:
121--  - If field-specific regexes are configured in the URI class, then
122--    all of them should match corresponding field values in the URI.
123--  - If a generic regex is configured, then it should match the entire
124--    URI.
125-- The classes are schema-specific i.e., the match properties of the
126-- classes are tailored for URI's of specific schemas such as sip: or
127-- tel:. Currently only the sip: and tel: schemas are supported by this
128-- MIB.
129--
130-- The classes are essentially templates, which can be referred to by
131-- their tags in the Voice dial-peers. Hence the same Voice URI class
132-- may be configured under more than one dial-peer. The properties of
133-- the Voice URI class are used to check for a voice dial-peer match
134-- with a given URI. If the Voice URI class configured in a voice dial
135-- peer matches, according to the aforementioned rules, with a URI,
136-- then the corresponding dial-peer is also considered a match for the
137-- URI. The dial-peer is then selected to either accept the call or
138-- place the call, depending on whether the call is inbound or outbound.
139--
140-- The SIP Voice URI classes can also have a preference assigned to some
141-- of the patterns in the class. When more than one Voice class matches
142-- a URI, these preferences are used to determine how they are to be
143-- sorted i.e., to determine which one of the Voice class should be
144-- given priority.
145-- The preference is used as a way to break the ties - the match-length
146-- for the pattern with the highest preference is used to break the
147-- initial tie; if that fails the one with the next highest is used and
148-- so on, until the tie cannot be broken anymore. When the Voice classes
149-- are used under dial-peers, this sorting is used in addition to
150-- whatever scheme might be in use to sort the dial-peers. The
151-- preference values should be unique i.e., no two patterns can have the
152-- same value.
153-- Currently, the user-id and host patterns can have preferences
154-- associated with them. By default the host portion has higher
155-- preference over the other.
156--
157--
158--
159-- A brief description of regular expressions follows:
160--
161-- Regular expressions (RE's) provide a mechanism to select strings
162-- based on certain match criteria. RE's are patterns constructed
163-- out of alphanumeric characters - an RE can be a single-character or
164-- multiple-character pattern. The characters fall into two broad
165-- types - ordinary and special. When used in an RE the ordinary
166-- characters match only themselves. The special characters, on
167-- the other hand, serve to perform certain functions in the pattern;
168-- they will be explained in more detail below. Note that a special
169-- character could be forced to match itself by preceding it with a
170-- backslash (\); this is also referred to as "escaping".
171--
172-- Special characters -
173--
174-- +====+==========================================================+
175-- | () | group characters into a sub-pattern                      |
176-- |    |                                                          |
177-- | [] | designates a range of single character patterns          |
178-- |    |                                                          |
179-- | ^  | 1. matches the beginning of the string                   |
180-- |    | 2. if present as the first character within a range, all |
181-- |    |    characters except those in the range are matched      |
182-- |    |                                                          |
183-- | $  | matches the end of the string                            |
184-- |    |                                                          |
185-- | -  | separates the end point of a range                       |
186-- |    |                                                          |
187-- | .  | matches any single character (including white space)     |
188-- |    |                                                          |
189-- | *  | matches zero or more sequences of the preceding          |
190-- |    | character or sub-pattern                                 |
191-- |    |                                                          |
192-- | +  | matches one of more sequences of the preceding character |
193-- |    | or sub-pattern                                           |
194-- |    |                                                          |
195-- | ?  | matches at most one occurrence of the preceding character|
196-- |    | or sub-pattern                                           |
197-- |    |                                                          |
198-- | _  | matches comma(,), left brace({), right brace(}),         |
199-- |    | left parenthesis((), right parenthesis()),               |
200-- |    | beginning of string, end of string and space             |
201-- |    |                                                          |
202-- | \  | removes the "special ness", if any, of the succeeding    |
203-- |    | character                                                |
204-- |    | i.e., the '\' "escapes" the succeeding character into    |
205-- |    |       matching itself                                    |
206-- +====+==========================================================+
207--
208-- Single-character RE examples:
209-- "a"
210--     match any strings that contain 'a'
211--     e.g., "bcda"
212--
213-- "."
214--     match any strings that contain any character
215--     e.g., "ABcD" ".xyz"
216--
217-- Multiple-character RE examples:
218-- "a-z"
219--     match a string that contains a lower case alphabetic character
220--     e.g., "Aabcd"
221--
222-- "^ABC"
223--     match a string that begins with sub-string ABC
224--     e.g., "ABCdef"
225--
226-- "(ABC)+"
227--     match a string that contains sub-string ABC repeated one or more
228--     times
229--     e.g., "defABC" or "defABCABC"
230--
231-- "cisco\.com"
232--     match a string that contains the character '.'
233--     e.g., "cisco.com" but not "ciscoAcom"
234--
235--
236--
237-- An example to illustrate the workings of SIP URI classes follows:
238--
239-- Example: The URI in the call is sip:abc@xyz.com,
240--          where
241--              user-id - abc
242--              host    - xyz.com
243--
244--          Consider the sip: schema-specific Voice URI classes below.
245-- +========+==================+==================+==================+
246-- |        |                  |                  |                  |
247-- |  tag   |  user-id  match  |   host    match  |  generic  match  |
248-- |        |   regex    len   |   regex    len   |    URI     len   |
249-- |        |  pattern         |  pattern         |  pattern         |
250-- |        |                  |                  |                  |
251-- +========+==================+==================+==================+
252-- |        |                  |                  |                  |
253-- |  SIP_1 |    ab        2   |   xyz\.com   7   |                  |
254-- |  SIP_2 |    abc       3   |   xyz        3   |                  |
255-- |  SIP_3 |    a         1   |   xyz.com    7   |                  |
256-- |  SIP_4 |                  |                  |  abc@.*com  11   |
257-- |        |                  |                  |                  |
258-- +========+==================+==================+==================+
259-- where,
260--     user-id regex pattern refers to cvSIPUriClassCfgUserIDPattern
261--     host regex pattern refers to cvSIPUriClassCfgHostPattern
262--     generic regex pattern refers to cvCommonUriClassCfgURIPattern
263--
264-- Case 1: The preferences are set to their defaults - host has
265--         preference over user-id portion.
266--         i.e., cvUriClassSIPHostPreference = 1
267--               cvUriClassSIPUserIDPreference = 2
268--
269--         Sorted order of classes: SIP_1, SIP_3, SIP_2 and SIP_4
270--
271-- Case 2: The preferences are reversed from the defaults - user-id has
272--         preference over host portion.
273--         i.e., cvUriClassSIPHostPreference = 3
274--               cvUriClassSIPUserIDPreference = 2
275--
276--         Sorted order of classes: SIP_2, SIP_1, SIP_3 and SIP_4
277--
278-- By extension the Voice dial-peers that refer to these classes are
279-- sorted in similar order.
280--
281--
282--
283-- So, to configure voice dial-peers to be selected based on URI's the
284-- following needs to be done:
285-- [1] Create the Voice URI class entry.
286-- [2] Set the field-specific or generic regex in the Voice URI class.
287-- [3] Set the preferences for the field-specific regexes (optional).
288-- [4] Set the object(s) in the voice dial-peer
289--     (CISCO-VOICE-DIAL-CONTROL-MIB), to use this class to match
290--     inbound or outbound URI's.
291--
292-- The Voice URI class once created is considered active. If and when a
293-- class is destroyed, any reference to that class is removed from all
294-- the voice dial-peers.
295--
296
297cvUriClassMIBNotifications OBJECT IDENTIFIER
298        ::= { ciscoVoiceUriClassMIB 0 }
299
300cvUriClassMIBObjects OBJECT IDENTIFIER
301        ::= { ciscoVoiceUriClassMIB 1 }
302
303cvUriClass              OBJECT IDENTIFIER
304        ::= { cvUriClassMIBObjects 1 }
305
306cvUriClassSIPGeneralConfig OBJECT IDENTIFIER
307        ::= { cvUriClassMIBObjects 2 }
308
309--
310-- Voice Generic URI Class Configuration Table
311--
312
313cvUriClassCfgTable OBJECT-TYPE
314        SYNTAX      SEQUENCE OF CvUriClassCfgEntry
315        MAX-ACCESS  not-accessible
316        STATUS      current
317        DESCRIPTION
318        "The table contains generic Voice URI class information."
319        ::= { cvUriClass 1 }
320
321cvUriClassCfgEntry OBJECT-TYPE
322        SYNTAX      CvUriClassCfgEntry
323        MAX-ACCESS  not-accessible
324        STATUS      current
325        DESCRIPTION
326        "A single Voice URI class. The creation of this entry
327         will result in the automatic creation of a corresponding
328         'cvUriClassCfgType' URI class entry and a
329         cvCommonUriClassCfgEntry."
330        INDEX       { IMPLIED cvUriClassCfgTag }
331        ::= { cvUriClassCfgTable 1 }
332
333CvUriClassCfgEntry ::= SEQUENCE {
334            cvUriClassCfgTag                CvUriClassTagIndex,
335            cvUriClassCfgType               INTEGER,
336            cvUriClassCfgStatus             RowStatus
337        }
338
339
340cvUriClassCfgTag OBJECT-TYPE
341        SYNTAX      CvUriClassTagIndex
342        MAX-ACCESS  not-accessible
343        STATUS      current
344        DESCRIPTION
345        "A name that uniquely identifies a Voice URI class in the
346         system."
347        ::= { cvUriClassCfgEntry 1 }
348
349cvUriClassCfgType OBJECT-TYPE
350        SYNTAX      INTEGER {
351            sip    (1),
352            tel    (2)
353        }
354        MAX-ACCESS      read-create
355        STATUS          current
356        DESCRIPTION
357        "Specifies the type of Voice URI class. The type is the schema
358         of the URI's, which this class is configured to match.
359
360         sip   - Voice URI class to match sip: URI's (RFC 2543)
361         tel   - Voice URI class to match tel: URI's (RFC 2806)
362
363         Once created this object cannot be modified."
364        ::= { cvUriClassCfgEntry 2 }
365
366cvUriClassCfgStatus OBJECT-TYPE
367        SYNTAX      RowStatus
368        MAX-ACCESS  read-create
369        STATUS      current
370        DESCRIPTION
371        "This object is used to create, modify or delete a row in this
372         table. A row can be deleted or modified regardless of its
373         current state. When the row is created with createAndWait, it
374         is placed in notInService state, until such time when either
375         the state is changed to active, or the row is deleted."
376        ::= { cvUriClassCfgEntry 3 }
377
378--
379-- Voice SIP URI Class Configuration Table
380--
381
382cvSIPUriClassCfgTable OBJECT-TYPE
383        SYNTAX      SEQUENCE OF CvSIPUriClassCfgEntry
384        MAX-ACCESS  not-accessible
385        STATUS      current
386        DESCRIPTION
387        "The table contains information related to sip: schema-specific
388         Voice URI classes."
389        ::= { cvUriClass 2 }
390
391cvSIPUriClassCfgEntry OBJECT-TYPE
392        SYNTAX      CvSIPUriClassCfgEntry
393        MAX-ACCESS  not-accessible
394        STATUS      current
395        DESCRIPTION
396        "A single sip: schema-specific Voice URI class.
397         This entry is created automatically when a cvUriClassCfgEntry
398         of cvUriClassCfgType(1) is created. The manager cannot create
399         this entry."
400        INDEX       { IMPLIED cvUriClassCfgTag }
401        ::= { cvSIPUriClassCfgTable 1 }
402
403CvSIPUriClassCfgEntry ::= SEQUENCE {
404            cvSIPUriClassCfgUserIDPattern       CvUriClassPattern,
405            cvSIPUriClassCfgHostPattern         CvUriClassPattern,
406            cvSIPUriClassCfgPhoneCtxtPattern    CvUriClassPattern
407        }
408
409cvSIPUriClassCfgUserIDPattern OBJECT-TYPE
410        SYNTAX      CvUriClassPattern
411        MAX-ACCESS  read-write
412        STATUS      current
413        DESCRIPTION
414        "A regular expression to match the user-id in a sip: URI. If
415         this object is set to a zero-length string it is not used for
416         matching with the URI.
417         This object cannot be set if cvCommonUriClassCfgURIPattern
418         is also set."
419        DEFVAL      { "" }
420        ::= { cvSIPUriClassCfgEntry 1 }
421
422cvSIPUriClassCfgHostPattern OBJECT-TYPE
423        SYNTAX      CvUriClassPattern
424        MAX-ACCESS  read-write
425        STATUS      current
426        DESCRIPTION
427        "A regular expression to match the host portion in a
428         sip: URI. If this object is set to a zero-length string it is
429         not used for matching with the URI.
430         This object cannot be set if cvCommonUriClassCfgURIPattern
431         is also set."
432        DEFVAL      { "" }
433        ::= { cvSIPUriClassCfgEntry 2 }
434
435cvSIPUriClassCfgPhoneCtxtPattern OBJECT-TYPE
436        SYNTAX      CvUriClassPattern
437        MAX-ACCESS  read-write
438        STATUS      current
439        DESCRIPTION
440        "A regular expression to match the phone-context attribute
441         in a sip: URI. If this object is set to a zero-length string
442         it is not used for matching with the URI.
443         This object cannot be set if cvCommonUriClassCfgURIPattern
444         is also set."
445        DEFVAL      { "" }
446        ::= { cvSIPUriClassCfgEntry 3 }
447
448--
449-- Voice TEL URI Class Configuration Table
450--
451
452cvTELUriClassCfgTable OBJECT-TYPE
453        SYNTAX      SEQUENCE OF CvTELUriClassCfgEntry
454        MAX-ACCESS  not-accessible
455        STATUS      current
456        DESCRIPTION
457        "The table contains information related to tel: schema-specific
458         Voice URI classes."
459        ::= { cvUriClass 3 }
460
461cvTELUriClassCfgEntry OBJECT-TYPE
462        SYNTAX      CvTELUriClassCfgEntry
463        MAX-ACCESS  not-accessible
464        STATUS      current
465        DESCRIPTION
466        "A single sip: schema-specific Voice URI class.
467         This entry is created automatically when a cvUriClassCfgEntry
468         of cvUriClassCfgType(2) is created. The manager cannot create
469         this entry."
470        INDEX       { IMPLIED cvUriClassCfgTag }
471        ::= { cvTELUriClassCfgTable 1 }
472
473CvTELUriClassCfgEntry ::= SEQUENCE {
474            cvTELUriClassCfgPhoneNumPattern     CvUriClassPattern,
475            cvTELUriClassCfgPhoneCtxtPattern    CvUriClassPattern
476        }
477
478cvTELUriClassCfgPhoneNumPattern OBJECT-TYPE
479        SYNTAX      CvUriClassPattern
480        MAX-ACCESS  read-write
481        STATUS      current
482        DESCRIPTION
483        "A regular expression to match the phone number portion in a
484         tel: URI. If this object is set to a zero-length string it is
485         not used for matching with the URI.
486         This object cannot be set if cvCommonUriClassCfgURIPattern
487         is also set."
488        DEFVAL      { "" }
489        ::= { cvTELUriClassCfgEntry 1 }
490
491cvTELUriClassCfgPhoneCtxtPattern OBJECT-TYPE
492        SYNTAX      CvUriClassPattern
493        MAX-ACCESS  read-write
494        STATUS      current
495        DESCRIPTION
496        "A regular expression to match the phone-context attribute in a
497         tel: URI. If this object is set to a zero-length string it is
498         not used for matching with the URI.
499         This object cannot be set if cvCommonUriClassCfgURIPattern
500         is also set."
501        DEFVAL      { "" }
502        ::= { cvTELUriClassCfgEntry 2 }
503
504--
505-- Voice Common URI Class Configuration Table
506--
507
508cvCommonUriClassCfgTable OBJECT-TYPE
509        SYNTAX      SEQUENCE OF CvCommonUriClassCfgEntry
510        MAX-ACCESS  not-accessible
511        STATUS      current
512        DESCRIPTION
513        "The table contains common configuration information specific to
514         the Voice URI classes."
515        ::= { cvUriClass 4 }
516
517cvCommonUriClassCfgEntry OBJECT-TYPE
518        SYNTAX      CvCommonUriClassCfgEntry
519        MAX-ACCESS  not-accessible
520        STATUS      current
521        DESCRIPTION
522        "A single sip: schema-specific Voice URI class.
523         This entry is created automatically when a cvUriClassCfgEntry
524         is created. The manager cannot create this entry."
525        INDEX       { IMPLIED cvUriClassCfgTag }
526        ::= { cvCommonUriClassCfgTable 1 }
527
528CvCommonUriClassCfgEntry ::= SEQUENCE {
529            cvCommonUriClassCfgURIPattern       OCTET STRING
530        }
531
532cvCommonUriClassCfgURIPattern OBJECT-TYPE
533        SYNTAX      OCTET STRING (SIZE (0..128))
534        MAX-ACCESS  read-write
535        STATUS      current
536        DESCRIPTION
537        "A regular expression to match an entire URI. If this object is
538         set to a zero-length string it is not used for matching with
539         the URI.
540         This object is mutually exclusive with patterns that match
541         specific fields from the URI e.g.,
542         cvSIPUriClassCfgUserIDPattern, or cvSIPUriClassCfgPhonePattern.
543         If more than one class matches a URI, the classes that matched
544         with the URI based on this pattern, are given the least
545         priority amongst matching classes."
546        DEFVAL      { "" }
547        ::= { cvCommonUriClassCfgEntry 1 }
548
549
550--
551-- Voice SIP URI Class Preference Configuration
552--
553
554cvUriClassSIPHostPreference OBJECT-TYPE
555        SYNTAX      CvUriClassPreference
556        MAX-ACCESS  read-write
557        STATUS      current
558        DESCRIPTION
559        "Preference assigned to the match length resulting from a match
560         of cvSIPUriClassCfgHostPattern against the host portion of a
561         sip: URI."
562        DEFVAL      { 1 }
563        ::= { cvUriClassSIPGeneralConfig 1 }
564
565cvUriClassSIPUserIDPreference OBJECT-TYPE
566        SYNTAX      CvUriClassPreference
567        MAX-ACCESS  read-write
568        STATUS      current
569        DESCRIPTION
570        "Preference assigned to the match length resulting from a match
571         of cvSIPUriClassCfgUserIDPattern against the user-id portion of
572         a sip: URI."
573        DEFVAL      { 2 }
574        ::= { cvUriClassSIPGeneralConfig 2 }
575
576
577cvUriClassMIBConformance OBJECT IDENTIFIER ::=
578                                    { ciscoVoiceUriClassMIB 2 }
579cvUriClassMIBCompliances OBJECT IDENTIFIER ::=
580                                    { cvUriClassMIBConformance 1 }
581cvUriClassMIBGroups      OBJECT IDENTIFIER ::=
582                                    { cvUriClassMIBConformance 2 }
583
584-- compliance statements
585
586cvUriClassMIBCompliance MODULE-COMPLIANCE
587        STATUS      current
588        DESCRIPTION
589        "The compliance statement for entities which implement the
590         CISCO VOICE URI CLASS MIB."
591        MODULE      -- this module
592
593        MANDATORY-GROUPS    {
594            cvUriClassGroup
595        }
596        ::= { cvUriClassMIBCompliances 1}
597
598-- units of conformance
599
600cvUriClassGroup OBJECT-GROUP
601        OBJECTS {
602            cvUriClassCfgType,
603            cvUriClassCfgStatus,
604            cvSIPUriClassCfgUserIDPattern,
605            cvSIPUriClassCfgHostPattern,
606            cvSIPUriClassCfgPhoneCtxtPattern,
607            cvTELUriClassCfgPhoneNumPattern,
608            cvTELUriClassCfgPhoneCtxtPattern,
609            cvCommonUriClassCfgURIPattern,
610            cvUriClassSIPHostPreference,
611            cvUriClassSIPUserIDPreference
612        }
613        STATUS      current
614        DESCRIPTION
615        "A collection of objects providing the general Voice URI Class
616         configuration capability."
617        ::= { cvUriClassMIBGroups 1 }
618
619END
620