Rev

Rev 656 | Details | Compare with Previous | Last modification | View Log | SVN | Bug Tracker

Rev Author Line No. Line
33 schulzs 1
/**
636 rennoch 2
 * @author STF 346, STF366, STF368, STF369, STF450, STF471, STF160
599 tepelmann 3
 * @version $Id: LibSip_SIPTypesAndValues.ttcn 658 2018-06-14 06:44:44Z genoudoli $
4
 * @desc This module defines message, header, structured and simple SIP
5
 *             types as well constants used by LipSip constructs. <br>
6
 *             Note that any changes made to the definitions in this module
7
 *             may be overwritten by future releases of this library
8
 *             End users are encouraged to contact the distributers of this
9
 *             module regarding their modifications or additions
10
 *             This module is part of LibSipV3.
11
 * @remark Adding of new message and header types is ok; Adding of new optional header fields in
12
 * @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
9 rennoch 13
 */
599 tepelmann 14
module LibSip_SIPTypesAndValues {
15
    import from LibSip_MessageBodyTypes all;
636 rennoch 16
    import from LibSip_Common all;
9 rennoch 17
 
599 tepelmann 18
    group Constants {
19
        group SimpleConstants {
20
            // SIP name protocol plus version
21
            const charstring c_sipNameVersion := "SIP/2.0";
9 rennoch 22
 
599 tepelmann 23
            // SIP name protocol
24
            const charstring c_sipName := "SIP";
527 rennoch 25
 
599 tepelmann 26
            // SIP version
27
            const charstring c_sipVersion := "2.0";
527 rennoch 28
 
599 tepelmann 29
            // SIP scheme
30
            const charstring c_sipScheme := "sip";
562 garciay 31
 
599 tepelmann 32
            // TEL scheme
33
            const charstring c_telScheme := "tel";
527 rennoch 34
 
599 tepelmann 35
            // URN schema
36
            const charstring c_urnScheme := "urn";
527 rennoch 37
 
599 tepelmann 38
            // TAG_ID
39
            const charstring c_tagId := "tag";
527 rennoch 40
 
599 tepelmann 41
            // BRANCH_ID
42
            const charstring c_branchId := "branch";
527 rennoch 43
 
599 tepelmann 44
            // BRANCH_COOKIE
45
            const charstring c_branchCookie := "z9hG4bK";
527 rennoch 46
 
599 tepelmann 47
            // EXPIRES_ID
48
            const charstring c_expiresId := "expires";
527 rennoch 49
 
599 tepelmann 50
            // MADDR_ID
51
            const charstring c_maddrId := "maddr";
527 rennoch 52
 
599 tepelmann 53
            // METHOD_ID
54
            const charstring c_methodId := "method";
562 garciay 55
 
599 tepelmann 56
            // RECEIVED_ID
57
            const charstring c_receivedId := "received";
527 rennoch 58
 
599 tepelmann 59
            // TTL_ID
60
            const charstring c_ttlId := "ttl";
340 deshpande 61
 
599 tepelmann 62
            // USER_ID
63
            const charstring c_userId := "user";
340 deshpande 64
 
599 tepelmann 65
            // SDP name application
66
            const charstring c_sdpApplication := "application/sdp";
9 rennoch 67
 
599 tepelmann 68
            // XML name application
69
            const charstring c_xmlApplication := "application/xml";
9 rennoch 70
 
599 tepelmann 71
            // XML name application
72
            const charstring c_xmlreginfoApplication := "application/reginfo+xml";
9 rennoch 73
 
599 tepelmann 74
            // XML name resource-list
75
            const charstring c_xmlresourcelistApplication := "application/resource-lists+xml";
9 rennoch 76
 
599 tepelmann 77
            // IMS 3GPP name application
78
            const charstring c_ims3gppApplication := "application/3gpp-ims+xml";
527 rennoch 79
 
599 tepelmann 80
            // IMS 3GPP name CW application
81
            const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml";
527 rennoch 82
 
599 tepelmann 83
            // IMS ETSI name MCID application
84
            const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml";
527 rennoch 85
 
599 tepelmann 86
            // IMS ETSI name CUG application
87
            const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml";
9 rennoch 88
 
599 tepelmann 89
            // IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG)
90
            const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml";
9 rennoch 91
 
599 tepelmann 92
            // OCTET-STREAM name application
93
            const charstring c_octetApplication := "application/octet-stream";
527 rennoch 94
 
599 tepelmann 95
            // PLAIN-TEXT name application
96
            const charstring c_plainText := "text/plain";
9 rennoch 97
 
599 tepelmann 98
            // SIP fragment message
99
            const charstring c_sipfragMessage := "message/sipfrag";
408 pintar 100
 
599 tepelmann 101
            // text content of 1300 bytes for messages with message body
102
            const charstring c_longMessageContent_1300Bytes :=
103
                "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" &
636 rennoch 104
                "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & oct2char('0D'O) & oct2char('0A'O); // CRLF
599 tepelmann 105
            // Default SIP port number : 5060
106
            const integer c_defaultSipPort := 5060;
527 rennoch 107
 
599 tepelmann 108
            // Default SIP protocol : UDP
109
            const charstring c_defaultSipProt := "UDP";
408 pintar 110
 
599 tepelmann 111
            // Fixed IP multicast address
112
            const charstring c_mcastSipIpaddr := "224.0.1.75";
9 rennoch 113
 
599 tepelmann 114
            // Short delta-second used in expires parameter to acknowledge a registration
115
            const charstring c_shortRegistration := "3600";
223 reinaorteg 116
 
599 tepelmann 117
            // ([RFC3891 ] Sec 6.1)
118
            const charstring c_earlyFlag := "early-only";
9 rennoch 119
 
599 tepelmann 120
            // option tag replaces ([RFC3261 ] )
121
            const charstring c_replaces := "replaces";
9 rennoch 122
 
599 tepelmann 123
            // option tag 100rel (reliable provisional response [RFC3262 ] )
124
            const charstring c_tag100rel := "100rel";
9 rennoch 125
 
599 tepelmann 126
            // option tag from-change ([RFC4916 ] )
127
            const charstring c_tagFromChange := "from-change";
527 rennoch 128
 
599 tepelmann 129
            // option tag precondition (ch.11 [RFC3312 ] )
130
            const charstring c_tagPrecond := "precondition";
527 rennoch 131
 
599 tepelmann 132
            // due to problem with TAU compiler because hardcoded return statement constant is created
133
            const HostPort c_hostport_dummy := {
134
                host := "",
135
                portField := c_defaultSipPort
136
            };
527 rennoch 137
 
599 tepelmann 138
            // CLIP/CLIR information
139
            const PrivacyValue c_privacy_none := "none";
140
            const PrivacyValue c_privacy_id := "id";
141
            const PrivacyValue c_privacy_header := "header";
142
            const PrivacyValue c_privacy_user := "user";
143
            const PrivacyValue c_privacy_critical := "critical";
144
            const PrivacyValue c_privacy_session := "session";
145
 
146
            //
636 rennoch 147
            const charstring c_AT := "@"; // MRO
599 tepelmann 148
            const charstring c_SP := oct2char('20'O);
149
            const charstring c_SLASH := oct2char('2F'O);
150
            const charstring c_LT := oct2char('3C'O);
151
            const charstring c_GT := oct2char('3E'O);
152
 
153
            // * (wildchard) sign
154
            const charstring c_WILDCARD := "*";
155
 
156
            const integer c_CRlen := 2;
157
            // length of new line (0d0a)
620 nikolajev 158
            const GenericParam c_Integrity_protected_yes := {"integrity-protected", {tokenOrHost := "yes"}};
159
            const GenericParam c_Integrity_protected_no := {"integrity-protected", {tokenOrHost := "no"}};
160
            const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected", {tokenOrHost := "ip-assoc-pending"}};
599 tepelmann 161
 
620 nikolajev 162
            const charstring c_algorithm := "MD5";
599 tepelmann 163
 
164
        } // end group SimpleConstants
165
 
166
        group AuthorizationConstants {
167
 
168
            const charstring c_ik := "";
169
            const charstring c_ck := "";
170
            const charstring c_nonce := "";
171
            const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b";
172
 
173
 
174
        } // end group AuthorizationConstants
175
 
176
        group PChargingVectorConstants {
177
 
178
            const charstring c_icid := "icid-value";
179
            const charstring c_icid_value := "123abc";
180
            const charstring c_icid_generated_at := "icid-generated-at";
181
            const charstring c_orig_ioi := "orig-ioi";
182
            const charstring c_term_ioi := "term-ioi";
183
            const charstring c_access_network_charging_info := "access-network-charging-info";
184
 
185
 
186
        } // end group PChargingVectorConstants
187
 
188
        group HeaderFieldConstants {
189
 
190
            const CallId c_empty_CallId := {
191
                fieldName := CALL_ID_E,
192
                callid := ""
193
            };
194
 
195
            const ContentType c_empty_ContentType := {
196
                fieldName := CONTENT_TYPE_E,
658 genoudoli 197
                mTypeSubtype := "",
198
                mParams := omit
599 tepelmann 199
            };
200
 
201
            const CSeq c_empty_cSeq := {
202
                fieldName := CSEQ_E,
203
                seqNumber := 0,
204
                method := "EMPTY"
205
            };
206
 
207
            const From c_empty_From := {
208
                fieldName := FROM_E,
209
                addressField := {
210
                    nameAddr := {
211
                        displayName := omit,
212
                        addrSpec := {
213
                            scheme := c_sipScheme,
214
                            components := {
215
                                sip := {
216
                                    userInfo := omit,
217
                                    hostPort := {
218
                                        host := "127.0.0.1",
219
                                        portField := c_defaultSipPort
220
                                    }
221
                                }
222
                            },
223
                            urlParameters := omit,
224
                            headers := omit
225
                        }
226
                    }
227
                },
228
                fromParams := omit
229
            };
230
 
231
            const MaxForwards c_maxForwards70 := {
232
                fieldName := MAX_FORWARDS_E,
233
                forwards := 70
234
            };
235
 
236
            const SipUrl c_empty_RequestUri := {
237
                scheme := c_sipScheme,
238
                components := {
239
                    sip := {
240
                        userInfo := omit,
241
                        hostPort := {
242
                            host := "127.0.0.1",
243
                            portField := c_defaultSipPort
244
                        }
245
                    }
246
                },
247
                urlParameters := omit,
248
                headers := omit
249
            };
250
 
251
            const SipUrl c_unavailableUri := {
252
                scheme := c_sipScheme,
253
                components := {
254
                    sip := {
255
                        userInfo := {
256
                            userOrTelephoneSubscriber := "unavailable",
257
                            password := omit
258
                        },
259
                        hostPort := {
260
                            host := "anonymous.invalid",
261
                            portField := c_defaultSipPort
262
                        }
263
                    }
264
                },
265
                urlParameters := omit,
266
                headers := omit
267
            };
268
 
636 rennoch 269
            const To c_empty_To := { // value of To header
599 tepelmann 270
                fieldName := TO_E,
271
                addressField := {
272
                    nameAddr := {
273
                        displayName := omit,
274
                        addrSpec := {
275
                            scheme := c_sipScheme,
276
                            components := {
277
                                sip := {
278
                                    userInfo := omit,
279
                                    hostPort := {
280
                                        host := "127.0.0.1",
281
                                        portField := c_defaultSipPort
282
                                    }
283
                                }
284
                            },
285
                            urlParameters := omit,
286
                            headers := omit
287
                        }
288
                    }
289
                },
290
                toParams := omit
291
            };
292
 
293
            const Via c_empty_Via := {
294
                fieldName := VIA_E,
295
                viaBody := {
296
                    {
297
                        sentProtocol := {
298
                            protocolName := c_sipName,
299
                            protocolVersion := c_sipVersion,
300
                            transport := c_defaultSipProt
301
                        },
302
                        sentBy := {
303
                            host := "127.0.0.1",
304
                            portField := c_defaultSipPort
305
                        },
306
                        viaParams := omit
307
                    }
308
                }
309
            };
310
 
311
 
527 rennoch 312
        }
313
 
599 tepelmann 314
 
315
        group UserProfileConstants {
316
            // number of user profile from 1-10 for SIP profile
317
            const integer c_userProfile_SIP1_home := 1;
318
            const integer c_userProfile_SIP2_home := 2;
319
 
320
 
321
        } // end group UserProfileConstants
322
 
323
        group StatusLines {
324
            const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"};
325
            const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"};
326
            const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"};
327
            const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"};
328
            const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"};
329
 
330
            const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"};
331
            const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"};
332
 
333
            const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"};
334
            const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"};
335
            const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"};
336
            const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"};
337
            const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"};
338
 
339
            const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"};
340
            const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"};
341
            const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"};
342
            const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"};
343
            const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"};
344
            const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"};
345
            const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"};
346
            const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy Authentication Required"};
347
            const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"};
348
            const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"};
349
            const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity Too Large"};
350
            const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-URI Too Long"};
351
            const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media Type"};
352
            const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI Scheme"};
353
            const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"};
354
            const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension Required"};
355
            const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"};
356
            const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"};
357
            const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"};
358
            const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"};
359
            const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction Does Not Exist"};
360
            const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"};
361
            const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too Many Hops"};
362
            const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"};
363
            const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"};
364
            const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"};
365
            const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"};
366
            const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not Acceptable Here"};
367
            const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"};
368
            const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal Error"};
369
            const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"};
370
            const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"};
371
            const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"};
372
            const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server Time-out"};
373
            const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version Not Supported"};
374
            const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message Too Large"};
375
            const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition Failure"};
376
            const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"};
377
            const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"};
378
            const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does Not Exist Anywhere"};
379
            const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not Acceptable"};
380
 
381
 
382
        } // end StatusLines
383
 
384
        group SIPSyncPointNames {
385
            const charstring c_Ringing := "Ringing";
386
            const charstring c_uPlane := "uPlane";
387
            const charstring c_sync1 := "sync1";
388
            const charstring c_sync2 := "sync2";
389
            const charstring c_sync3 := "sync3";
390
            const charstring c_sync4 := "sync4";
391
            const charstring c_uPlaneStop := "uPlaneStop";
392
            const charstring c_annoucA := "announcementA";
393
            const charstring c_annoucB := "announcementB";
394
            const charstring c_annouc := "announcement";
395
            const charstring c_voicem := "voiceMessage";
527 rennoch 396
        }
397
 
398
 
599 tepelmann 399
    } // end group Constants
9 rennoch 400
 
599 tepelmann 401
    group Types {
402
        group SubTypes {
403
            // Subtypes
404
            group TokenTypes // TokensTypes
405
                              {
406
                // [20 ]
407
                type enumerated FieldName {
408
                    ACCEPT_E,
409
                    ACCEPT_ENCODING_E,
410
                    ACCEPT_LANGUAGE_E,
411
                    ALERT_INFO_E,
412
                    ALLOW_E,
413
                    AUTHENTICATION_INFO_E,
414
                    AUTHORIZATION_E,
415
                    CALL_ID_E,
416
                    CALL_INFO_E,
417
                    CONTACT_E,
418
                    CONTENT_DISPOSITION_E,
419
                    CONTENT_ENCODING_E,
420
                    CONTENT_LANGUAGE_E,
421
                    CONTENT_LENGTH_E,
422
                    CONTENT_TYPE_E,
423
                    CSEQ_E,
424
                    DATE_E,
425
                    ERROR_INFO_E,
426
                    EXPIRES_E,
427
                    FROM_E,
428
                    IN_REPLY_TO_E,
429
                    MAX_FORWARDS_E,
430
                    MIME_VERSION_E,
431
                    MIN_EXPIRES_E,
432
                    ORGANIZATION_E,
433
                    PRIORITY_E,
434
                    PROXY_AUTHENTICATE_E,
435
                    PROXY_AUTHORIZATION_E,
436
                    PROXY_REQUIRE_E,
437
                    RECORD_ROUTE_E,
438
                    REPLY_TO_E,
439
                    REQUIRE_E,
440
                    RETRY_AFTER_E,
441
                    ROUTE_E,
442
                    SERVER_E,
443
                    SUBJECT_E,
444
                    SUPPORTED_E,
445
                    TIMESTAMP_E,
446
                    TO_E,
447
                    UNSUPPORTED_E,
448
                    USER_AGENT_E,
449
                    VIA_E,
450
                    WARNING_E,
451
                    WWW_AUTHENTICATE_E,
452
                    // [3262/7.1 ]
453
                    RACK_E,
454
                    RSEQ_E,
455
                    // [3265/7.2 ]
456
                    ALLOW_EVENTS_E,
457
                    EVENT_E,
458
                    SUBSCRIPTION_STATE_E,
459
                    // [3313 ]
460
                    P_MEDIA_AUTHORIZATION_E,
461
                    // [3323 ]
462
                    PRIVACY_E,
463
                    // [3325 ]
464
                    P_ASSERTED_ID_E,
465
                    P_PREFERRED_ID_E,
466
                    P_PREFERRED_SERVICE_E,
467
                    // [3326 ]
468
                    REASON_E,
469
                    // [3515 ] - REFER method
470
                    REFER_TO_E,
471
                    // [4488 ] - REFER method
472
                    REFER_SUB_E,
473
                    // [3891 ]
474
                    REPLACES_E,
475
                    // [3892 ] - REFER method
476
                    REFERRED_BY_E,
477
                    // [4244 ]
478
                    HISTORY_INFO_E,
479
                    // [3313 ]
480
                    P_MEDIA_AUTH_E,
481
                    // [3327 ]
482
                    PATH_E,
483
                    // [3329 ]
484
                    SECURITY_CLIENT_E,
485
                    SECURITY_SERVER_E,
486
                    SECURITY_VERIFY_E,
487
                    // [3455 ]
488
                    P_ACCESS_NETWORK_INFO_E,
489
                    P_ASSOCIATED_URI_E,
490
                    P_CALLED_PARTY_E,
491
                    P_CHARGING_FUNCTION_ADDRESSES_E,
492
                    P_CHARGING_VECTOR_E,
493
                    P_VISITED_NETWORK_E,
494
                    // [3608 ]
495
                    SERVICE_ROUTE_E,
496
                    // [3841 ]
497
                    ACCEPT_CONTACT_E,
498
                    REQUEST_DISPOSITION_E,
499
                    // [4028 ]
500
                    MIN_SE_E,
501
                    SESSION_EXPIRES_E,
502
                    P_ASSERTED_SERVICE_E,
503
                    // [5009 ]
504
                    P_EARLY_MEDIA_E,
505
                    // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07
506
                    // Transporting User to User Call Control Information in SIP for ISDN Interworking
507
                    USER_TO_USER_E,
508
                    // [6442 ] /*
509
                    GEOLOCATION_E,
510
                    GEOLOCATION_ROUTING_E,
511
                    SESSION_ID_E,
512
                    SIP_ETAG_E,
620 nikolajev 513
                    SIP_IF_MATCH_E,
638 rennoch 514
                    FEATURE_CAPS_E,
515
                    // 6086
516
                    RECV_INFO_E,
517
                    INFO_PACKAGE_E,
518
                    // 2616
646 rennoch 519
                    HOST_E,
520
                    // 
521
                    RESOURCE_PRIORITY_E, //4412
522
                    ANSWER_MODE_E, //5373
523
                    PRIV_ANSWER_MODE_E, //5373
524
                    TARGET_DIALOG_E, //4538
525
                    P_ANSWER_STATE_E //4964
599 tepelmann 526
                }
9 rennoch 527
 
599 tepelmann 528
                // [7.1 ]
529
                type enumerated Method {
530
                    ACK_E,
531
                    BYE_E,
532
                    CANCEL_E,
533
                    INVITE_E,
534
                    OPTIONS_E,
535
                    REGISTER_E,
536
                    PRACK_E // Note: this element is not defined in [5 ]
537
                            ,
538
                    SUBSCRIBE_E,
539
                    NOTIFY_E // [3265 ]
540
                             ,
541
                    PUBLISH_E // [3903/12 ]
542
                              ,
543
                    REFER_E // [3515 ]
544
                            ,
545
                    UPDATE_E // [3311 ]
546
                             ,
547
                    MESSAGE_E // [3428 ]
548
                              ,
549
                    INFO_E // [2976 ]
550
                           ,
551
                    UNKNOWN_METHOD_E
552
                }
9 rennoch 553
 
599 tepelmann 554
                // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43 ]
555
                type record HostPort {
636 rennoch 556
                    charstring host optional, // hostname, IPv4 or IPv6
557
                    integer portField optional // represented as an integer
599 tepelmann 558
                }
527 rennoch 559
 
599 tepelmann 560
                // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ]
561
                /**
562
                 * @desc identifier for user or telephone subscriber
563
                 * @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber
564
                 * @member password related password information
565
                 */
566
                type record UserInfo {
567
                    charstring userOrTelephoneSubscriber,
568
                    charstring password optional
569
                }
13 rennoch 570
 
599 tepelmann 571
                // [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ]
572
                /**
573
                 * @desc Uniform Resource Identifier (URI)
574
                 * @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip
575
                 * @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords
576
                 * @member hostPort Hostname or IP address information and port identifier of the target
577
                 * @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone
578
                 * @member headers Additional information added after the parameters, e.g. priority=urgent
579
                 */
636 rennoch 580
                type record SipUriComponents { // sip-uri acc. to RFC 3261 cl. 19.1
599 tepelmann 581
                    UserInfo userInfo optional,
582
                    HostPort hostPort
583
                }
13 rennoch 584
 
636 rennoch 585
                type record TelUriComponents { // tel-uri acc. to RFC 3966
599 tepelmann 586
                    charstring subscriber
587
                }
9 rennoch 588
 
636 rennoch 589
                type record UrnUriComponents { // urn-uri acc. to RFC 2141
590
                    charstring namespaceId, // e.g. "service" as acc. to RFC 5031
591
                    charstring namespaceSpecificString // e.g. "sos"
599 tepelmann 592
                }
527 rennoch 593
 
599 tepelmann 594
                type union UriComponents {
636 rennoch 595
                    SipUriComponents sip, // scheme: "sip" or sips"
596
                    TelUriComponents tel, // scheme: "tel"
597
                    UrnUriComponents urn, // scheme: "urn"
598
                    charstring other // scheme: none of the above schemes
599 tepelmann 599
                }
527 rennoch 600
 
599 tepelmann 601
                type record SipUrl {
636 rennoch 602
                    charstring scheme, // e.g "sip" or "tel"
603
                    UriComponents components, // corresponding to the scheme
599 tepelmann 604
                    SemicolonParam_List urlParameters optional,
605
                    AmpersandParam_List headers optional
606
                }
527 rennoch 607
 
599 tepelmann 608
                // [20.1, RFC2616 14.1 ]
609
                type record AcceptBody {
610
                    charstring mediaRange,
611
                    SemicolonParam_List acceptParam optional
612
                }
527 rennoch 613
 
599 tepelmann 614
                // [20.1, RFC2616 14.1 ]
615
                type set of AcceptBody AcceptBody_List;
9 rennoch 616
 
599 tepelmann 617
                // [20.4 ]
618
                type record AlertInfoBody {
636 rennoch 619
                    charstring url, // any URI
599 tepelmann 620
                    SemicolonParam_List genericParams optional
621
                }
340 deshpande 622
 
599 tepelmann 623
                // [20.4 ]
624
                type set of AlertInfoBody AlertInfoBody_List;
527 rennoch 625
 
599 tepelmann 626
                // [20.8 ]
627
                type charstring CallidString;
628
                // token ["
629
                // [20.8 ]
630
                type set of CallidString CallidString_List;
527 rennoch 631
 
599 tepelmann 632
                // [20.9 ]
633
                type record CallInfoBody {
636 rennoch 634
                    charstring url, // any URI
599 tepelmann 635
                    SemicolonParam_List infoParams optional
636
                }
527 rennoch 637
 
599 tepelmann 638
                // [20.9 ]
639
                type set of CallInfoBody CallInfoBody_List;
527 rennoch 640
 
599 tepelmann 641
                // [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2 ]
642
                type union Challenge {
643
                    CommaParam_List digestCln,
644
                    OtherAuth otherChallenge
645
                }
527 rennoch 646
 
599 tepelmann 647
                // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ]
636 rennoch 648
                type union DisplayName
649
                {
650
                  charstring  token,
651
                  charstring  quotedString
652
                }
653
 
654
                // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ]
599 tepelmann 655
                type record NameAddr {
636 rennoch 656
                    DisplayName displayName optional,
599 tepelmann 657
                    SipUrl addrSpec
658
                }
527 rennoch 659
 
599 tepelmann 660
                // [20.10, 20.20, 20.31, 20.39 ]
661
                type union Addr_Union {
662
                    NameAddr nameAddr,
636 rennoch 663
                    SipUrl addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field
599 tepelmann 664
                }
527 rennoch 665
 
599 tepelmann 666
                // [20.10 ]
667
                type record ContactAddress {
668
                    Addr_Union addressField,
669
                    SemicolonParam_List contactParams optional
670
                }
527 rennoch 671
 
599 tepelmann 672
                // [20.10 ]
636 rennoch 673
                type set of ContactAddress ContactAddress_List; // 1 or more elements
599 tepelmann 674
                // [20.10 ]
675
                type union ContactBody {
676
                    charstring wildcard,
677
                    ContactAddress_List contactAddresses
678
                }
527 rennoch 679
 
599 tepelmann 680
                // [20.2, 20.12; RFC2616 14.3, 14.11 ]
681
                type charstring ContentCoding;
527 rennoch 682
 
599 tepelmann 683
                // [20.2, 20.12; RFC2616 14.3, 14.11 ]
684
                type set of ContentCoding ContentCoding_List;
527 rennoch 685
 
599 tepelmann 686
                // [20.7, 20.28; RFC2616 14.35 RFC2617 1.2 ]
687
                type union Credentials {
688
                    CommaParam_List digestResponse,
689
                    OtherAuth otherResponse
690
                }
527 rennoch 691
 
599 tepelmann 692
                // allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28
693
                type record of Credentials CredentialsList;
527 rennoch 694
 
599 tepelmann 695
                // [20.19, 20.23, 20.33 ]
636 rennoch 696
                type charstring DeltaSec; // an external operation can handle this field
599 tepelmann 697
                // [20.18 ]
698
                type record ErrorInfoBody {
636 rennoch 699
                    charstring uri, // any URI
599 tepelmann 700
                    SemicolonParam_List genericParams optional
701
                }
527 rennoch 702
 
599 tepelmann 703
                // [20.18 ]
704
                type set of ErrorInfoBody ErrorInfoBody_List;
527 rennoch 705
 
599 tepelmann 706
                // [20.3 RFC2616 14.4 ]
707
                type record LanguageBody {
708
                    charstring languageRange,
709
                    SemicolonParam_List acceptParam optional
710
                }
237 rennoch 711
 
599 tepelmann 712
                // [20.3 RFC2616 14.4 ]
713
                type set of LanguageBody LanguageBody_List;
237 rennoch 714
 
599 tepelmann 715
                // [20.13; RFC2616 14.12 ]
716
                type charstring LanguageTag;
527 rennoch 717
 
599 tepelmann 718
                // [20.13; RFC2616 14.12 ]
719
                type set of LanguageTag LanguageTag_List;
527 rennoch 720
 
599 tepelmann 721
                // [20.5 ]
722
                type set of charstring Method_List;
527 rennoch 723
 
599 tepelmann 724
                // [20.29, 20.32, 20.37, 20.40 ]
725
                type charstring OptionTag;
9 rennoch 726
 
599 tepelmann 727
                // [20.29, 20.32, 20.37, 20.40 ]
728
                type set of OptionTag OptionTag_List;
9 rennoch 729
 
599 tepelmann 730
                // [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2 ]
731
                type record OtherAuth {
732
                    charstring authScheme,
733
                    CommaParam_List authParams
734
                }
9 rennoch 735
 
599 tepelmann 736
                type record Payload {
737
                    integer payloadlength,
738
                    charstring payloadvalue
739
                }
9 rennoch 740
 
599 tepelmann 741
                // [20.30,20.34 ]
742
                type record RouteBody {
743
                    NameAddr nameAddr,
744
                    SemicolonParam_List rrParam optional
745
                }
9 rennoch 746
 
599 tepelmann 747
                // [20.30,20.34 ]
748
                type record of RouteBody RouteBody_List;
9 rennoch 749
 
599 tepelmann 750
                // [20.42 ]
751
                type record SentProtocol {
752
                    charstring protocolName,
753
                    charstring protocolVersion,
754
                    charstring transport
755
                }
9 rennoch 756
 
599 tepelmann 757
                // [20.35, 20.41; RFC2616 14.43 ]
758
                type charstring ServerVal;
9 rennoch 759
 
599 tepelmann 760
                // [20.35, 20.41; RFC2616 14.43 ]
761
                type set of ServerVal ServerVal_List;
9 rennoch 762
 
599 tepelmann 763
                // [20.38 ]
764
                type record TimeValue {
636 rennoch 765
                    integer majorDigit, // represented as an integer
766
                    integer minorDigit optional // represented as an integer
599 tepelmann 767
                }
527 rennoch 768
 
599 tepelmann 769
                // [20.42 ]
770
                type record ViaBody {
771
                    SentProtocol sentProtocol,
772
                    HostPort sentBy,
773
                    SemicolonParam_List viaParams optional
774
                }
527 rennoch 775
 
599 tepelmann 776
                // [20.42 ]
777
                type record of ViaBody ViaBody_List;
527 rennoch 778
 
599 tepelmann 779
                // [20.43 ]
780
                type union WarnAgent {
781
                    HostPort hostPort,
782
                    charstring pseudonym
783
                }
527 rennoch 784
 
599 tepelmann 785
                // [20.43 ]
786
                type record WarningValue {
636 rennoch 787
                    integer warnCode, // represented as an integer
599 tepelmann 788
                    WarnAgent warnAgent,
789
                    charstring warnText
790
                }
527 rennoch 791
 
599 tepelmann 792
                // [20.43 ]
793
                type set of WarningValue WarningValue_List;
527 rennoch 794
 
599 tepelmann 795
                type Addr_Union PAssertedIDValue;
527 rennoch 796
 
599 tepelmann 797
                type record of PAssertedIDValue PAssertedIDValue_List;
491 bergengrue 798
 
599 tepelmann 799
                type charstring PAssertedServiceValue;
9 rennoch 800
 
599 tepelmann 801
                type Addr_Union PPreferredIDValue;
9 rennoch 802
 
599 tepelmann 803
                type record of PPreferredIDValue PPreferredIDValue_List;
9 rennoch 804
 
599 tepelmann 805
                type charstring PrivacyValue;
9 rennoch 806
 
599 tepelmann 807
                type record of PrivacyValue PrivacyValue_List;
9 rennoch 808
 
620 nikolajev 809
                type set of FcValue FcValue_List;
810
                type record FcValue {
811
                    charstring wildcard(c_WILDCARD),
812
                    SemicolonParam_List fcParams optional
813
                }
9 rennoch 814
 
815
 
599 tepelmann 816
            } // end group TokensType
9 rennoch 817
 
515 garciay 818
 
599 tepelmann 819
            group HeaderFieldTypes // Header Fields
820
                                    {
821
                group CommonHeaderFieldTypes {
822
                    // [20.1, RFC2616 14.1 ]
823
                    type record Accept {
824
                        FieldName fieldName (ACCEPT_E) ,
825
                        AcceptBody_List acceptArgs optional
826
                    }
9 rennoch 827
 
599 tepelmann 828
                    // [20.2, RFC2616 14.3 ]
829
                    type record AcceptEncoding {
830
                        FieldName fieldName (ACCEPT_ENCODING_E) ,
831
                        ContentCoding_List contentCoding optional
832
                    }
9 rennoch 833
 
599 tepelmann 834
                    // [20.3, RFC2616 14.4 ]
835
                    type record AcceptLanguage {
836
                        FieldName fieldName (ACCEPT_LANGUAGE_E) ,
837
                        LanguageBody_List languageBody optional
838
                    }
9 rennoch 839
 
599 tepelmann 840
                    // [20.4 ]
841
                    type record AlertInfo {
842
                        FieldName fieldName (ALERT_INFO_E) ,
843
                        AlertInfoBody_List alertInfoBody optional
844
                    }
527 rennoch 845
 
599 tepelmann 846
                    // [20.5 ]
847
                    type record Allow {
848
                        FieldName fieldName (ALLOW_E) ,
849
                        Method_List methods optional
850
                    }
527 rennoch 851
 
599 tepelmann 852
                    // [20.6 ]
853
                    type record AuthenticationInfo {
854
                        FieldName fieldName (AUTHENTICATION_INFO_E) ,
855
                        CommaParam_List ainfo
856
                    }
527 rennoch 857
 
599 tepelmann 858
                    // [20.7 RFC2617 3.2.2 ]
859
                    type record Authorization {
860
                        FieldName fieldName (AUTHORIZATION_E) ,
636 rennoch 861
                        CredentialsList body // changed from Credentials to allow multiple Authorization headers
599 tepelmann 862
                    }
527 rennoch 863
 
599 tepelmann 864
                    // [20.8 ]
865
                    type record CallId {
866
                        FieldName fieldName (CALL_ID_E) ,
867
                        CallidString callid
868
                    }
527 rennoch 869
 
599 tepelmann 870
                    // [20.9 ]
871
                    type record CallInfo {
872
                        FieldName fieldName (CALL_INFO_E) ,
873
                        CallInfoBody_List callInfoBody optional
874
                    }
527 rennoch 875
 
599 tepelmann 876
                    // [20.10 ]
877
                    type record Contact {
878
                        FieldName fieldName (CONTACT_E) ,
879
                        ContactBody contactBody
880
                    }
527 rennoch 881
 
599 tepelmann 882
                    // [20.11 ]
883
                    type record ContentDisposition {
884
                        FieldName fieldName (CONTENT_DISPOSITION_E) ,
885
                        charstring dispositionType,
886
                        SemicolonParam_List dispositionParams optional
887
                    }
527 rennoch 888
 
599 tepelmann 889
                    // [20.12 RFC2616 14.11 ]
890
                    type record ContentEncoding {
891
                        FieldName fieldName (CONTENT_ENCODING_E) ,
892
                        ContentCoding_List contentCoding
893
                    }
527 rennoch 894
 
599 tepelmann 895
                    // [20.13 RFC2616 14.12 ]
896
                    type record ContentLanguage {
897
                        FieldName fieldName (CONTENT_LANGUAGE_E) ,
898
                        LanguageTag_List languageTag
899
                    }
527 rennoch 900
 
599 tepelmann 901
                    // [20.14 ]
902
                    type record ContentLength {
903
                        FieldName fieldName (CONTENT_LENGTH_E) ,
636 rennoch 904
                        integer len // this field is represented as an integer
599 tepelmann 905
                    }
527 rennoch 906
 
599 tepelmann 907
                    // [20.15 ]
908
                    type record ContentType {
909
                        FieldName fieldName (CONTENT_TYPE_E) ,
656 genoudoli 910
                        charstring mTypeSubtype ,
911
                                                SemicolonParam_List mParams optional
599 tepelmann 912
                    }
527 rennoch 913
 
599 tepelmann 914
                    // [20.16 ]
915
                    type record CSeq {
916
                        FieldName fieldName (CSEQ_E) ,
636 rennoch 917
                        integer seqNumber, // this field is represented as an integer
599 tepelmann 918
                        charstring method
919
                    }
527 rennoch 920
 
599 tepelmann 921
                    // [20.17 ]
922
                    type record Date {
923
                        FieldName fieldName (DATE_E) ,
924
                        charstring sipDate
925
                    }
527 rennoch 926
 
599 tepelmann 927
                    // [20.18 ]
928
                    type record ErrorInfo {
929
                        FieldName fieldName (ERROR_INFO_E) ,
930
                        ErrorInfoBody_List errorInfo optional
931
                    }
527 rennoch 932
 
599 tepelmann 933
                    // [20.19 ]
934
                    type record Expires {
935
                        FieldName fieldName (EXPIRES_E) ,
936
                        DeltaSec deltaSec
937
                    }
527 rennoch 938
 
620 nikolajev 939
                    //[6809]
940
                    type record FeatureCaps {
941
                        FieldName fieldName(FEATURE_CAPS_E),
942
                        FcValue_List fcValues
943
                    }
944
 
599 tepelmann 945
                    // [20.20 ]
946
                    type record From {
947
                        FieldName fieldName (FROM_E) ,
948
                        Addr_Union addressField,
949
                        SemicolonParam_List fromParams optional
950
                    }
527 rennoch 951
 
638 rennoch 952
                    // [2616]
953
                    type record Host {
954
                        FieldName fieldName(HOST_E),
955
                        charstring host, // an empty value is represented by the empty charstring ""
956
                        integer portField optional
957
                    }
958
 
599 tepelmann 959
                    // [20.21 ]
960
                    type record InReplyTo {
961
                        FieldName fieldName (IN_REPLY_TO_E) ,
962
                        CallidString_List callids
963
                    }
9 rennoch 964
 
599 tepelmann 965
                    // [20.22 ]
966
                    type record MaxForwards {
967
                        FieldName fieldName (MAX_FORWARDS_E) ,
636 rennoch 968
                        integer forwards // this field is represented as an integer
599 tepelmann 969
                    }
9 rennoch 970
 
599 tepelmann 971
                    // [20.23 ]
972
                    type record MinExpires {
973
                        FieldName fieldName (MIN_EXPIRES_E) ,
974
                        DeltaSec deltaSec
975
                    }
9 rennoch 976
 
599 tepelmann 977
                    // [20.24 RFC2616 19.4.1 ]
978
                    type record MimeVersion {
979
                        FieldName fieldName (MIME_VERSION_E) ,
636 rennoch 980
                        integer majorNumber, // this field is represented as an integer
981
                        integer minorNumber // this field is represented as an integer
599 tepelmann 982
                    }
9 rennoch 983
 
599 tepelmann 984
                    // [20.25 ]
985
                    type record Organization {
986
                        FieldName fieldName (ORGANIZATION_E) ,
987
                        charstring organization
988
                    }
527 rennoch 989
 
599 tepelmann 990
                    // [20.26 ]
991
                    type record Priority {
992
                        FieldName fieldName (PRIORITY_E) ,
993
                        charstring priorityValue
994
                    }
9 rennoch 995
 
599 tepelmann 996
                    // [20.27 RFC2616 14.33 RFC2617 1.2 ]
997
                    type record ProxyAuthenticate {
998
                        FieldName fieldName (PROXY_AUTHENTICATE_E) ,
999
                        Challenge challenge
1000
                    }
527 rennoch 1001
 
599 tepelmann 1002
                    // [20.28 RFC2616 14.35 RFC2617 1.2 ]
1003
                    type record ProxyAuthorization {
1004
                        FieldName fieldName (PROXY_AUTHORIZATION_E) ,
1005
                        CredentialsList
1006
                        credentials // changed from Credentials to allow multiple Authorization headers
1007
                    }
329 rennoch 1008
 
599 tepelmann 1009
                    // [20.29 ]
1010
                    type record ProxyRequire {
1011
                        FieldName fieldName (PROXY_REQUIRE_E) ,
1012
                        OptionTag_List optionsTags
1013
                    }
329 rennoch 1014
 
599 tepelmann 1015
                    // [20.30 ]
1016
                    type record RecordRoute {
1017
                        FieldName fieldName (RECORD_ROUTE_E) ,
1018
                        RouteBody_List routeBody
1019
                    }
9 rennoch 1020
 
638 rennoch 1021
                    type set of InfoPackage_Type InfoPackage_List;
1022
 
1023
                    type record InfoPackage_Type {
1024
                        charstring  infoPackageName,
1025
                        SemicolonParam_List infoPackageParams optional
1026
 
1027
                    }
1028
 
1029
                    //[6086]
1030
                    type record RecvInfo {
1031
                        FieldName fieldName(RECV_INFO_E),
1032
                        InfoPackage_List infoPackageList
1033
                    }
1034
 
1035
                    //[6086]
1036
                    type record InfoPackage {
1037
                        FieldName fieldName(INFO_PACKAGE_E),
1038
                        InfoPackage_Type infoPackageType
1039
                    }
1040
 
599 tepelmann 1041
                    // [20.31 ]
1042
                    type record ReplyTo {
1043
                        FieldName fieldName (REPLY_TO_E) ,
1044
                        Addr_Union addressField,
1045
                        SemicolonParam_List replyToParams optional
1046
                    }
491 bergengrue 1047
 
599 tepelmann 1048
                    // [20.32 ]
1049
                    type record Require {
1050
                        FieldName fieldName (REQUIRE_E) ,
1051
                        OptionTag_List optionsTags
1052
                    }
527 rennoch 1053
 
599 tepelmann 1054
                    // [20.33 ]
1055
                    type record RetryAfter {
1056
                        FieldName fieldName (RETRY_AFTER_E) ,
1057
                        DeltaSec deltaSec,
1058
                        charstring comment optional,
1059
                        SemicolonParam_List retryParams optional
1060
                    }
527 rennoch 1061
 
599 tepelmann 1062
                    // [20.34 ]
1063
                    type record Route {
1064
                        FieldName fieldName (ROUTE_E) ,
1065
                        RouteBody_List routeBody
1066
                    }
527 rennoch 1067
 
599 tepelmann 1068
                    // [20.35 RFC2616 14.38 ]
1069
                    type record Server {
1070
                        FieldName fieldName (SERVER_E) ,
1071
                        ServerVal_List serverBody
1072
                    }
527 rennoch 1073
 
599 tepelmann 1074
                    // [20.36 ]
1075
                    type record Subject {
1076
                        FieldName fieldName (SUBJECT_E) ,
1077
                        charstring summary
1078
                    }
527 rennoch 1079
 
599 tepelmann 1080
                    // [20.37 ]
1081
                    type record Supported {
1082
                        FieldName fieldName (SUPPORTED_E) ,
1083
                        OptionTag_List optionsTags optional
1084
                    }
9 rennoch 1085
 
599 tepelmann 1086
                    // [20.38 ]
1087
                    type record Timestamp {
1088
                        FieldName fieldName (TIMESTAMP_E) ,
1089
                        TimeValue timeValue optional,
1090
                        TimeValue delay optional
1091
                    }
9 rennoch 1092
 
599 tepelmann 1093
                    // [20.39 ]
1094
                    type record To {
1095
                        FieldName fieldName (TO_E) ,
1096
                        Addr_Union addressField,
1097
                        SemicolonParam_List toParams optional
1098
                    }
9 rennoch 1099
 
599 tepelmann 1100
                    // [20.40 ]
1101
                    type record Unsupported {
1102
                        FieldName fieldName (UNSUPPORTED_E) ,
1103
                        OptionTag_List optionsTags
1104
                    }
9 rennoch 1105
 
599 tepelmann 1106
                    // Undefined header field
1107
                    type record UndefinedHeader {
1108
                        charstring headerName,
1109
                        charstring headerValue
1110
                    }
9 rennoch 1111
 
599 tepelmann 1112
                    type set of UndefinedHeader UndefinedHeader_List;
9 rennoch 1113
 
599 tepelmann 1114
                    // [20.41 RFC2616 14.43 ]
1115
                    type record UserAgent {
1116
                        FieldName fieldName (USER_AGENT_E) ,
1117
                        ServerVal_List userAgentBody
1118
                    }
9 rennoch 1119
 
599 tepelmann 1120
                    // [20.42 ]
1121
                    type record Via {
1122
                        FieldName fieldName (VIA_E) ,
1123
                        ViaBody_List viaBody
1124
                    }
9 rennoch 1125
 
599 tepelmann 1126
                    // [20.43 ]
1127
                    type record Warning {
1128
                        FieldName fieldName (WARNING_E) ,
1129
                        WarningValue_List warningValue
1130
                    }
9 rennoch 1131
 
599 tepelmann 1132
                    // [20.44 RFC2616 14.47 RFC2617 1.2 ]
1133
                    type record WwwAuthenticate {
1134
                        FieldName fieldName (WWW_AUTHENTICATE_E) ,
1135
                        Challenge challenge
1136
                    }
527 rennoch 1137
 
599 tepelmann 1138
                } // end group CommonHeaderFieldTypes
1139
                group RFC3262HeaderFieldTypes {
1140
                    // [3262/7.1 ]
1141
                    type record RSeq {
1142
                        FieldName fieldName (RSEQ_E) ,
1143
                        integer responseNum
1144
                    }
527 rennoch 1145
 
599 tepelmann 1146
                    // [3262/7.2 ]
1147
                    type record RAck {
1148
                        FieldName fieldName (RACK_E) ,
1149
                        integer responseNum,
1150
                        integer seqNumber,
1151
                        charstring method
1152
                    }
527 rennoch 1153
 
599 tepelmann 1154
                } // end group RFC3262HeaderFieldTypes
9 rennoch 1155
 
599 tepelmann 1156
                group RFC3265HeaderFieldTypes {
1157
                    // [3265/7.2 ]
1158
                    type record AllowEvents {
1159
                        FieldName fieldName (ALLOW_EVENTS_E) ,
1160
                        EventType_List eventTypes
1161
                    }
9 rennoch 1162
 
599 tepelmann 1163
                    type set of EventType EventType_List;
1164
                    type charstring EventType;
236 rennoch 1165
 
599 tepelmann 1166
                    // [3265/7.2 ]
1167
                    type record Event {
1168
                        FieldName fieldName (EVENT_E) ,
1169
                        EventType eventType,
1170
                        SemicolonParam_List eventParams optional
1171
                    }
9 rennoch 1172
 
599 tepelmann 1173
                    // [3265/7.2 ]
1174
                    type record SubscriptionState {
1175
                        FieldName fieldName (SUBSCRIPTION_STATE_E) ,
1176
                        SubState subState,
1177
                        SemicolonParam_List substateParams optional
1178
                    }
9 rennoch 1179
 
599 tepelmann 1180
                    type charstring SubState;
9 rennoch 1181
 
599 tepelmann 1182
                } // end group RFC3265HeaderFieldTypes
9 rennoch 1183
 
599 tepelmann 1184
                group RFC3313HeaderFieldTypes {
1185
                    // [3313/5 ]
1186
                    type record PMediaAuthorization {
1187
                        FieldName fieldName (P_MEDIA_AUTHORIZATION_E) ,
1188
                        PMediaAuthorization_List pMediaAuthorizations
1189
                    }
9 rennoch 1190
 
636 rennoch 1191
                    type charstring PMediaAuthValue; // HEXDIG "0"-"9", "A"-"F"
599 tepelmann 1192
                    type record of PMediaAuthValue PMediaAuthorization_List;
9 rennoch 1193
 
1194
 
599 tepelmann 1195
                } // end group RFC3265HeaderFieldTypes
9 rennoch 1196
 
599 tepelmann 1197
                group RFC3323HeaderFieldTypes {
1198
                    // [3323 ]
1199
                    type record Privacy {
1200
                        FieldName fieldName (PRIVACY_E) ,
1201
                        PrivacyValue_List privValueList
1202
                    }
9 rennoch 1203
 
599 tepelmann 1204
                } // end group RFC3323HeaderFieldTypes
9 rennoch 1205
 
599 tepelmann 1206
                group RFC3325HeaderFieldTypes {
1207
                    // [3325 ]
1208
                    type record PAssertedID {
1209
                        FieldName fieldName (P_ASSERTED_ID_E) ,
1210
                        PAssertedIDValue_List pAssertedIDValueList
1211
                    }
9 rennoch 1212
 
599 tepelmann 1213
                    // [3325 ]
1214
                    type record PPreferredID {
1215
                        FieldName fieldName (P_PREFERRED_ID_E) ,
1216
                        PPreferredIDValue_List pPreferredIDValueList
1217
                    }
1218
                    // draft-drage-sipping-service-identification-01 (July 2007)
1219
                    type record PPreferredService {
1220
                        FieldName fieldName (P_PREFERRED_SERVICE_E) ,
1221
                        charstring serviceId
1222
                    }
398 poglitsch 1223
 
527 rennoch 1224
 
599 tepelmann 1225
                } // end group RFC3325HeaderFieldTypes
527 rennoch 1226
 
599 tepelmann 1227
                group RFC3326HeaderFieldTypes {
1228
                    // [3326 ]
1229
                    type record of ReasonValue ReasonValues;
527 rennoch 1230
 
599 tepelmann 1231
                    type record ReasonValue {
1232
                        charstring token,
1233
                        SemicolonParam_List reasonParams optional
1234
                    }
236 rennoch 1235
 
599 tepelmann 1236
                    type record Reason {
1237
                        FieldName fieldName (REASON_E) ,
1238
                        ReasonValues reasonValues
1239
                    }
527 rennoch 1240
 
599 tepelmann 1241
                } // end group RFC3326HeaderFieldTypes
9 rennoch 1242
 
599 tepelmann 1243
                group RFC3327HeaderFieldTypes {
1244
                    // [3327 ]
1245
                    type record Path {
1246
                        FieldName fieldName (PATH_E) ,
1247
                        PathValues pathValues
1248
                    }
9 rennoch 1249
 
599 tepelmann 1250
                    type record of PathValue PathValues;
1251
 
1252
                    type record PathValue {
1253
                        NameAddr nameAddr,
1254
                        SemicolonParam_List rrParam optional
1255
                    }
1256
 
1257
                } // end group RFC3515HeaderFieldTypes
1258
 
1259
 
1260
                group RFC4488HeaderFieldTypes {
1261
                    // [4488 ]
1262
                    type record ReferSub {
1263
                        FieldName fieldName (REFER_SUB_E) ,
1264
                        boolean referSubValue,
1265
                        SemicolonParam_List referSubParams optional
1266
                    }
1267
 
1268
                } // end group RFC4488HeaderFieldTypes
1269
 
1270
                group RFC3329HeaderFieldTypes {
1271
                    // [RFC3329/2.2 ]
1272
                    type record SecurityMechanism {
1273
                        charstring mechName,
1274
                        SemicolonParam_List mechParams optional
1275
                    }
1276
 
1277
                    type set of SecurityMechanism SecurityMechanism_List;
1278
 
1279
                    type record SecurityClient {
1280
                        FieldName fieldName (SECURITY_CLIENT_E) ,
1281
                        SecurityMechanism_List securityMech
1282
                    }
1283
 
1284
                    type record SecurityServer {
1285
                        FieldName fieldName (SECURITY_SERVER_E) ,
1286
                        SecurityMechanism_List securityMech
1287
                    }
1288
 
1289
                    type record SecurityVerify {
1290
                        FieldName fieldName (SECURITY_VERIFY_E) ,
1291
                        SecurityMechanism_List securityMech
1292
                    }
1293
 
1294
                } // end group RFC3329HeaderFieldTypes
1295
 
1296
                group RFC3455HeaderFieldTypes {
1297
                    type record of NameAddrParam NameAddrParam_List;
1298
 
1299
                    type record NameAddrParam {
1300
                        NameAddr nameAddr,
1301
                        SemicolonParam_List genericParams optional
1302
                    }
1303
                    // [3455/5.1 ]
1304
                    type record PAssociatedURI {
1305
                        FieldName fieldName (P_ASSOCIATED_URI_E) ,
1306
                        NameAddrParam_List nameAddrList
1307
                    }
1308
                    // [3455/5.2 ]
1309
                    type record PCalledPartyID {
1310
                        FieldName fieldName (P_CALLED_PARTY_E) ,
1311
                        NameAddrParam nameAddParams
1312
                    }
1313
 
1314
                    type record of VnetworkSpec VnetworkSpec_List;
1315
 
1316
                    type record VnetworkSpec {
1317
                        charstring vNetworkSpecToken,
1318
                        SemicolonParam_List genericParams optional
1319
                    }
1320
 
1321
                    // [3455/5.3 ]
1322
                    type record PVisitedNetworkID {
1323
                        FieldName fieldName (P_VISITED_NETWORK_E) ,
1324
                        VnetworkSpec_List vNetWorkSpec
1325
                    }
1326
 
1327
                    // [3455/5.4 ]
1328
                    type record PAccessNetworkInfo {
1329
                        FieldName fieldName (P_ACCESS_NETWORK_INFO_E) ,
1330
                        charstring accessType,
1331
                        SemicolonParam_List genericParams optional
1332
                    }
1333
 
1334
                    // [3455/5.5 ]
1335
                    type record PChargingFunctionAddresses {
1336
                        FieldName fieldName (P_CHARGING_FUNCTION_ADDRESSES_E) ,
1337
                        SemicolonParam_List chargeAddrParams optional
1338
                    }
1339
 
1340
                    // [3455/5.6 ]
1341
                    type record PChargingVector {
1342
                        FieldName fieldName (P_CHARGING_VECTOR_E) ,
1343
                        charstring icidValue,
1344
                        SemicolonParam_List chargeParams optional
1345
                    }
1346
 
1347
                } // end group RFC33455HeaderFieldTypes
1348
 
1349
                group RFC3515HeaderFieldTypes {
1350
                    // [3515 ]
1351
                    type record ReferTo {
1352
                        FieldName fieldName (REFER_TO_E) ,
1353
                        NameAddr nameAddr,
1354
                        SemicolonParam_List referToParams optional
1355
                    }
1356
 
1357
                } // end group RFC3515HeaderFieldTypes
1358
 
1359
                group RFC3608HeaderFieldTypes {
1360
                    // [3608 ]
1361
                    type record ServiceRoute {
1362
                        FieldName fieldName (SERVICE_ROUTE_E) ,
1363
                        RouteBody_List routeBody
1364
                    }
1365
 
1366
                } // end group RFC33608HeaderFieldTypes
1367
 
1368
 
1369
                group RFC3841HeaderFieldTypes {
1370
                    // [3841 ]
1371
                    type record AcceptContact {
1372
                        FieldName fieldName (ACCEPT_CONTACT_E) ,
1373
                        AcRcValue_List acValues
1374
                    }
1375
 
1376
                    type set of AcRcValue AcRcValue_List;
1377
 
1378
                    type record AcRcValue {
1379
                        charstring wildcard (c_WILDCARD) ,
1380
                        SemicolonParam_List acRcParams optional
1381
                    }
1382
                    // [RFC 3841 ]
1383
                    type charstring Directive;
1384
                    type set of Directive Directive_List;
1385
                    type record RequestDisposition {
1386
                        FieldName fieldName (REQUEST_DISPOSITION_E) ,
1387
                        Directive_List directives
1388
                    }
1389
 
1390
 
1391
                } // end group RFC3841HeaderFieldTypes
1392
 
1393
                group RFC3891HeaderFieldTypes {
1394
                    // [3891 ]
1395
                    type record Replaces {
1396
                        FieldName fieldName (REPLACES_E) ,
623 rennoch 1397
                        CallidString callid,
1398
                        SemicolonParam_List replacesParams optional
599 tepelmann 1399
                    }
1400
 
1401
                } // end group RFC3891HeaderFieldTypes
1402
 
1403
                group RFC3892HeaderFieldTypes {
1404
                    // [3892 ]
1405
                    type record ReferredBy {
1406
                        FieldName fieldName (REFERRED_BY_E) ,
1407
                        NameAddr nameAddr,
1408
                        SemicolonParam_List referredbyIdParams optional
1409
                    }
1410
 
1411
                } // end group RFC3892HeaderFieldTypes
1412
 
1413
                group RFC4028HeaderFieldTypes {
1414
                    // [4028 ]
1415
                    type record MinSE {
1416
                        FieldName fieldName (MIN_SE_E) ,
1417
                        DeltaSec deltaSec,
1418
                        SemicolonParam_List minSeParam optional
1419
                    }
1420
                    // [4028 ]
1421
                    type record SessionExpires {
1422
                        FieldName fieldName (SESSION_EXPIRES_E) ,
1423
                        DeltaSec deltaSec,
1424
                        SemicolonParam_List seParam optional
1425
                    }
1426
 
1427
                } // end group RFC4028HeaderFieldTypes
1428
 
1429
                group RFC4244HeaderFieldTypes {
1430
                    // [4244 ]
1431
                    type record HistoryInfo {
1432
                        FieldName fieldName (HISTORY_INFO_E) ,
1433
                        HistoryInfo_List historyInfoList
1434
                    }
1435
 
1436
                    type record of HistoryInfoEntry HistoryInfo_List;
1437
 
1438
                    type record of integer IntegerList;
1439
 
1440
                    type record HistoryInfoEntry {
1441
                        NameAddr nameAddr,
1442
                        IntegerList hiIndex optional,
1443
                        SemicolonParam_List hiExtention optional
1444
                    }
1445
 
620 nikolajev 1446
                    type record of charstring StringList;
1447
 
599 tepelmann 1448
                } // end group RFC4244HeaderFieldTypes
1449
 
1450
                group RFC5009PEarlyMediaHeader {
1451
                    // [5009 ]
1452
                    type record PEarlyMedia {
1453
                        FieldName fieldName (P_EARLY_MEDIA_E) ,
642 rennoch 1454
                        EM_Param_List em_param
599 tepelmann 1455
                    }
642 rennoch 1456
                    type charstring EM_Param;
1457
                    type set of EM_Param EM_Param_List;
599 tepelmann 1458
 
1459
                } // end group RFC5009PEarlyMediaHeader
1460
 
1461
                // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07, expires 16.Aug.2009
1462
                // Transporting User to User Call Control Information in SIP for ISDN Interworking
1463
                // type definition of SIP header mechanism
1464
                group UserToUser_PreliminaryRFCDraft {
1465
                    type record UserToUser {
1466
                        FieldName fieldName (USER_TO_USER_E) ,
1467
                        charstring uuiData  length(256),
1468
                        /*length limitation due to ISDN, max of allowed 128 hex digits are represented by 256 characters*/
1469
                        GenericParam uuiParam
1470
                    }
1471
 
1472
 
1473
                } // end group UserToUser_PreliminaryRFCDraft
1474
 
1475
                type record PAssertedService {
1476
                    FieldName fieldName (P_ASSERTED_SERVICE_E) ,
1477
                    PAssertedServiceValue pAssertedServiceValue
1478
                }
1479
 
1480
                group RFC6442GeolocationConveyance {
1481
                    // [6442 ]
1482
                    type record Geolocation {
1483
                        // RFC6442 clause 4.1
1484
                        FieldName fieldName (GEOLOCATION_E) ,
1485
                        SipUrl addrSpec,
1486
                        SemicolonParam_List geolocParam optional
1487
                    }
1488
                    type enumerated GeolocationRoutingState {
1489
                        GEOLOCATION_ROUTING_YES_E, GEOLOCATION_ROUTING_NO_E, GEOLOCATION_ROUTING_OTHER_E
1490
                    }
1491
                    type record GeolocationRouting {
1492
                        // RFC6442 clause 4.2
1493
                        FieldName fieldName (GEOLOCATION_ROUTING_E) ,
1494
                        GeolocationRoutingState state,
1495
                        GenericParam genericValue optional
1496
                    }
1497
 
1498
                } // end group RFC6442GeolocationConveyance
1499
 
1500
                type charstring SessIdString  length(32);
1501
 
1502
                type record SessionId {
1503
                    FieldName fieldName (SESSION_ID_E) ,
1504
                    SessIdString sessid,
1505
                    GenericParam sessidParam optional
1506
                }
1507
 
1508
                type charstring EntityTag;
1509
 
1510
                type record SIP_ETag {
1511
                    FieldName fieldName (SIP_ETAG_E) ,
1512
                    EntityTag entityTag
1513
                }
1514
 
1515
                type record SIP_If_Match {
1516
                    FieldName fieldName (SIP_IF_MATCH_E) ,
1517
                    EntityTag entityTag
1518
                }
1519
 
646 rennoch 1520
                // RFC4412
1521
                type record ResourcePriority {
1522
                    FieldName fieldName (RESOURCE_PRIORITY_E) ,
1523
                    ResourcePriority_List resourcePriorityList
1524
                }
1525
                type set of R_Value ResourcePriority_List;
1526
                type record R_Value {
1527
                    charstring namespace,
1528
                    charstring rPriority
1529
                }
1530
 
1531
                // RFC5373
1532
                type record AnswerMode {
1533
                    FieldName fieldName (ANSWER_MODE_E),
1534
                    AnswerMode_Value answerMode_Value,
1535
                    SemicolonParam_List answerModeParams optional
1536
                }
1537
                type record PrivAnswerMode {
1538
                    FieldName fieldName (PRIV_ANSWER_MODE_E),
1539
                    AnswerMode_Value answerMode_Value,
1540
                    SemicolonParam_List answerModeParams optional
1541
                }                
1542
                type charstring AnswerMode_Value;
1543
 
1544
                 // RFC4538
1545
                type record TargetDialog {
1546
                      FieldName fieldName (TARGET_DIALOG_E),
1547
                      CallidString callid,
1548
                      TdParam tdParam optional
1549
                }
1550
                type record TdParam {
1551
                        charstring remoteParam optional,
1552
                        charstring localParam optional,                        
1553
                        SemicolonParam_List genericParams optional
1554
                    }  
599 tepelmann 1555
 
646 rennoch 1556
                 // RFC4964
1557
                type record PAnswerState {
1558
                      FieldName fieldName (P_ANSWER_STATE_E),
1559
                      charstring answerType,
1560
                      SemicolonParam_List genericParams optional
1561
                }
1562
 
1563
 
599 tepelmann 1564
            } // end group HeaderFieldTypes
1565
 
1566
            group MessageHeaderTypes {
1567
 
1568
                // Message-Header for all SIP requests and responses [20 ]
1569
                type set MessageHeader {
1570
                    Accept accept optional,
1571
                    AcceptContact acceptContact optional,
1572
                    AcceptEncoding acceptEncoding optional,
1573
                    AcceptLanguage acceptLanguage optional,
1574
                    AlertInfo alertInfo optional,
1575
                    Allow allow optional,
1576
                    AllowEvents allowEvents optional,
1577
                    // 3265/7.2
1578
                    AuthenticationInfo authenticationInfo optional,
1579
                    // only in responses
1580
                    Authorization authorization optional,
1581
                    // only in requests
1582
                    CallId callId optional,
1583
                    // optional only in Invalid test cases mandatory otherwise
1584
                    CallInfo callInfo optional,
1585
                    Contact contact optional,
1586
                    // optional in response and all requests except INVITE where mandatory
1587
                    ContentDisposition contentDisposition optional,
1588
                    ContentEncoding contentEncoding optional,
1589
                    ContentLanguage contentLanguage optional,
1590
                    ContentLength contentLength optional,
1591
                    // optional in responses and all requests except ACK where mandatory
1592
                    ContentType contentType optional,
1593
                    CSeq cSeq optional,
1594
                    // optional only in Invalid test cases mandatory otherwise
1595
                    Date date optional,
1596
                    ErrorInfo errorInfo optional,
1597
                    // only in responses
1598
                    Event event optional,
1599
                    // 3265/7.2
1600
                    Expires expires optional,
636 rennoch 1601
                    FeatureCaps featureCaps optional,  // 6809
599 tepelmann 1602
                    From fromField,
1603
                    Geolocation geolocation optional,
1604
                    // 6442
1605
                    GeolocationRouting geolocationRouting optional,
1606
                    // 6442
1607
                    HistoryInfo historyInfo optional,
1608
                    // 4244
652 rennoch 1609
                    InfoPackage infoPackage optional,
1610
                    // 6086
599 tepelmann 1611
                    InReplyTo inReplyTo optional,
1612
                    // only in requests
1613
                    MaxForwards maxForwards optional,
1614
                    // mandatory in requests not required in responses!
1615
                    MimeVersion mimeVersion optional,
1616
                    MinExpires minExpires optional,
1617
                    // only in responses
1618
                    MinSE minSE optional,
1619
                    // 4028
1620
                    Organization organization optional,
1621
                    PAccessNetworkInfo pAccessNetworkInfo optional,
1622
                    // 3455
1623
                    PAssertedID pAssertedID optional,
1624
                    // 3325
1625
                    PAssertedService pAssertedService optional,
1626
                    PAssociatedURI pAssociatedURI optional,
1627
                    // 3455
1628
                    Path path optional,
1629
                    // 3327
1630
                    PCalledPartyID pCalledPartyID optional,
1631
                    // 3455
1632
                    PChargingFunctionAddresses pChargingFunctionAddresses optional,
1633
                    // 3455
1634
                    PChargingVector pChargingVector optional,
1635
                    // 3455
1636
                    PEarlyMedia pEarlyMedia optional,
1637
                    // 5009
1638
                    PMediaAuthorization pMediaAuthorization optional,
1639
                    // 3313
1640
                    PPreferredID pPreferredID optional,
1641
                    // 3325
1642
                    PPreferredService pPreferredService optional,
1643
                    // draft-drage-sipping-service-identification-01 (July 2007)
1644
                    Priority priority optional,
1645
                    // only in requests
1646
                    Privacy privacy optional,
1647
                    // 3323
1648
                    ProxyAuthenticate proxyAuthenticate optional,
1649
                    // only in responses
1650
                    ProxyAuthorization proxyAuthorization optional,
1651
                    // only in requests
1652
                    ProxyRequire proxyRequire optional,
1653
                    // only in requests
1654
                    PVisitedNetworkID pVisitedNetworkID optional,
1655
                    // 3455
1656
                    RAck rAck optional,
1657
                    // 3262/7.1
1658
                    RSeq rSeq optional,
1659
                    // 3262/7.1
1660
                    Reason reason optional,
1661
                    // 3326
1662
                    RecordRoute recordRoute optional,
652 rennoch 1663
                    RecvInfo recvInfo optional,
1664
                    // 6086
599 tepelmann 1665
                    RequestDisposition requestDisposition optional,
1666
                    // 3841
1667
                    ReferredBy referredBy optional,
1668
                    // 3892 - REFER method
1669
                    ReferTo referTo optional,
1670
                    // 3515 - REFER method
1671
                    ReferSub referSub optional,
1672
                    // 4488 - REFER method
1673
                    Replaces replaces optional,
1674
                    // 3891
1675
                    ReplyTo replyTo optional,
1676
                    // optional in responses and INVITE requests
1677
                    Require require optional,
1678
                    RetryAfter retryAfter optional,
1679
                    // only in responses
1680
                    Route route optional,
1681
                    // only in requests
1682
                    SecurityClient securityClient optional,
1683
                    // 3329
1684
                    SecurityServer securityServer optional,
1685
                    // 3329
1686
                    SecurityVerify securityVerify optional,
1687
                    // 3329
1688
                    Server server optional,
1689
                    // only in responses
1690
                    ServiceRoute serviceRoute optional,
1691
                    // 3608
1692
                    SessionExpires sessionExpires optional,
1693
                    // 4028
1694
                    SessionId sessionId optional,
1695
                    SIP_ETag sipETag optional,
1696
                    SIP_If_Match sipIfMatch optional,
1697
                    Subject subject optional,
1698
                    // only in requests
1699
                    SubscriptionState subscriptionState optional,
1700
                    // 3265/7.2
1701
                    Supported supported optional,
1702
                    Timestamp timestamp optional,
1703
                    To toField,
1704
                    Unsupported unsupported optional,
1705
                    // only in responses
1706
                    UserToUser userToUser optional,
1707
                    UserAgent userAgent optional,
1708
                    Via via,
1709
                    Warning warning optional,
1710
                    WwwAuthenticate wwwAuthenticate optional,
652 rennoch 1711
                    ResourcePriority resourcePriority optional,
1712
                    // RFC4412
1713
                    AnswerMode answerMode optional,
1714
                    // RFC5373
1715
                    PrivAnswerMode privAnswerMode optional,
1716
                    // RFC5373
1717
                    TargetDialog targetDialog optional,
1718
                    // RFC4538
1719
                    PAnswerState pAnswerState optional,
1720
                    // RFC4964
599 tepelmann 1721
                    // only in responses
1722
                    UndefinedHeader_List undefinedHeader_List optional
1723
                }
1724
 
1725
 
1726
            } // end group MessageHeaderTypes
1727
 
1728
            group StartLineTypes {
1729
                // Request-Line [7.1 ]
1730
                type record RequestLine {
1731
                    Method method,
1732
                    SipUrl requestUri,
1733
                    charstring sipVersion
1734
                }
1735
 
1736
                // Status-Line [7.2 ]
1737
                type record StatusLine {
1738
                    charstring sipVersion,
1739
                    integer statusCode,
1740
                    charstring reasonPhrase
1741
                }
1742
 
1743
 
1744
            } // end group StartLineTypes
1745
 
1746
 
1747
            group otherTypes {
1748
 
1749
                type record SipUserProfile {
1750
                    /**
1751
                     * @desc integer for the userprofile identifier
1752
                     */
1753
                    integer id,
1754
                    /**
1755
                     * @desc integer for Port number to exchange SIP messages
1756
                     */
1757
                    integer currPort,
1758
                    /**
1759
                     * @desc charstring for IP address to exchange SIP messages
1760
                     */
1761
                    charstring currIpaddr,
1762
                    /**
1763
                     * @desc integer for Port number to exchange SIP messages
1764
                     */
1765
                    integer contactPort,
1766
                    /**
1767
                     * @desc charstring for IP address to exchange SIP messages
1768
                     */
1769
                    charstring contactIpaddr,
1770
                    /**
1771
                     * @desc charstring for IP address used by the TS to exchange media streams
1772
                     */
1773
                    charstring bearerIpaddr,
1774
                    /**
1775
                     * @desc charstring for identity of the tester local domain
1776
                     */
1777
                    charstring homeDomain,
1778
                    /**
1779
                     * @desc charstring for identity of the tester local user
1780
                     */
1781
                    charstring publUsername,
1782
                    /**
1783
                     * @desc charstring for RFC 2617 3.2.1 qop options: Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection.
1784
                     */
1785
                    charstring qop,
1786
                    /**
1787
                     * @desc charstring for RFC 2617 3.2.2 username for authentication The name of user in the specified realm
1788
                     */
1789
                    charstring privUsername,
1790
                    /**
1791
                     * @desc charstring for RFC 2617 3.2.2.2 passwd: A known shared secret, the password of user of the specified username
1792
                     */
1793
                    charstring passwd,
1794
                    /**
1795
                     * @desc charstring for registrar domain for authentication and request line
1796
                     */
1797
                    charstring registrarDomain
1798
                }
1799
 
1800
 
1801
 
1802
            } // end group otherTypes
1803
 
1804
 
1805
        } // end group Subtypes
1806
 
1807
 
1808
 
1809
        group MSGtypes {
1810
 
1811
            group RequestTypes {
1812
                // [7.1 ]
1813
                /**
1814
                 * @desc generic type of a SIP request message
1815
                 * @member statusLine contains a method name, a Request-URI, and the protocol version
1816
                 * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards
1817
                 * @member messageBody depends on the request method, includes e.g. SDP message.
1818
                 * @member payload contains the whole message as it has been received in its text format
1819
                 */
1820
                type record Request {
1821
                    RequestLine requestLine,
1822
                    MessageHeader msgHeader,
1823
                    MessageBody messageBody optional,
1824
                    Payload payload optional
643 rennoch 1825
                }
599 tepelmann 1826
 
1827
                // Note: the introduction of the following specific types is to enable better means for logging
1828
                // on the other side the generic type is useful for functions dealing with multiple SIP message types
1829
                type record REGISTER_Request {
1830
                    RequestLine requestLine,
1831
                    MessageHeader msgHeader,
1832
                    MessageBody messageBody optional,
1833
                    Payload payload optional
643 rennoch 1834
                }
599 tepelmann 1835
 
1836
                type record INVITE_Request {
1837
                    RequestLine requestLine,
1838
                    MessageHeader msgHeader,
1839
                    MessageBody messageBody optional,
1840
                    Payload payload optional
643 rennoch 1841
                }
599 tepelmann 1842
 
1843
                type record OPTIONS_Request {
1844
                    RequestLine requestLine,
1845
                    MessageHeader msgHeader,
1846
                    MessageBody messageBody optional,
1847
                    Payload payload optional
643 rennoch 1848
                }
599 tepelmann 1849
 
1850
                type record BYE_Request {
1851
                    RequestLine requestLine,
1852
                    MessageHeader msgHeader,
1853
                    MessageBody messageBody optional,
1854
                    Payload payload optional
643 rennoch 1855
                }
599 tepelmann 1856
 
1857
                type record CANCEL_Request {
1858
                    RequestLine requestLine,
1859
                    MessageHeader msgHeader,
1860
                    MessageBody messageBody optional,
1861
                    Payload payload optional
643 rennoch 1862
                }
599 tepelmann 1863
 
1864
                type record ACK_Request {
1865
                    RequestLine requestLine,
1866
                    MessageHeader msgHeader,
1867
                    MessageBody messageBody optional,
1868
                    Payload payload optional
643 rennoch 1869
                }
599 tepelmann 1870
 
1871
                // [3262/7.1 ]
1872
                type record PRACK_Request {
1873
                    RequestLine requestLine,
1874
                    MessageHeader msgHeader,
1875
                    MessageBody messageBody optional,
1876
                    Payload payload optional
643 rennoch 1877
                }
599 tepelmann 1878
 
1879
                // [3265/7.1 ]
1880
                type record NOTIFY_Request {
1881
                    RequestLine requestLine,
1882
                    MessageHeader msgHeader,
1883
                    MessageBody messageBody optional,
1884
                    Payload payload optional
643 rennoch 1885
                }
599 tepelmann 1886
 
1887
                // [3265/7.1 ]
1888
                type record SUBSCRIBE_Request {
1889
                    RequestLine requestLine,
1890
                    MessageHeader msgHeader,
1891
                    MessageBody messageBody optional,
1892
                    Payload payload optional
643 rennoch 1893
                }
599 tepelmann 1894
 
1895
                // [3903/11.1 ]
1896
                type record PUBLISH_Request {
1897
                    RequestLine requestLine,
1898
                    MessageHeader msgHeader,
1899
                    MessageBody messageBody optional,
1900
                    Payload payload optional
643 rennoch 1901
                }
599 tepelmann 1902
 
1903
                // [3311/7 ]
1904
                type record UPDATE_Request {
1905
                    RequestLine requestLine,
1906
                    MessageHeader msgHeader,
1907
                    MessageBody messageBody optional,
1908
                    Payload payload optional
643 rennoch 1909
                }
599 tepelmann 1910
 
1911
                type record REFER_Request {
1912
                    RequestLine requestLine,
1913
                    MessageHeader msgHeader,
1914
                    MessageBody messageBody optional,
1915
                    Payload payload optional
643 rennoch 1916
                }
599 tepelmann 1917
 
1918
                type record MESSAGE_Request {
1919
                    RequestLine requestLine,
1920
                    MessageHeader msgHeader,
1921
                    MessageBody messageBody optional,
1922
                    Payload payload optional
643 rennoch 1923
                }
599 tepelmann 1924
 
1925
                type record INFO_Request {
1926
                    RequestLine requestLine,
1927
                    MessageHeader msgHeader,
1928
                    MessageBody messageBody optional,
1929
                    Payload payload optional
643 rennoch 1930
                }
599 tepelmann 1931
 
1932
                type union RequestUnion {
1933
                    REGISTER_Request Register,
1934
                    INVITE_Request Invite,
1935
                    OPTIONS_Request Options,
1936
                    BYE_Request Bye,
1937
                    CANCEL_Request Cancel,
1938
                    ACK_Request Ack,
1939
                    PRACK_Request Prack,
1940
                    NOTIFY_Request Notify,
1941
                    SUBSCRIBE_Request Subscribe,
1942
                    PUBLISH_Request Publish,
1943
                    UPDATE_Request Update,
1944
                    REFER_Request Refer,
652 rennoch 1945
                    MESSAGE_Request Message,
1946
                    INFO_Request Info// [2976 ]
643 rennoch 1947
                }
599 tepelmann 1948
 
610 nikolajev 1949
            } // end group RequestTypes
599 tepelmann 1950
 
1951
            group ResponseTypes {
1952
                // [7.2 ]
1953
                /**
1954
                 * @desc generic type of a SIP response message
1955
                 * @member statusLine consists of the protocol version followed by a numeric Status-Code and its associated textual phrase
1956
                 * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards
1957
                 * @member messageBody depends on the response method, includes e.g. SDP message.
1958
                 * @member payload contains the whole message as it has been received in its text format
1959
                 */
1960
                type record Response {
1961
                    StatusLine statusLine,
1962
                    MessageHeader msgHeader,
1963
                    MessageBody messageBody optional,
1964
                    Payload payload optional
643 rennoch 1965
                }
599 tepelmann 1966
 
610 nikolajev 1967
            } // end group ResponseTypes
599 tepelmann 1968
 
1969
            // This MSG type is defined for sending synctactic variations, ans syntactically
1970
            // erroneous messages, and receving messages failed parsing.
1971
            group SyntacticTypes {
1972
                type charstring Raw;
1973
 
1974
            } // end group SyntacticTypes
1975
 
1976
 
1977
        // This type is defined for particular SIP message body types like SDP
1978
        } // end group MSGTypes
1979
 
1980
    } // end group Types
1981
}
1982
with {
643 rennoch 1983
    encode "SIPCodec"; variant "LibSip V3";
599 tepelmann 1984
} // end module LibSip_TypesAndValues