Newer
Older
* @author STF 346, STF366, STF368, STF369
* @version $Id$
* @desc This module defines message, header, structured and simple SIP
* types as well constants used by LipSip constructs. <br>
* Note that any changes made to the definitions in this module
* may be overwritten by future releases of this library
* End users are encouraged to contact the distributers of this
* module regarding their modifications or additions
* @remark Adding of new message and header types is ok;
* Adding of new optional header fields in @see MessageHeader type
* is ok but should be done at same time as dummy template updates;
* Existing message or header types shall not be changed or removed -
* change requests shall be made to http://t-ort.etsi.org
bergengruen
committed
module LibSip_SIPTypesAndValues language "TTCN-3:2005"
{
import from LibSip_SDPTypes all;
import from LibSip_XMLTypes all;
import from LibSip_SimpleMsgSummaryTypes all;
group Constants
{
group SimpleConstants
{
// SIP name protocol plus version
const charstring c_sipNameVersion := "SIP/2.0";
// SIP name protocol
const charstring c_sipName := "SIP";
// SIP version
const charstring c_sipVersion := "2.0";
// SIP scheme
const charstring c_sipScheme := "sip";
// TEL scheme
const charstring c_telScheme := "tel";
// TAG_ID
const charstring c_tagId := "tag";
// BRANCH_ID
const charstring c_branchId := "branch";
// BRANCH_COOKIE
const charstring c_branchCookie := "z9hG4bK";
// EXPIRES_ID
const charstring c_expiresId := "expires";
// MADDR_ID
const charstring c_maddrId := "maddr";
// METHOD_ID
const charstring c_methodId := "method";
// RECEIVED_ID
const charstring c_receivedId := "received";
// TTL_ID
const charstring c_ttlId := "ttl";
// USER_ID
const charstring c_userId := "user";
// SDP name application
const charstring c_sdpAplication := "application/sdp";
// XML name application
const charstring c_xmlAplication := "application/xml";
// XML name application
const charstring c_xmlreginfoAplication := "application/reginfo+xml";
// MIME name application
const charstring c_mimeMultipart := "multipart/mixed";
// IMS 3GPP name application
const charstring c_ims3gppAplication := "application/3gpp-ims+xml";
// IMS 3GPP name CW application
const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml";
// IMS ETSI name MCID application
const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml";
// IMS ETSI name CUG application
const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml";
// IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG)
const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml";
// OCTET-STREAM name application
const charstring c_octetAplication := "application/octet-stream";
// PLAIN-TEXT name application
const charstring c_plainText := "text/plain";
//text content of 1300 bytes for messages with message body
const charstring c_longMessageContent_1300Bytes :=//"Hello!";
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"&
bergengruen
committed
oct2char('0D'O) & oct2char('0A'O); // CRLF
// Default SIP port number : 5060
const integer c_defaultSipPort := 5060;
// Default SIP protocol : UDP
const charstring c_defaultSipProt := "UDP";
// Fixed IP multicast address
const charstring c_mcastSipIpaddr := "224.0.1.75";
// Short delta-second used in expires parameter to acknowledge a registration
const charstring c_shortRegistration := "3600";
// ([RFC3891]Sec 6.1)
const charstring c_earlyFlag := "early-only";
// option tag replaces ([RFC3261])
const charstring c_replaces := "replaces";
// option tag 100rel (reliable provisional response [RFC3262])
const charstring c_tag100rel := "100rel";
// option tag from-change ([RFC4916])
const charstring c_tagFromChange := "from-change";
// option tag precondition (ch.11 [RFC3312])
const charstring c_tagPrecond := "precondition";
// due to problem with TAU compiler because hardcoded return statement constant is created
const HostPort c_hostport_dummy := {host:="", portField:=c_defaultSipPort};
// CLIP/CLIR information
const PrivacyValue c_privacy_none := "none";
const PrivacyValue c_privacy_id := "id";
const PrivacyValue c_privacy_header := "header";
const PrivacyValue c_privacy_user := "user";
const PrivacyValue c_privacy_critical := "critical";
const PrivacyValue c_privacy_session := "session";
// @ (at) sign
const charstring c_AT := "@";
const charstring c_SP := oct2char('20'O);
const charstring c_SLASH := oct2char('2F'O);
const charstring c_LT := oct2char('3C'O);
const charstring c_GT := oct2char('3E'O);
// * (wildchard) sign
const charstring c_WILDCARD := "*";
const integer c_CRlen := 2; // length of new line (0d0a)
const GenericParam c_Integrity_protected_yes := {"integrity-protected","yes"}
const GenericParam c_Integrity_protected_no := {"integrity-protected","no"}
const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected","ip-assoc-pending"}
} //end group SimpleConstants
group AuthorizationConstants {
const charstring c_ik := "";
const charstring c_ck := "";
const charstring c_algorithm := "MD5";
const charstring c_nonce := "";
const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b";
} //end group AuthorizationConstants
group PChargingVectorConstants {
const charstring c_icid := "icid-value";
const charstring c_icid_value := "123abc";
const charstring c_icid_generated_at := "icid-generated-at";
const charstring c_orig_ioi := "orig-ioi";
const charstring c_term_ioi := "term-ioi";
} //end group PChargingVectorConstants
group HeaderFieldConstants {
const CallId c_empty_CallId :=
{
fieldName := CALL_ID_E,
callid := ""
};
const ContentType c_empty_ContentType :=
{
fieldName := CONTENT_TYPE_E,
mediaType := ""
};
const CSeq c_empty_cSeq := {
fieldName := CSEQ_E,
seqNumber:=0,
const From c_empty_From := {
fieldName := FROM_E,
addressField := {nameAddr :=
{displayName := omit,
addrSpec := {
scheme := c_sipScheme,
userInfo := omit ,
urlParameters := omit,
headers := omit
}
}
},
fromParams := omit
};
const MaxForwards c_maxForwards70 := {fieldName:=MAX_FORWARDS_E, forwards:=70}
const SipUrl c_empty_RequestUri :=
{
scheme := c_sipScheme,
userInfo := omit ,
urlParameters := omit,
headers := omit
};
const SipUrl c_unavailableUri :=
{
scheme := c_sipScheme,
userInfo := {userOrTelephoneSubscriber:="unavailable", password:=omit},
hostPort := {host:="anonymous.invalid", portField:=c_defaultSipPort},
urlParameters := omit,
headers := omit
};
const To c_empty_To :=
{ // value of To header
fieldName := TO_E,
addressField :=
{
nameAddr :=
{
displayName := omit,
addrSpec :=
{
scheme := c_sipScheme,
userInfo := omit ,
urlParameters := omit,
headers := omit
}
}
},
toParams := omit
};
const Via c_empty_Via := {
fieldName := VIA_E,
viaBody :={
{sentProtocol := {
protocolName := c_sipName,
protocolVersion := c_sipVersion,
transport := c_defaultSipProt
},
viaParams:= omit
}
}};
}
group UserProfileConstants
{
// number of user profile from 1-10 for SIP profile
const integer c_userProfile_SIP1_home := 1;
const integer c_userProfile_SIP2_home := 2;
} //end group UserProfileConstants
group StatusLines
{
const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"};
const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"};
const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"};
const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"};
const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"};
const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"};
const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"};
const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"};
const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"};
const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"};
const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"};
const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"};
const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"};
const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"};
const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"};
const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"};
const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"};
const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"};
const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"};
const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy authentication required"};
const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"};
const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"};
const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity too long"};
const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-uri too long"};
const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media type"};
const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI scheme"};
const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"};
const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension required"};
const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"};
const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"};
const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"};
const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"};
const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction doesnot exist"};
const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"};
const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too many hops"};
const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"};
const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"};
const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"};
const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"};
const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not acceptable here"};
const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"};
const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal error"};
const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"};
const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"};
const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"};
const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server timeout"};
const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version not supported"};
const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message too long"};
const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition failure"};
const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"};
const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"};
const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does not exist anywhere"};
const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not acceptable"};
} //end StatusLines
rennoch
committed
group SIPSyncPointNames {
const charstring c_Ringing := "Ringing";
const charstring c_uPlane := "uPlane";
const charstring c_sync1 := "sync1";
const charstring c_sync2 := "sync2";
const charstring c_sync3 := "sync3";
const charstring c_uPlaneStop := "uPlaneStop";
const charstring c_annoucA := "announcementA";
const charstring c_annoucB := "announcementB";
const charstring c_annouc := "announcement";
const charstring c_voicem := "voiceMessage";
rennoch
committed
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
} //end group Constants
group Types {
group SubTypes{// Subtypes
group TokenTypes // TokensTypes
{
// [20]
type enumerated FieldName
{
ACCEPT_E,
ACCEPT_ENCODING_E,
ACCEPT_LANGUAGE_E,
ALERT_INFO_E,
ALLOW_E,
AUTHENTICATION_INFO_E,
AUTHORIZATION_E,
CALL_ID_E,
CALL_INFO_E,
CONTACT_E,
CONTENT_DISPOSITION_E,
CONTENT_ENCODING_E,
CONTENT_LANGUAGE_E,
CONTENT_LENGTH_E,
CONTENT_TYPE_E,
CSEQ_E,
DATE_E,
ERROR_INFO_E,
EXPIRES_E,
FROM_E,
IN_REPLY_TO_E,
MAX_FORWARDS_E,
MIME_VERSION_E,
MIN_EXPIRES_E,
ORGANIZATION_E,
PRIORITY_E,
PROXY_AUTHENTICATE_E,
PROXY_AUTHORIZATION_E,
PROXY_REQUIRE_E,
RECORD_ROUTE_E,
REPLY_TO_E,
REQUIRE_E,
RETRY_AFTER_E,
ROUTE_E,
SERVER_E,
SUBJECT_E,
SUPPORTED_E,
TIMESTAMP_E,
TO_E,
UNSUPPORTED_E,
USER_AGENT_E,
VIA_E,
WARNING_E,
WWW_AUTHENTICATE_E,
// [3262/7.1]
RACK_E,
RSEQ_E,
// [3265/7.2]
ALLOW_EVENTS_E,
EVENT_E,
SUBSCRIPTION_STATE_E,
// [3313]
P_MEDIA_AUTHORIZATION_E,
// [3323]
PRIVACY_E,
// [3325]
P_ASSERTED_ID_E,
P_PREFERRED_ID_E,
bergengruen
committed
P_PREFERRED_SERVICE_E,
// [3326]
REASON_E,
// [3515] - REFER method
REFER_TO_E,
// [3891]
REPLACES_E,
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
// [3892] - REFER method
REFERRED_BY_E,
// [4244]
HISTORY_INFO_E,
// [3313]
P_MEDIA_AUTH_E,
// [3327]
PATH_E,
// [3329]
SECURITY_CLIENT_E,
SECURITY_SERVER_E,
SECURITY_VERIFY_E,
// [3455]
P_ACCESS_NETWORK_INFO_E,
P_ASSOCIATED_URI_E,
P_CALLED_PARTY_E,
P_CHARGING_FUNCTION_ADDRESSES_E,
P_CHARGING_VECTOR_E,
P_VISITED_NETWORK_E,
// [3608]
SERVICE_ROUTE_E,
// [3841]
ACCEPT_CONTACT_E,
REQUEST_DISPOSITION_E,
// [4028]
MIN_SE_E,
SESSION_EXPIRES_E,
P_ASSERTED_SERVICE_E,
//[5009]
P_EARLY_MEDIA_E,
//http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07
//Transporting User to User Call Control Information in SIP for ISDN Interworking
bergengruen
committed
USER_TO_USER_E,
GEOLOCATION_E // draft-ietf-sipcore-location-conveyance-04
}
// [7.1]
type enumerated Method {
ACK_E,
BYE_E,
CANCEL_E,
INVITE_E,
OPTIONS_E,
REGISTER_E,
PRACK_E, // Note: this element is not defined in [5]
SUBSCRIBE_E, NOTIFY_E, // [3265]
PUBLISH_E, // [3903/12]
REFER_E, // [3515]
UPDATE_E, // [3311]
MESSAGE_E, // [3428]
INFO_E, // [2976]
UNKNOWN_METHOD_E
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
}
// [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31,
// 20.33, 20.34, 20.39, 20.42, 20.44]
type record GenericParam
{
charstring id,
charstring paramValue optional
}
// [?]
type set of GenericParam SemicolonParam_List;
// [?]
type set of GenericParam AmpersandParam_List;
// [?]
type set of GenericParam CommaParam_List;
// [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43]
type record HostPort
{
charstring host optional, // hostname, IPv4 or IPv6
integer portField optional // represented as an integer
}
// [20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
* @desc identifier for user or telephone subscriber
* @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber
* @member password related password information
*
*/
type record UserInfo
{
charstring userOrTelephoneSubscriber,
charstring password optional
}
// [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
*
* @desc Uniform Resource Identifier (URI)
* @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip
* @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords
* @member hostPort Hostname or IP address information and port identifier of the target
* @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone
* @member headers Additional information added after the parameters, e.g. priority=urgent
*/
charstring scheme, // e.g "sip" or "tel"
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
UserInfo userInfo optional,
HostPort hostPort optional,
SemicolonParam_List urlParameters optional,
AmpersandParam_List headers optional
}
// [20.1, RFC2616 14.1]
type record AcceptBody
{
charstring mediaRange,
SemicolonParam_List acceptParam optional
}
// [20.1, RFC2616 14.1]
type set of AcceptBody AcceptBody_List;
// [20.4]
type record AlertInfoBody
{
charstring url, // any URI
SemicolonParam_List genericParams optional
}
// [20.4]
type set of AlertInfoBody AlertInfoBody_List;
// [20.8]
type charstring CallidString; // token ["@" token]
// [20.8]
type set of CallidString CallidString_List;
// [20.9]
type record CallInfoBody
{
charstring url, // any URI
SemicolonParam_List infoParams optional
}
// [20.9]
type set of CallInfoBody CallInfoBody_List;
// [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2]
type union Challenge
{
CommaParam_List digestCln,
OtherAuth otherChallenge
}
// [20.10, 20.20, 20.30, 20.31, 20.34, 20.39]
type record NameAddr
{
charstring displayName optional,
SipUrl addrSpec
}
// [20.10, 20.20, 20.31, 20.39]
type union Addr_Union
{
NameAddr nameAddr,
SipUrl addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field
}
// [20.10]
type record ContactAddress
{
Addr_Union addressField,
SemicolonParam_List contactParams optional
}
// [20.10]
type set of ContactAddress ContactAddress_List; // 1 or more elements
// [20.10]
type union ContactBody
{
charstring wildcard,
ContactAddress_List contactAddresses
}
// [20.2, 20.12; RFC2616 14.3, 14.11]
type charstring ContentCoding;
// [20.2, 20.12; RFC2616 14.3, 14.11]
type set of ContentCoding ContentCoding_List;
// [20.7, 20.28; RFC2616 14.35 RFC2617 1.2]
type union Credentials
{
CommaParam_List digestResponse,
OtherAuth otherResponse
}
// allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28
type record of Credentials CredentialsList;
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
// [20.19, 20.23, 20.33]
type charstring DeltaSec; // an external operation can handle this field
// [20.18]
type record ErrorInfoBody
{
charstring uri, // any URI
SemicolonParam_List genericParams optional
}
// [20.18]
type set of ErrorInfoBody ErrorInfoBody_List;
// [20.3 RFC2616 14.4]
type record LanguageBody
{
charstring languageRange,
SemicolonParam_List acceptParam optional
}
// [20.3 RFC2616 14.4]
type set of LanguageBody LanguageBody_List;
// [20.13; RFC2616 14.12]
type charstring LanguageTag;
// [20.13; RFC2616 14.12]
type set of LanguageTag LanguageTag_List;
// [20.5]
type set of charstring Method_List;
// [20.29, 20.32, 20.37, 20.40]
type charstring OptionTag;
// [20.29, 20.32, 20.37, 20.40]
type set of OptionTag OptionTag_List;
// [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2]
type record OtherAuth
{
charstring authScheme,
CommaParam_List authParams
}
type record Payload
{
integer payloadlength,
charstring payloadvalue
}
// [20.30,20.34]
type record RouteBody
{
NameAddr nameAddr,
SemicolonParam_List rrParam optional
}
// [20.30,20.34]
type record of RouteBody RouteBody_List;
// [20.42]
type record SentProtocol
{
charstring protocolName,
charstring protocolVersion,
charstring transport
}
// [20.35, 20.41; RFC2616 14.43]
type charstring ServerVal;
// [20.35, 20.41; RFC2616 14.43]
type set of ServerVal ServerVal_List;
// [20.38]
type record TimeValue
{
integer majorDigit, // represented as an integer
integer minorDigit optional // represented as an integer
}
// [20.42]
type record ViaBody
{
SentProtocol sentProtocol,
HostPort sentBy,
SemicolonParam_List viaParams optional
}
// [20.42]
type record of ViaBody ViaBody_List;
// [20.43]
type union WarnAgent
{
HostPort hostPort,
charstring pseudonym
}
// [20.43]
type record WarningValue
{
integer warnCode, // represented as an integer
WarnAgent warnAgent,
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
}
// [20.43]
type set of WarningValue WarningValue_List;
type Addr_Union PAssertedIDValue;
type record of PAssertedIDValue PAssertedIDValue_List;
type charstring PAssertedServiceValue;
type Addr_Union PPreferredIDValue;
type record of PPreferredIDValue PPreferredIDValue_List;
type charstring PrivacyValue;
type record of PrivacyValue PrivacyValue_List;
} // end group TokensType
group HeaderFieldTypes // Header Fields
{
group CommonHeaderFieldTypes
{
// [20.1, RFC2616 14.1]
type record Accept
{
FieldName fieldName (ACCEPT_E),
AcceptBody_List acceptArgs optional
}
// [20.2, RFC2616 14.3]
type record AcceptEncoding
{
FieldName fieldName (ACCEPT_ENCODING_E),
ContentCoding_List contentCoding optional
}
// [20.3, RFC2616 14.4]
type record AcceptLanguage
{
FieldName fieldName (ACCEPT_LANGUAGE_E),
LanguageBody_List languageBody optional
}
// [20.4]
type record AlertInfo
{
FieldName fieldName (ALERT_INFO_E),
AlertInfoBody_List alertInfoBody optional
}
// [20.5]
type record Allow
{
FieldName fieldName (ALLOW_E),
Method_List methods optional
}
// [20.6]
type record AuthenticationInfo
{
FieldName fieldName (AUTHENTICATION_INFO_E),
CommaParam_List ainfo
}
// [20.7 RFC2617 3.2.2]
type record Authorization
{
FieldName fieldName (AUTHORIZATION_E),
CredentialsList body // changed from Credentials to allow multiple Authorization headers
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
}
// [20.8]
type record CallId
{
FieldName fieldName (CALL_ID_E),
CallidString callid
}
// [20.9]
type record CallInfo
{
FieldName fieldName (CALL_INFO_E),
CallInfoBody_List callInfoBody optional
}
// [20.10]
type record Contact
{
FieldName fieldName (CONTACT_E),
ContactBody contactBody
}
// [20.11]
type record ContentDisposition
{
FieldName fieldName (CONTENT_DISPOSITION_E),
charstring dispositionType,
SemicolonParam_List dispositionParams optional
}
// [20.12 RFC2616 14.11]
type record ContentEncoding
{
FieldName fieldName (CONTENT_ENCODING_E),
ContentCoding_List contentCoding
}
// [20.13 RFC2616 14.12]
type record ContentLanguage
{
FieldName fieldName (CONTENT_LANGUAGE_E),
LanguageTag_List languageTag
}
// [20.14]
type record ContentLength
{
FieldName fieldName (CONTENT_LENGTH_E),
integer len // this field is represented as an integer
}
// [20.15]
type record ContentType
{
FieldName fieldName (CONTENT_TYPE_E),
charstring mediaType
}
// [20.16]
type record CSeq
{
FieldName fieldName (CSEQ_E),
integer seqNumber, // this field is represented as an integer
charstring method
}
// [20.17]
type record Date
{
FieldName fieldName (DATE_E),
charstring sipDate
}
// [20.18]
type record ErrorInfo
{
FieldName fieldName (ERROR_INFO_E),
ErrorInfoBody_List errorInfo optional
}
// [20.19]
type record Expires
{
FieldName fieldName (EXPIRES_E),
DeltaSec deltaSec
}
// [20.20]
type record From
{
FieldName fieldName (FROM_E),
Addr_Union addressField,
SemicolonParam_List fromParams optional
}
// [20.21]
type record InReplyTo
{
FieldName fieldName (IN_REPLY_TO_E),
CallidString_List callids
}
// [20.22]
type record MaxForwards
{
FieldName fieldName (MAX_FORWARDS_E),
integer forwards // this field is represented as an integer
}
// [20.23]
type record MinExpires
{
FieldName fieldName (MIN_EXPIRES_E),
DeltaSec deltaSec
}
// [20.24 RFC2616 19.4.1]
type record MimeVersion
{
FieldName fieldName (MIME_VERSION_E),
integer majorNumber, // this field is represented as an integer
integer minorNumber // this field is represented as an integer
}
// [20.25]
type record Organization
{
FieldName fieldName (ORGANIZATION_E),
charstring organization
}
// [20.26]
type record Priority
{
FieldName fieldName (PRIORITY_E),
charstring priorityValue
}
// [20.27 RFC2616 14.33 RFC2617 1.2]
type record ProxyAuthenticate
{
FieldName fieldName (PROXY_AUTHENTICATE_E),
Challenge challenge
}