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