aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-05-16 09:16:11 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-05-16 09:16:11 +0000
commit0f9c96f8fd9d4ece115e76051524bbaa71b60712 (patch)
tree1133273cd18b1cd4ad4c31f8e820e973d53052c3
parentea4f4f08af61bd57d7a04e386e1114763be1c63e (diff)
From Chidambaram Arunachalam:
SIP Patch to include support for Max-Breadth, Answer-Mode, Priv-Answer-Mode, Trigger-Consent and Permission Missing headers https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3463 svn path=/trunk/; revision=28375
-rw-r--r--epan/dissectors/packet-sip.c837
1 files changed, 514 insertions, 323 deletions
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c
index fb13cd7ec1..cfcf827f69 100644
--- a/epan/dissectors/packet-sip.c
+++ b/epan/dissectors/packet-sip.c
@@ -2,7 +2,7 @@
* Routines for the Session Initiation Protocol (SIP) dissection.
* RFCs 3261-3264
*
- * TODO:
+ * TODO:
* hf_ display filters for headers of SIP extension RFCs (ongoing)
* Use hash table for list of headers
* Align SIP methods with recent Internet Drafts or RFCs
@@ -98,10 +98,19 @@ static gint hf_sip_pai_addr = -1;
static gint hf_sip_pai_user = -1;
static gint hf_sip_pai_host = -1;
static gint hf_sip_pai_port = -1;
+static gint hf_sip_pmiss_addr = -1;
+static gint hf_sip_pmiss_user = -1;
+static gint hf_sip_pmiss_host = -1;
+static gint hf_sip_pmiss_port = -1;
static gint hf_sip_ppi_addr = -1;
static gint hf_sip_ppi_user = -1;
static gint hf_sip_ppi_host = -1;
static gint hf_sip_ppi_port = -1;
+static gint hf_sip_tc_addr = -1;
+static gint hf_sip_tc_user = -1;
+static gint hf_sip_tc_host = -1;
+static gint hf_sip_tc_port = -1;
+static gint hf_sip_tc_turi = -1;
static gint hf_sip_uri = -1;
static gint hf_sip_contact_addr = -1;
static gint hf_sip_contact_item = -1;
@@ -169,7 +178,9 @@ static gint ett_sip_ruri = -1;
static gint ett_sip_to_uri = -1;
static gint ett_sip_from_uri = -1;
static gint ett_sip_pai_uri = -1;
+static gint ett_sip_pmiss_uri = -1;
static gint ett_sip_ppi_uri = -1;
+static gint ett_sip_tc_uri = -1;
/* PUBLISH method added as per http://www.ietf.org/internet-drafts/draft-ietf-sip-publish-01.txt */
static const char *sip_methods[] = {
@@ -212,105 +223,105 @@ static const sip_header_t sip_headers[] = {
{ "Alert-Info", NULL },
{ "Allow", NULL },
{ "Allow-Events", "u" }, /* 8 RFC3265 */
+ { "Answer-Mode", NULL }, /* 9 RFC5373 */
{ "Authentication-Info", NULL },
- { "Authorization", NULL }, /* 10 */
+ { "Authorization", NULL }, /* 11 */
{ "Call-ID", "i" },
{ "Call-Info", NULL },
{ "Contact", "m" },
{ "Content-Disposition", NULL },
- { "Content-Encoding", "e" }, /* 15 */
+ { "Content-Encoding", "e" }, /* 16 */
{ "Content-Language", NULL },
{ "Content-Length", "l" },
{ "Content-Type", "c" },
{ "CSeq", NULL },
- { "Date", NULL }, /* 20 */
+ { "Date", NULL }, /* 21 */
/*
Encryption (Deprecated) [RFC3261]
*/
{ "Error-Info", NULL },
{ "Event", "o" },
{ "Expires", NULL },
- { "From", "f" }, /* 24 */
+ { "From", "f" }, /* 25 */
/*
Hide [RFC3261] (deprecated)
*/
- { "History-Info", NULL }, /* 25 RFC4244 */
- { "Identity", "y" }, /* 26 RFC4474 */
- { "Identity-Info", "n" }, /* 27 RFC4474 */
- { "In-Reply-To", NULL }, /* 28 RFC3261 */
- { "Join", NULL }, /* 29 RFC3911 */
- { "Max-Forwards", NULL }, /* 30 */
- { "MIME-Version", NULL }, /* 31 */
- { "Min-Expires", NULL }, /* 32 */
- { "Min-SE", NULL }, /* 33 RFC4028 */
- { "Organization", NULL }, /* 34 RFC3261 */
- { "P-Access-Network-Info", NULL }, /* 35 RFC3455 */
- { "P-Answer-State", NULL }, /* 36 RFC4964 */
- { "P-Asserted-Identity", NULL }, /* 37 RFC3325 */
- { "P-Associated-URI", NULL }, /* 38 RFC3455 */
- { "P-Called-Party-ID", NULL }, /* 39 RFC3455 */
- { "P-Charging-Function-Addresses",NULL },/* 40 RFC3455 */
- { "P-Charging-Vector", NULL }, /* 41 RFC3455 */
- { "P-DCS-Trace-Party-ID", NULL }, /* 42 RFC3603 */
- { "P-DCS-OSPS", NULL }, /* 43 RFC3603 */
- { "P-DCS-Billing-Info", NULL }, /* 44 RFC3603 */
- { "P-DCS-LAES", NULL }, /* 45 RFC3603 */
- { "P-DCS-Redirect", NULL }, /* 46 RFC3603 */
- { "P-Early-Media", NULL }, /* 47 RFC5009 */
- { "P-Media-Authorization", NULL }, /* 48 RFC3313 */
- { "P-Preferred-Identity", NULL }, /* 49 RFC3325 */
- { "P-Profile-Key", NULL }, /* 50 RFC5002 */
- { "P-User-Database", NULL }, /* 51 RFC4457 */
- { "P-Visited-Network-ID", NULL }, /* 52 RFC3455 */
- { "Path", NULL }, /* 53 RFC3327 */
- /*
- Permission-Missing [RFC-ietf-sip-consent-framework-04.txt
- */
- { "Priority", NULL }, /* 54 RFC3261 */
- { "Privacy", NULL }, /* 55 RFC3323 */
- { "Proxy-Authenticate", NULL }, /* 56 */
- { "Proxy-Authorization", NULL }, /* 57 */
- { "Proxy-Require", NULL }, /* 58 */
- { "RAck", NULL }, /* 59 RFC3262 */
- { "Reason", NULL }, /* 60 RFC3326 */
- { "Record-Route", NULL }, /* 61 */
- { "Refer-Sub", NULL }, /* 62 RFC4488 */
- { "Refer-To", "r" }, /* 63 RFC3515 */
- { "Referred-By", "b" }, /* 64 RFC3892 */
- { "Reject-Contact", "j" }, /* 65 RFC3841 */
- { "Replaces", NULL }, /* 66 RFC3891 */
- { "Reply-To", NULL }, /* 67 RFC3261 */
- { "Request-Disposition", "d" }, /* 68 RFC3841 */
- { "Require", NULL }, /* 69 RFC3261 */
- { "Resource-Priority", NULL }, /* 70 RFC4412 */
+ { "History-Info", NULL }, /* 26 RFC4244 */
+ { "Identity", "y" }, /* 27 RFC4474 */
+ { "Identity-Info", "n" }, /* 28 RFC4474 */
+ { "In-Reply-To", NULL }, /* 29 RFC3261 */
+ { "Join", NULL }, /* 30 RFC3911 */
+ { "Max-Breadth", NULL }, /* 31 RFC5393*/
+ { "Max-Forwards", NULL }, /* 32 */
+ { "MIME-Version", NULL }, /* 33 */
+ { "Min-Expires", NULL }, /* 34 */
+ { "Min-SE", NULL }, /* 35 RFC4028 */
+ { "Organization", NULL }, /* 36 RFC3261 */
+ { "P-Access-Network-Info", NULL }, /* 37 RFC3455 */
+ { "P-Answer-State", NULL }, /* 38 RFC4964 */
+ { "P-Asserted-Identity", NULL }, /* 39 RFC3325 */
+ { "P-Associated-URI", NULL }, /* 40 RFC3455 */
+ { "P-Called-Party-ID", NULL }, /* 41 RFC3455 */
+ { "P-Charging-Function-Addresses",NULL },/* 42 RFC3455 */
+ { "P-Charging-Vector", NULL }, /* 43 RFC3455 */
+ { "P-DCS-Trace-Party-ID", NULL }, /* 44 RFC3603 */
+ { "P-DCS-OSPS", NULL }, /* 45 RFC3603 */
+ { "P-DCS-Billing-Info", NULL }, /* 46 RFC3603 */
+ { "P-DCS-LAES", NULL }, /* 47 RFC3603 */
+ { "P-DCS-Redirect", NULL }, /* 48 RFC3603 */
+ { "P-Early-Media", NULL }, /* 49 RFC5009 */
+ { "P-Media-Authorization", NULL }, /* 50 RFC3313 */
+ { "P-Preferred-Identity", NULL }, /* 51 RFC3325 */
+ { "P-Profile-Key", NULL }, /* 52 RFC5002 */
+ { "P-User-Database", NULL }, /* 53 RFC4457 */
+ { "P-Visited-Network-ID", NULL }, /* 54 RFC3455 */
+ { "Path", NULL }, /* 55 RFC3327 */
+ { "Permission-Missing", NULL }, /* 56 RFC5360 */
+ { "Priority", NULL }, /* 57 RFC3261 */
+ { "Priv-Answer-Mode", NULL }, /* 58 RFC5373 */
+ { "Privacy", NULL }, /* 59 RFC3323 */
+ { "Proxy-Authenticate", NULL }, /* 60 */
+ { "Proxy-Authorization", NULL }, /* 61 */
+ { "Proxy-Require", NULL }, /* 62 */
+ { "RAck", NULL }, /* 63 RFC3262 */
+ { "Reason", NULL }, /* 64 RFC3326 */
+ { "Record-Route", NULL }, /* 65 */
+ { "Refer-Sub", NULL }, /* 66 RFC4488 */
+ { "Refer-To", "r" }, /* 67 RFC3515 */
+ { "Referred-By", "b" }, /* 68 RFC3892 */
+ { "Reject-Contact", "j" }, /* 69 RFC3841 */
+ { "Replaces", NULL }, /* 70 RFC3891 */
+ { "Reply-To", NULL }, /* 71 RFC3261 */
+ { "Request-Disposition", "d" }, /* 72 RFC3841 */
+ { "Require", NULL }, /* 73 RFC3261 */
+ { "Resource-Priority", NULL }, /* 74 RFC4412 */
/*
{ "Response-Key (Deprecated) [RFC3261]
*/
- { "Retry-After", NULL }, /* 71 RFC3261 */
- { "Route", NULL }, /* 72 RFC3261 */
- { "RSeq", NULL }, /* 73 RFC3262 */
- { "Security-Client", NULL }, /* 74 RFC3329 */
- { "Security-Server", NULL }, /* 75 RFC3329 */
- { "Security-Verify", NULL }, /* 76 RFC3329 */
- { "Server", NULL }, /* 77 RFC3261 */
- { "Service-Route", NULL }, /* 78 RFC3608 */
- { "Session-Expires", "x" }, /* 79 RFC4028 */
- { "SIP-ETag", NULL }, /* 80 RFC3903 */
- { "SIP-If-Match", NULL }, /* 81 RFC3903 */
- { "Subject", "s" }, /* 82 RFC3261 */
- { "Subscription-State", NULL }, /* 83 RFC3265 */
- { "Supported", "k" }, /* 84 RFC3261 */
- { "Target-Dialog", NULL }, /* 85 RFC4538 */
- { "Timestamp", NULL }, /* 86 RFC3261 */
- { "To", "t" }, /* 87 RFC3261 */
- /*
- Trigger-Consent [RFC-ietf-sip-consent-framework-04.tx
- */
- { "Unsupported", NULL }, /* 88 RFC3261 */
- { "User-Agent", NULL }, /* 89 RFC3261 */
- { "Via", "v" }, /* 90 RFC3261 */
- { "Warning", NULL }, /* 91 RFC3261 */
- { "WWW-Authenticate", NULL }, /* 92 RFC3261 */
+ { "Retry-After", NULL }, /* 75 RFC3261 */
+ { "Route", NULL }, /* 76 RFC3261 */
+ { "RSeq", NULL }, /* 77 RFC3262 */
+ { "Security-Client", NULL }, /* 78 RFC3329 */
+ { "Security-Server", NULL }, /* 79 RFC3329 */
+ { "Security-Verify", NULL }, /* 80 RFC3329 */
+ { "Server", NULL }, /* 81 RFC3261 */
+ { "Service-Route", NULL }, /* 82 RFC3608 */
+ { "Session-Expires", "x" }, /* 83 RFC4028 */
+ { "SIP-ETag", NULL }, /* 84 RFC3903 */
+ { "SIP-If-Match", NULL }, /* 85 RFC3903 */
+ { "Subject", "s" }, /* 86 RFC3261 */
+ { "Subscription-State", NULL }, /* 87 RFC3265 */
+ { "Supported", "k" }, /* 88 RFC3261 */
+ { "Target-Dialog", NULL }, /* 89 RFC4538 */
+ { "Timestamp", NULL }, /* 90 RFC3261 */
+ { "To", "t" }, /* 91 RFC3261 */
+ { "Trigger-Consent", NULL }, /* 92 RFC5360 */
+
+ { "Unsupported", NULL }, /* 93 RFC3261 */
+ { "User-Agent", NULL }, /* 94 RFC3261 */
+ { "Via", "v" }, /* 95 RFC3261 */
+ { "Warning", NULL }, /* 96 RFC3261 */
+ { "WWW-Authenticate", NULL }, /* 97 RFC3261 */
};
@@ -322,90 +333,95 @@ Hide [RFC3261] (deprecated)
#define POS_ALERT_INFO 6
#define POS_ALLOW 7
#define POS_ALLOW_EVENTS 8
-#define POS_AUTHENTICATION_INFO 9
-#define POS_AUTHORIZATION 10
-#define POS_CALL_ID 11
-#define POS_CALL_INFO 12
-#define POS_CONTACT 13
-#define POS_CONTENT_DISPOSITION 14
-#define POS_CONTENT_ENCODING 15
-#define POS_CONTENT_LANGUAGE 16
-#define POS_CONTENT_LENGTH 17
-#define POS_CONTENT_TYPE 18
-#define POS_CSEQ 19
-#define POS_DATE 20
-#define POS_ERROR_INFO 21
-#define POS_EVENT 22
-#define POS_EXPIRES 23
-#define POS_FROM 24
-#define POS_HISTORY_INFO 25
-#define POS_IDENTITY 26
-#define POS_IDENTITY_INFO 27
-#define POS_IN_REPLY_TO 28
-#define POS_JOIN 29
-#define POS_MAX_FORWARDS 30
-#define POS_MIME_VERSION 31
-#define POS_MIN_EXPIRES 32
-#define POS_MIN_SE 33
-#define POS_ORGANIZATION 34
-#define POS_P_ACCESS_NETWORK_INFO 35
-#define POS_P_ANSWER_STATE 36
-#define POS_P_ASSERTED_IDENTITY 37
-#define POS_P_ASSOCIATED_URI 38
-#define POS_P_CALLED_PARTY_ID 39
-#define POS_P_CHARGING_FUNCTION_ADDRESSES 40
-#define POS_P_CHARGING_VECTOR 41
-#define POS_P_DCS_TRACE_PARTY_ID 42
-#define POS_P_DCS_OSPS 43
-#define POS_P_DCS_BILLING_INFO 44
-#define POS_P_DCS_LAES 45
-#define POS_P_DCS_REDIRECT 46
-#define POS_P_EARLY_MEDIA 47
-#define POS_P_MEDIA_AUTHORIZATION 48
-#define POS_P_PREFERRED_IDENTITY 49
-#define POS_P_PROFILE_KEY 50
-#define POS_P_USER_DATABASE 51
-#define POS_P_VISITED_NETWORK_ID 52
-#define POS_PATH 53
-#define POS_PRIORITY 54
-#define POS_PRIVACY 55
-#define POS_PROXY_AUTHENTICATE 56
-#define POS_PROXY_AUTHORIZATION 57
-#define POS_PROXY_REQUIRE 58
-#define POS_RACK 59
-#define POS_REASON 60
-#define POS_RECORD_ROUTE 61
-#define POS_REFER_SUB 62
-#define POS_REFER_TO 63
-#define POS_REFERED_BY 64
-#define POS_REJECT_CONTACT 65
-#define POS_REPLACES 66
-#define POS_REPLY_TO 67
-#define POS_REQUEST_DISPOSITION 68
-#define POS_REQUIRE 69
-#define POS_RESOURCE_PRIORITY 70
-#define POS_RETRY_AFTER 71
-#define POS_ROUTE 72
-#define POS_RSEQ 73
-#define POS_SECURITY_CLIENT 74
-#define POS_SECURITY_SERVER 75
-#define POS_SECURITY_VERIFY 76
-#define POS_SERVER 77
-#define POS_SERVICE_ROUTE 78
-#define POS_SESSION_EXPIRES 79
-#define POS_SIP_ETAG 80
-#define POS_SIP_IF_MATCH 81
-#define POS_SUBJECT 82
-#define POS_SUBSCRIPTION_STATE 83
-#define POS_SUPPORTED 84
-#define POS_TARGET_DALOG 85
-#define POS_TIMESTAMP 86
-#define POS_TO 87
-#define POS_UNSUPPORTED 88
-#define POS_USER_AGENT 89
-#define POS_VIA 90
-#define POS_WARNING 91
-#define POS_WWW_AUTHENTICATE 92
+#define POS_ANSWER_MODE 9
+#define POS_AUTHENTICATION_INFO 10
+#define POS_AUTHORIZATION 11
+#define POS_CALL_ID 12
+#define POS_CALL_INFO 13
+#define POS_CONTACT 14
+#define POS_CONTENT_DISPOSITION 15
+#define POS_CONTENT_ENCODING 16
+#define POS_CONTENT_LANGUAGE 17
+#define POS_CONTENT_LENGTH 18
+#define POS_CONTENT_TYPE 19
+#define POS_CSEQ 20
+#define POS_DATE 21
+#define POS_ERROR_INFO 22
+#define POS_EVENT 23
+#define POS_EXPIRES 24
+#define POS_FROM 25
+#define POS_HISTORY_INFO 26
+#define POS_IDENTITY 27
+#define POS_IDENTITY_INFO 28
+#define POS_IN_REPLY_TO 29
+#define POS_JOIN 30
+#define POS_MAX_BREADTH 31
+#define POS_MAX_FORWARDS 32
+#define POS_MIME_VERSION 33
+#define POS_MIN_EXPIRES 34
+#define POS_MIN_SE 35
+#define POS_ORGANIZATION 36
+#define POS_P_ACCESS_NETWORK_INFO 37
+#define POS_P_ANSWER_STATE 38
+#define POS_P_ASSERTED_IDENTITY 39
+#define POS_P_ASSOCIATED_URI 40
+#define POS_P_CALLED_PARTY_ID 41
+#define POS_P_CHARGING_FUNCTION_ADDRESSES 42
+#define POS_P_CHARGING_VECTOR 43
+#define POS_P_DCS_TRACE_PARTY_ID 44
+#define POS_P_DCS_OSPS 45
+#define POS_P_DCS_BILLING_INFO 46
+#define POS_P_DCS_LAES 47
+#define POS_P_DCS_REDIRECT 48
+#define POS_P_EARLY_MEDIA 49
+#define POS_P_MEDIA_AUTHORIZATION 50
+#define POS_P_PREFERRED_IDENTITY 51
+#define POS_P_PROFILE_KEY 52
+#define POS_P_USER_DATABASE 53
+#define POS_P_VISITED_NETWORK_ID 54
+#define POS_PATH 55
+#define POS_PERMISSION_MISSING 56
+#define POS_PRIORITY 57
+#define POS_PRIV_ANSWER_MODE 58
+#define POS_PRIVACY 59
+#define POS_PROXY_AUTHENTICATE 60
+#define POS_PROXY_AUTHORIZATION 61
+#define POS_PROXY_REQUIRE 62
+#define POS_RACK 63
+#define POS_REASON 64
+#define POS_RECORD_ROUTE 65
+#define POS_REFER_SUB 66
+#define POS_REFER_TO 67
+#define POS_REFERED_BY 68
+#define POS_REJECT_CONTACT 69
+#define POS_REPLACES 70
+#define POS_REPLY_TO 71
+#define POS_REQUEST_DISPOSITION 72
+#define POS_REQUIRE 73
+#define POS_RESOURCE_PRIORITY 74
+#define POS_RETRY_AFTER 75
+#define POS_ROUTE 76
+#define POS_RSEQ 77
+#define POS_SECURITY_CLIENT 78
+#define POS_SECURITY_SERVER 79
+#define POS_SECURITY_VERIFY 80
+#define POS_SERVER 81
+#define POS_SERVICE_ROUTE 82
+#define POS_SESSION_EXPIRES 83
+#define POS_SIP_ETAG 84
+#define POS_SIP_IF_MATCH 85
+#define POS_SUBJECT 86
+#define POS_SUBSCRIPTION_STATE 87
+#define POS_SUPPORTED 88
+#define POS_TARGET_DALOG 89
+#define POS_TIMESTAMP 90
+#define POS_TO 91
+#define POS_TRIGGER_CONSENT 92
+#define POS_UNSUPPORTED 93
+#define POS_USER_AGENT 94
+#define POS_VIA 95
+#define POS_WARNING 96
+#define POS_WWW_AUTHENTICATE 97
static gint hf_header_array[] = {
@@ -418,90 +434,95 @@ static gint hf_header_array[] = {
-1, /* 6"Alert-Info", */
-1, /* 7"Allow", */
-1, /* 8"Allow-Events", RFC3265 */
- -1, /* 9"Authentication-Info" */
- -1, /* 10"Authorization", */
- -1, /* 11"Call-ID", */
- -1, /* 12"Call-Info" */
- -1, /* 13"Contact", */
- -1, /* 14"Content-Disposition", */
- -1, /* 15"Content-Encoding", */
- -1, /* 16"Content-Language", */
- -1, /* 17"Content-Length", */
- -1, /* 18"Content-Type", */
- -1, /* 19"CSeq", */
- -1, /* 20"Date", */
- -1, /* 21"Error-Info", */
- -1, /* 22"Event", */
- -1, /* 23"Expires", */
- -1, /* 24"From", */
- -1, /* 25"History-Info", RFC4244 */
- -1, /* 26"Identity", */
- -1, /* 27"Identity-Info", RFC4474 */
- -1, /* 28"In-Reply-To", RFC3261 */
- -1, /* 29"Join", RFC3911 */
- -1, /* 30"Max-Forwards", */
- -1, /* 31"MIME-Version", */
- -1, /* 32"Min-Expires", */
- -1, /* 33"Min-SE", RFC4028 */
- -1, /* 34"Organization", */
- -1, /* 35"P-Access-Network-Info", RFC3455 */
- -1, /* 36"P-Answer-State", RFC4964 */
- -1, /* 37"P-Asserted-Identity", RFC3325 */
- -1, /* 38"P-Associated-URI", RFC3455 */
- -1, /* 39"P-Called-Party-ID", RFC3455 */
- -1, /* 40"P-Charging-Function-Addresses", RFC3455 */
- -1, /* 41"P-Charging-Vector", RFC3455 */
- -1, /* 42"P-DCS-Trace-Party-ID", RFC3603 */
- -1, /* 43"P-DCS-OSPS", RFC3603 */
- -1, /* 44"P-DCS-Billing-Info", RFC3603 */
- -1, /* 45"P-DCS-LAES", RFC3603 */
- -1, /* 46"P-DCS-Redirect", RFC3603 */
- -1, /* 47"P-Early-Media", */
- -1, /* 48"P-Media-Authorization", RFC3313 */
- -1, /* 49"P-Preferred-Identity", RFC3325 */
- -1, /* 50"P-Profile-Key", */
- -1, /* 51"P-User-Database RFC4457 */
- -1, /* 52"P-Visited-Network-ID", RFC3455 */
- -1, /* 53"Path", RFC3327 */
- -1, /* 54"Priority" */
- -1, /* 55"Privacy", RFC3323 */
- -1, /* 56"Proxy-Authenticate", */
- -1, /* 57"Proxy-Authorization", */
- -1, /* 58"Proxy-Require", */
- -1, /* 59"RAck", RFC3262 */
- -1, /* 60"Reason", RFC3326 */
- -1, /* 61"Record-Route", */
- -1, /* 62"Refer-Sub",", RFC4488 */
- -1, /* 63"Refer-To", RFC3515 */
- -1, /* 64"Referred-By", */
- -1, /* 65"Reject-Contact", RFC3841 */
- -1, /* 66"Replaces", RFC3891 */
- -1, /* 67"Reply-To", RFC3261 */
- -1, /* 68"Request-Disposition", RFC3841 */
- -1, /* 69"Require", RFC3261 */
- -1, /* 70"Resource-Priority", RFC4412 */
- -1, /* 71"Retry-After", RFC3261 */
- -1, /* 72"Route", RFC3261 */
- -1, /* 73"RSeq", RFC3262 */
- -1, /* 74"Security-Client", RFC3329 */
- -1, /* 75"Security-Server", RFC3329 */
- -1, /* 76"Security-Verify", RFC3329 */
- -1, /* 77"Server", RFC3261 */
- -1, /* 78"Service-Route", RFC3608 */
- -1, /* 79"Session-Expires", RFC4028 */
- -1, /* 80"SIP-ETag", RFC3903 */
- -1, /* 81"SIP-If-Match", RFC3903 */
- -1, /* 82"Subject", RFC3261 */
- -1, /* 83"Subscription-State", RFC3265 */
- -1, /* 84"Supported", RFC3261 */
- -1, /* 85"Target-Dialog", RFC4538 */
- -1, /* 86"Timestamp", RFC3261 */
- -1, /* 87"To", RFC3261 */
- -1, /* 88"Unsupported", RFC3261 */
- -1, /* 89"User-Agent", RFC3261 */
- -1, /* 90"Via", RFC3261 */
- -1, /* 91"Warning", RFC3261 */
- -1, /* 92"WWW-Authenticate", RFC3261 */
+ -1, /* 9"Answer-Mode" RFC5373 */
+ -1, /* 10"Authentication-Info" */
+ -1, /* 11"Authorization", */
+ -1, /* 12"Call-ID", */
+ -1, /* 13"Call-Info" */
+ -1, /* 14"Contact", */
+ -1, /* 15"Content-Disposition", */
+ -1, /* 16"Content-Encoding", */
+ -1, /* 17"Content-Language", */
+ -1, /* 18"Content-Length", */
+ -1, /* 19"Content-Type", */
+ -1, /* 20"CSeq", */
+ -1, /* 21"Date", */
+ -1, /* 22"Error-Info", */
+ -1, /* 23"Event", */
+ -1, /* 24"Expires", */
+ -1, /* 25"From", */
+ -1, /* 26"History-Info", RFC4244 */
+ -1, /* 27"Identity", */
+ -1, /* 28"Identity-Info", RFC4474 */
+ -1, /* 29"In-Reply-To", RFC3261 */
+ -1, /* 30"Join", RFC3911 */
+ -1, /* 31"Max-Breadth" RFC5393 */
+ -1, /* 32"Max-Forwards", */
+ -1, /* 33"MIME-Version", */
+ -1, /* 34"Min-Expires", */
+ -1, /* 35"Min-SE", RFC4028 */
+ -1, /* 36"Organization", */
+ -1, /* 37"P-Access-Network-Info", RFC3455 */
+ -1, /* 38"P-Answer-State", RFC4964 */
+ -1, /* 39"P-Asserted-Identity", RFC3325 */
+ -1, /* 40"P-Associated-URI", RFC3455 */
+ -1, /* 41"P-Called-Party-ID", RFC3455 */
+ -1, /* 42"P-Charging-Function-Addresses", RFC3455 */
+ -1, /* 43"P-Charging-Vector", RFC3455 */
+ -1, /* 44"P-DCS-Trace-Party-ID", RFC3603 */
+ -1, /* 45"P-DCS-OSPS", RFC3603 */
+ -1, /* 46"P-DCS-Billing-Info", RFC3603 */
+ -1, /* 47"P-DCS-LAES", RFC3603 */
+ -1, /* 48"P-DCS-Redirect", RFC3603 */
+ -1, /* 49"P-Early-Media", */
+ -1, /* 50"P-Media-Authorization", RFC3313 */
+ -1, /* 51"P-Preferred-Identity", RFC3325 */
+ -1, /* 52"P-Profile-Key", */
+ -1, /* 53"P-User-Database RFC4457 */
+ -1, /* 54"P-Visited-Network-ID", RFC3455 */
+ -1, /* 55"Path", RFC3327 */
+ -1, /* 56"Permission-Missing" RFC5360 */
+ -1, /* 57"Priority" */
+ -1, /* 58"Priv-Answer-mode" RFC5373 */
+ -1, /* 59"Privacy", RFC3323 */
+ -1, /* 60"Proxy-Authenticate", */
+ -1, /* 61"Proxy-Authorization", */
+ -1, /* 62"Proxy-Require", */
+ -1, /* 63"RAck", RFC3262 */
+ -1, /* 64"Reason", RFC3326 */
+ -1, /* 65"Record-Route", */
+ -1, /* 66"Refer-Sub",", RFC4488 */
+ -1, /* 67"Refer-To", RFC3515 */
+ -1, /* 68"Referred-By", */
+ -1, /* 69"Reject-Contact", RFC3841 */
+ -1, /* 70"Replaces", RFC3891 */
+ -1, /* 71"Reply-To", RFC3261 */
+ -1, /* 72"Request-Disposition", RFC3841 */
+ -1, /* 73"Require", RFC3261 */
+ -1, /* 74"Resource-Priority", RFC4412 */
+ -1, /* 75"Retry-After", RFC3261 */
+ -1, /* 76"Route", RFC3261 */
+ -1, /* 77"RSeq", RFC3262 */
+ -1, /* 78"Security-Client", RFC3329 */
+ -1, /* 79"Security-Server", RFC3329 */
+ -1, /* 80"Security-Verify", RFC3329 */
+ -1, /* 81"Server", RFC3261 */
+ -1, /* 82"Service-Route", RFC3608 */
+ -1, /* 83"Session-Expires", RFC4028 */
+ -1, /* 84"SIP-ETag", RFC3903 */
+ -1, /* 85"SIP-If-Match", RFC3903 */
+ -1, /* 86"Subject", RFC3261 */
+ -1, /* 87"Subscription-State", RFC3265 */
+ -1, /* 88"Supported", RFC3261 */
+ -1, /* 89"Target-Dialog", RFC4538 */
+ -1, /* 90"Timestamp", RFC3261 */
+ -1, /* 91"To", RFC3261 */
+ -1, /* 92"Trigger-Consent" RFC5380 */
+ -1, /* 93"Unsupported", RFC3261 */
+ -1, /* 94"User-Agent", RFC3261 */
+ -1, /* 95"Via", RFC3261 */
+ -1, /* 96"Warning", RFC3261 */
+ -1, /* 97"WWW-Authenticate", RFC3261 */
};
@@ -544,6 +565,47 @@ static header_parameter_t via_parameters_hf_array[] =
};
+typedef struct {
+ gint *hf_sip_addr;
+ gint *hf_sip_user;
+ gint *hf_sip_host;
+ gint *hf_sip_port;
+ gint *ett_uri;
+} hf_sip_uri_t;
+
+static hf_sip_uri_t sip_pai_uri = {
+ &hf_sip_pai_addr,
+ &hf_sip_pai_user,
+ &hf_sip_pai_host,
+ &hf_sip_pai_port,
+ &ett_sip_pai_uri
+};
+
+static hf_sip_uri_t sip_ppi_uri = {
+ &hf_sip_ppi_addr,
+ &hf_sip_ppi_user,
+ &hf_sip_ppi_host,
+ &hf_sip_ppi_port,
+ &ett_sip_ppi_uri
+};
+
+static hf_sip_uri_t sip_pmiss_uri = {
+ &hf_sip_pmiss_addr,
+ &hf_sip_pmiss_user,
+ &hf_sip_pmiss_host,
+ &hf_sip_pmiss_port,
+ &ett_sip_pmiss_uri
+};
+
+
+static hf_sip_uri_t sip_tc_uri = {
+ &hf_sip_tc_addr,
+ &hf_sip_tc_user,
+ &hf_sip_tc_host,
+ &hf_sip_tc_port,
+ &ett_sip_tc_uri
+};
+
/*
* Type of line. It's either a SIP Request-Line, a SIP Status-Line, or
@@ -800,7 +862,7 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
uri_offsets->uri_host_end = -1;
uri_offsets->uri_host_port_start = -1;
uri_offsets->uri_host_port_end = -1;
-
+
/* skip Spaces and Tabs */
current_offset = tvb_skip_wsp(tvb, start_offset, line_end_offset - start_offset);
@@ -931,14 +993,16 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
{
uri_offsets->uri_end = semicolon_offset - 1;
}
- if (comma_offset != -1)
+ else if (comma_offset != -1)
{
uri_offsets->uri_end = comma_offset - 1;
+ } else {
+
+ /* If both offsets are equal to -1, we don't have a semicolon or a comma.
+ * In that case, we assume that the end of the URI is at the line end
+ */
+ uri_offsets->uri_end = line_end_offset - 3; /* remove '\r\n' */
}
- /* If both offsets are equal to -1, we don't have a semicolon or a comma.
- * In that case, we assume that the end of the URI is at the line end
- */
- uri_offsets->uri_end = line_end_offset - 3; /* remove '\r\n' */
}
uri_offsets->name_addr_end = uri_offsets->uri_end;
current_offset = uri_offsets->uri_end + 1; /* Now save current_offset, as it is the value to be returned now */
@@ -1022,10 +1086,10 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
uri_offsets->uri_user_end = tvb_find_guint8(tvb, uri_offsets->uri_user_start, uri_offsets->uri_end - uri_offsets->uri_start, '@')-1;
uri_offsets->uri_host_start = uri_offsets->uri_user_end + 2;
}
-
+
/* find URI-Host end*/
parameter_end_offset = uri_offsets->uri_host_start;
-
+
while (parameter_end_offset < line_end_offset)
{
parameter_end_offset++;
@@ -1045,10 +1109,10 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
}
uri_host_end_found:
-
+
uri_offsets->uri_host_end = parameter_end_offset - 1;
- if (c == ':')
+ if (c == ':')
{
uri_offsets->uri_host_port_start = parameter_end_offset + 1;
parameter_end_offset = uri_offsets->uri_host_port_start;
@@ -1072,10 +1136,47 @@ dissect_sip_uri(tvbuff_t *tvb, packet_info *pinfo _U_, gint start_offset,
uri_host_port_end_found:
uri_offsets->uri_host_port_end = parameter_end_offset -1;
- }
+ }
return current_offset;
}
+/*
+* Code to add dissected SIP URI Information to proto tree
+*/
+
+static proto_tree *
+display_sip_uri (tvbuff_t *tvb, proto_tree *sip_element_tree, uri_offset_info* uri_offsets, hf_sip_uri_t* uri)
+{
+
+ proto_item *ti;
+ proto_tree *uri_item_tree = NULL;
+
+ if(uri_offsets->display_name_end != uri_offsets->display_name_start) {
+ proto_tree_add_item(sip_element_tree, hf_sip_display, tvb, uri_offsets->display_name_start,
+ uri_offsets->display_name_end - uri_offsets->display_name_start + 1, FALSE);
+ }
+
+ ti = proto_tree_add_item(sip_element_tree, *(uri->hf_sip_addr), tvb, uri_offsets->uri_start, uri_offsets->uri_end - uri_offsets->uri_start + 1, FALSE);
+ uri_item_tree = proto_item_add_subtree(ti, *(uri->ett_uri));
+
+ if(uri_offsets->uri_user_end >= uri_offsets->uri_user_start) {
+ proto_tree_add_item(uri_item_tree, *(uri->hf_sip_user), tvb, uri_offsets->uri_user_start,
+ uri_offsets->uri_user_end - uri_offsets->uri_user_start + 1, FALSE);
+ }
+
+ proto_tree_add_item(uri_item_tree, *(uri->hf_sip_host), tvb, uri_offsets->uri_host_start,
+ uri_offsets->uri_host_end - uri_offsets->uri_host_start + 1, FALSE);
+
+ if(uri_offsets->uri_host_port_end > uri_offsets->uri_host_port_start) {
+ proto_tree_add_item(uri_item_tree, *(uri->hf_sip_port), tvb, uri_offsets->uri_host_port_start,
+ uri_offsets->uri_host_port_end - uri_offsets->uri_host_port_start + 1, FALSE);
+ }
+
+ return uri_item_tree;
+}
+
+
+
/* Code to parse a contact header item
* Returns Offset end off parsing or -1 for unsuccessful parsing
@@ -1874,11 +1975,17 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
proto_item *cause;
proto_item *ti;
proto_tree *pai_uri_item_tree = NULL;
+ proto_tree *pmiss_uri_item_tree = NULL;
proto_tree *ppi_uri_item_tree = NULL;
+ proto_tree *tc_uri_item_tree = NULL;
proto_tree *to_uri_item_tree = NULL;
proto_tree *from_uri_item_tree = NULL;
uri_offset_info uri_offsets;
+
+
+
+
linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
if (linelen == 0) {
/*
@@ -2039,7 +2146,7 @@ separator_found:
if ( parameter_end_offset == -1)
parameter_end_offset = line_end_offset;
parameter_len = parameter_end_offset - parameter_offset;
- ti = proto_tree_add_item(sip_element_tree, hf_sip_to_addr, tvb, parameter_offset,
+ ti = proto_tree_add_item(sip_element_tree, hf_sip_to_addr, tvb, parameter_offset,
parameter_len, FALSE);
to_uri_item_tree = proto_item_add_subtree(ti, ett_sip_to_uri);
@@ -2193,7 +2300,7 @@ separator_found2:
uri_offsets.uri_host_port_end - uri_offsets.uri_host_port_start + 1, FALSE);
}
}
-
+
/* Find parameter tag if present.
* TODO make this generic to find any interesting parameter
* use the same method as for SIP headers ?
@@ -2217,7 +2324,7 @@ separator_found2:
break;
case POS_P_ASSERTED_IDENTITY :
- if(hdr_tree)
+ if(hdr_tree)
{
sip_element_item = proto_tree_add_string_format(hdr_tree,
hf_header_array[hf_index], tvb,
@@ -2228,36 +2335,13 @@ separator_found2:
ett_sip_element);
}
- if((dissect_sip_uri(tvb, pinfo, value_offset, line_end_offset+2, &uri_offsets)) != -1)
- {
- if(uri_offsets.display_name_end != uri_offsets.display_name_start)
- {
- proto_tree_add_item(sip_element_tree, hf_sip_display, tvb, uri_offsets.display_name_start,
- uri_offsets.display_name_end - uri_offsets.display_name_start + 1, FALSE);
- }
-
- ti = proto_tree_add_item(sip_element_tree, hf_sip_pai_addr, tvb, uri_offsets.uri_start, uri_offsets.uri_end - uri_offsets.uri_start + 1, FALSE);
- pai_uri_item_tree = proto_item_add_subtree(ti, ett_sip_pai_uri);
- if(uri_offsets.uri_user_end > uri_offsets.uri_user_start)
- {
- proto_tree_add_item(pai_uri_item_tree, hf_sip_pai_user, tvb, uri_offsets.uri_user_start,
- uri_offsets.uri_user_end - uri_offsets.uri_user_start + 1, FALSE);
- }
-
- proto_tree_add_item(pai_uri_item_tree, hf_sip_pai_host, tvb, uri_offsets.uri_host_start,
- uri_offsets.uri_host_end - uri_offsets.uri_host_start + 1, FALSE);
-
- if(uri_offsets.uri_host_port_end > uri_offsets.uri_host_port_start)
- {
- proto_tree_add_item(pai_uri_item_tree, hf_sip_pai_port, tvb, uri_offsets.uri_host_port_start,
- uri_offsets.uri_host_port_end - uri_offsets.uri_host_port_start + 1, FALSE);
- }
- }
- break;
+ if((dissect_sip_uri(tvb, pinfo, value_offset, line_end_offset+2, &uri_offsets)) != -1)
+ pai_uri_item_tree = display_sip_uri(tvb, sip_element_tree, &uri_offsets, &sip_pai_uri);
+ break;
case POS_P_PREFERRED_IDENTITY :
- if(hdr_tree)
+ if(hdr_tree)
{
sip_element_item = proto_tree_add_string_format(hdr_tree,
hf_header_array[hf_index], tvb,
@@ -2269,33 +2353,64 @@ separator_found2:
}
if((dissect_sip_uri(tvb, pinfo, value_offset, line_end_offset+2, &uri_offsets)) != -1)
+ ppi_uri_item_tree = display_sip_uri(tvb, sip_element_tree, &uri_offsets, &sip_ppi_uri);
+ break;
+
+ case POS_PERMISSION_MISSING :
+ if(hdr_tree)
{
- if(uri_offsets.display_name_end != uri_offsets.display_name_start)
- {
- proto_tree_add_item(sip_element_tree, hf_sip_display, tvb, uri_offsets.display_name_start,
- uri_offsets.display_name_end - uri_offsets.display_name_start + 1, FALSE);
- }
+ sip_element_item = proto_tree_add_string_format(hdr_tree,
+ hf_header_array[hf_index], tvb,
+ offset, next_offset - offset,
+ value, "%s",
+ tvb_format_text(tvb, offset, linelen));
- ti = proto_tree_add_item(sip_element_tree, hf_sip_ppi_addr, tvb, uri_offsets.uri_start, uri_offsets.uri_end - uri_offsets.uri_start + 1, FALSE);
- ppi_uri_item_tree = proto_item_add_subtree(ti, ett_sip_ppi_uri);
+ sip_element_tree = proto_item_add_subtree( sip_element_item,
+ ett_sip_element);
+ }
+ if((dissect_sip_uri(tvb, pinfo, value_offset, line_end_offset+2, &uri_offsets)) != -1)
+ pmiss_uri_item_tree = display_sip_uri(tvb, sip_element_tree, &uri_offsets, &sip_pmiss_uri);
+ break;
- if(uri_offsets.uri_user_end > uri_offsets.uri_user_start)
- {
- proto_tree_add_item(ppi_uri_item_tree, hf_sip_ppi_user, tvb, uri_offsets.uri_user_start,
- uri_offsets.uri_user_end - uri_offsets.uri_user_start + 1, FALSE);
- }
- proto_tree_add_item(ppi_uri_item_tree, hf_sip_ppi_host, tvb, uri_offsets.uri_host_start,
- uri_offsets.uri_host_end - uri_offsets.uri_host_start + 1, FALSE);
+ case POS_TRIGGER_CONSENT :
+ if(hdr_tree)
+ {
+ sip_element_item = proto_tree_add_string_format(hdr_tree,
+ hf_header_array[hf_index], tvb,
+ offset, next_offset - offset,
+ value, "%s",
+ tvb_format_text(tvb, offset, linelen));
- if(uri_offsets.uri_host_port_end > uri_offsets.uri_host_port_start)
- {
- proto_tree_add_item(ppi_uri_item_tree, hf_sip_ppi_port, tvb, uri_offsets.uri_host_port_start,
- uri_offsets.uri_host_port_end - uri_offsets.uri_host_port_start + 1, FALSE);
- }
+ sip_element_tree = proto_item_add_subtree( sip_element_item,
+ ett_sip_element);
+ }
+
+ if((dissect_sip_uri(tvb, pinfo, value_offset, line_end_offset+2, &uri_offsets)) != -1) {
+
+ tc_uri_item_tree = display_sip_uri(tvb, sip_element_tree, &uri_offsets, &sip_tc_uri);
+ if (line_end_offset > uri_offsets.uri_end) {
+ gint hparam_offset = uri_offsets.uri_end + 1;
+ // Is there a header parameter
+ if (tvb_find_guint8(tvb, hparam_offset, 1,';')) {
+ while ((hparam_offset != -1 && hparam_offset < line_end_offset) ) {
+ // Is this a target-uri ?
+ hparam_offset = hparam_offset + 1;
+ if (tvb_strncaseeql(tvb, hparam_offset, "target-uri=\"", 12) == 0) {
+ gint turi_start_offset = hparam_offset + 12;
+ gint turi_end_offset = tvb_find_guint8(tvb, turi_start_offset, -1,'\"');
+ if (turi_end_offset != -1)
+ proto_tree_add_item(tc_uri_item_tree, hf_sip_tc_turi, tvb, turi_start_offset,(turi_end_offset - turi_start_offset),FALSE);
+ else
+ break; //malformed
+ }
+ hparam_offset = tvb_find_guint8(tvb, hparam_offset, -1,';');
+ }
+ }
+ }
}
- break;
-
+ break;
+
case POS_CSEQ :
/* Store the sequence number */
cseq_number = atoi(value);
@@ -2531,6 +2646,7 @@ separator_found2:
}
break;
+ case POS_MAX_BREADTH :
case POS_MAX_FORWARDS :
case POS_RSEQ :
if(hdr_tree) {
@@ -2666,7 +2782,7 @@ separator_found2:
}/* if colon_offset */
if (is_no_header_termination == TRUE){
/* Header not terminated by empty line CRLF */
- cause=proto_tree_add_text(hdr_tree, tvb, line_end_offset, -1,
+ cause=proto_tree_add_text(hdr_tree, tvb, line_end_offset, -1,
"[Header not terminated by empty line (CRLF)]");
proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
@@ -2835,22 +2951,22 @@ static void
dfilter_sip_request_line(tvbuff_t *tvb, proto_tree *tree, guint meth_len)
{
char *value;
-
+
gint next_offset, linelen, parameter_end_offset;
guint offset = 0;
guint parameter_len = meth_len;
guchar c= '\0';
proto_tree *ruri_item_tree = NULL;
proto_item *ti;
-
+
/*
* We know we have the entire method; otherwise, "sip_parse_line()"
* would have returned OTHER_LINE.
-
+
* Request-Line = Method SP Request-URI SP SIP-Version CRLF
* SP = single space
*/
-
+
/* get method string*/
value = tvb_get_ephemeral_string(tvb, offset, parameter_len);
@@ -2858,7 +2974,7 @@ dfilter_sip_request_line(tvbuff_t *tvb, proto_tree *tree, guint meth_len)
stat_info->request_method = value;
linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
-
+
if (tree) {
proto_tree_add_string(tree, hf_Method, tvb, offset, parameter_len, value);
@@ -2873,13 +2989,13 @@ dfilter_sip_request_line(tvbuff_t *tvb, proto_tree *tree, guint meth_len)
/* R-URI: User Part found*/
parameter_len = (tvb_find_guint8(tvb, offset, linelen, '@'))-offset; /* calc R-URI User len*/
if (parameter_len > 0) {
- proto_tree_add_item(ruri_item_tree, hf_sip_ruri_user, tvb, offset,
+ proto_tree_add_item(ruri_item_tree, hf_sip_ruri_user, tvb, offset,
parameter_len, FALSE);
}
offset = offset + parameter_len + 1;
}
parameter_end_offset=offset;
-
+
while (parameter_end_offset < linelen){
parameter_end_offset++;
c = tvb_get_guint8(tvb, parameter_end_offset);
@@ -2899,7 +3015,7 @@ dfilter_sip_request_line(tvbuff_t *tvb, proto_tree *tree, guint meth_len)
proto_tree_add_item(ruri_item_tree, hf_sip_ruri_host, tvb, offset, parameter_len, FALSE);
offset = offset + parameter_len + 1;
-
+
if (c == ':'){
/* R-URI: Host Port found */
parameter_end_offset = offset;
@@ -2920,7 +3036,7 @@ dfilter_sip_request_line(tvbuff_t *tvb, proto_tree *tree, guint meth_len)
parameter_len = parameter_end_offset-offset; /* calc R-URI Host Port len*/
proto_tree_add_item(ruri_item_tree, hf_sip_ruri_port, tvb, offset, parameter_len, FALSE);
}
- /* end of Request-URI tree*/
+ /* end of Request-URI tree*/
}
}
@@ -3513,7 +3629,7 @@ guint sip_find_invite(packet_info *pinfo,
SET_ADDRESS(&key.dest_address, pinfo->net_dst.type, pinfo->net_dst.len,
pinfo->net_dst.data);
SET_ADDRESS(&key.source_address, pinfo->net_src.type, pinfo->net_src.len,
- pinfo->net_src.data);
+ pinfo->net_src.data);
key.dest_port = pinfo->destport;
key.source_port = pinfo->srcport;
@@ -3707,6 +3823,27 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3325: P-Asserted-Identity Port", HFILL }
},
+ { &hf_sip_pmiss_addr,
+ { "SIP PMISS Address", "sip.pmiss.addr",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Permission Missing Address", HFILL }
+ },
+ { &hf_sip_pmiss_user,
+ { "SIP PMISS User Part", "sip.pmiss.user",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Permission Missing User", HFILL }
+ },
+ { &hf_sip_pmiss_host,
+ { "SIP PMISS Host Part", "sip.pmiss.host",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Permission Missing Host", HFILL }
+ },
+ { &hf_sip_pmiss_port,
+ { "SIP PMISS Host Port", "sip.pmiss.port",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Permission Missing Port", HFILL }
+ },
+
{ &hf_sip_ppi_addr,
{ "SIP PPI Address", "sip.ppi.addr",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -3727,6 +3864,31 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3325: P-Preferred-Identity Port", HFILL }
},
+ { &hf_sip_tc_addr,
+ { "SIP TC Address", "sip.tc.addr",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Trigger Consent Address", HFILL }
+ },
+ { &hf_sip_tc_user,
+ { "SIP TC User Part", "sip.tc.user",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Trigger Consent User", HFILL }
+ },
+ { &hf_sip_tc_host,
+ { "SIP TC Host Part", "sip.tc.host",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Trigger Consent Host", HFILL }
+ },
+ { &hf_sip_tc_port,
+ { "SIP TC Host Port", "sip.tc.port",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Trigger Consent Port", HFILL }
+ },
+ { &hf_sip_tc_turi,
+ { "SIP TC Target URI", "sip.tc.target-uri",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 3325: Trigger Consent Target URI", HFILL }
+ },
{ &hf_header_array[POS_ACCEPT],
{ "Accept", "sip.Accept",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -3757,7 +3919,7 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3261: Alert-Info Header", HFILL }
},
- { &hf_header_array[POS_ALLOW],
+ { &hf_header_array[POS_ALLOW],
{ "Allow", "sip.Allow",
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3261: Allow Header", HFILL }
@@ -3767,6 +3929,11 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3265: Allow-Events Header", HFILL }
},
+ { &hf_header_array[POS_ANSWER_MODE],
+ { "Answer-Mode", "sip.Answer-Mode",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 5373: Answer-Mode Header", HFILL }
+ },
{ &hf_header_array[POS_AUTHENTICATION_INFO],
{ "Authentication-Info", "sip.Authentication-Info",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -3857,7 +4024,12 @@ void proto_register_sip(void)
FT_STRING, BASE_NONE,NULL,0x0,
"Draft: Join Header", HFILL }
},
- { &hf_header_array[POS_MAX_FORWARDS],
+ { &hf_header_array[POS_MAX_BREADTH],
+ { "Max-Breadth", "sip.Max-Breadth",
+ FT_UINT32, BASE_DEC,NULL,0x0,
+ "RFC 5393: Max-Breadth Header", HFILL }
+ },
+ { &hf_header_array[POS_MAX_FORWARDS],
{ "Max-Forwards", "sip.Max-Forwards",
FT_UINT32, BASE_DEC,NULL,0x0,
"RFC 3261: Max-Forwards Header", HFILL }
@@ -3993,11 +4165,22 @@ void proto_register_sip(void)
"RFC 3327: Path Header", HFILL }
},
+ { &hf_header_array[POS_PERMISSION_MISSING],
+ { "Permission-Missing", "sip.Permission-Missing",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 5360: Permission Missing Header", HFILL }
+ },
+
{ &hf_header_array[POS_PRIORITY],
{ "Priority", "sip.Priority",
FT_STRING, BASE_NONE,NULL,0x0,
"RFC 3261: Priority Header", HFILL }
},
+ { &hf_header_array[POS_PRIV_ANSWER_MODE],
+ { "Priv-Answer-mode", "sip.Priv-Answer-mode",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "Priv-Answer-mode", HFILL }
+ },
{ &hf_header_array[POS_PRIVACY],
{ "Privacy", "sip.Privacy",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -4161,6 +4344,12 @@ void proto_register_sip(void)
"RFC 3261: To Header", HFILL }
},
+ { &hf_header_array[POS_TRIGGER_CONSENT],
+ { "Trigger-Consent", "sip.Trigger-Consent",
+ FT_STRING, BASE_NONE,NULL,0x0,
+ "RFC 5380: Trigger Consent", HFILL }
+ },
+
{ &hf_header_array[POS_UNSUPPORTED],
{ "Unsupported", "sip.Unsupported",
FT_STRING, BASE_NONE,NULL,0x0,
@@ -4434,9 +4623,11 @@ void proto_register_sip(void)
&ett_sip_rack,
&ett_sip_ruri,
&ett_sip_pai_uri,
+ &ett_sip_pmiss_uri,
&ett_sip_ppi_uri,
+ &ett_sip_tc_uri,
&ett_sip_to_uri,
- &ett_sip_from_uri
+ &ett_sip_from_uri
};
static gint *ett_raw[] = {
&ett_raw_text,