Rev

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

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