From f6fac5be808e495852332ee57d34f1ffe85d91d0 Mon Sep 17 00:00:00 2001 From: Ed Warnicke Date: Sat, 15 Dec 2001 20:22:47 +0000 Subject: Added handling for all of the subfields of SDP. svn path=/trunk/; revision=4399 --- packet-sdp.c | 765 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 757 insertions(+), 8 deletions(-) (limited to 'packet-sdp.c') diff --git a/packet-sdp.c b/packet-sdp.c index bc8db2f205..74ee22849d 100644 --- a/packet-sdp.c +++ b/packet-sdp.c @@ -4,7 +4,7 @@ * Jason Lango * Liberally copied from packet-http.c, by Guy Harris * - * $Id: packet-sdp.c,v 1.23 2001/12/15 05:37:43 guy Exp $ + * $Id: packet-sdp.c,v 1.24 2001/12/15 20:22:47 hagbard Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -40,6 +40,7 @@ static int proto_sdp = -1; +/* Top level fields */ static int hf_protocol_version = -1; static int hf_owner = -1; static int hf_session_name = -1; @@ -49,7 +50,7 @@ static int hf_email = -1; static int hf_phone = -1; static int hf_connection_info = -1; static int hf_bandwidth = -1; -static int hf_time_zone = -1; +static int hf_timezone = -1; static int hf_encryption_key = -1; static int hf_session_attribute = -1; static int hf_media_attribute = -1; @@ -61,13 +62,102 @@ static int hf_unknown = -1; static int hf_misplaced = -1; static int hf_invalid = -1; +/* hf_owner subfields*/ +static int hf_owner_username = -1; +static int hf_owner_sessionid = -1; +static int hf_owner_version = -1; +static int hf_owner_network_type = -1; +static int hf_owner_address_type = -1; +static int hf_owner_address = -1; + +/* hf_connection_info subfields */ +static int hf_connection_info_network_type = -1; +static int hf_connection_info_address_type = -1; +static int hf_connection_info_connection_address = -1; +static int hf_connection_info_ttl = -1; +static int hf_connection_info_num_addr = -1; + +/* hf_bandwidth subfields */ +static int hf_bandwidth_modifier = -1; +static int hf_bandwidth_value = -1; + +/* hf_time subfields */ +static int hf_time_start = -1; +static int hf_time_stop = -1; + +/* hf_repeat_time subfield */ +static int hf_repeat_time_interval = -1; +static int hf_repeat_time_duration = -1; +static int hf_repeat_time_offset = -1; + +/* hf_timezone subfields */ +static int hf_timezone_time = -1; +static int hf_timezone_offset = -1; + +/* hf_encryption_key subfields */ +static int hf_encryption_key_type = -1; +static int hf_encryption_key_data = -1; + +/* hf_session_attribute subfields */ +static int hf_session_attribute_field = -1; +static int hf_session_attribute_value = -1; + +/* hf_media subfields */ +static int hf_media_media = -1; +static int hf_media_port = -1; +static int hf_media_portcount = -1; +static int hf_media_proto = -1; +static int hf_media_format = -1; + +/* hf_session_attribute subfields */ +static int hf_media_attribute_field = -1; +static int hf_media_attribute_value = -1; + +/* trees */ static int ett_sdp = -1; +static int ett_sdp_owner = -1; +static int ett_sdp_connection_info = -1; +static int ett_sdp_bandwidth = -1; +static int ett_sdp_time = -1; +static int ett_sdp_repeat_time = -1; +static int ett_sdp_timezone = -1; +static int ett_sdp_encryption_key = -1; +static int ett_sdp_session_attribute = -1; +static int ett_sdp_media = -1; +static int ett_sdp_media_attribute = -1; + +/* static functions */ + +static void call_sdp_subdissector(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, int hf, proto_tree* ti); + +/* Subdissector functions */ +static void dissect_sdp_owner(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti); +static void dissect_sdp_connection_info(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti); +static void dissect_sdp_bandwidth(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item *ti); +static void dissect_sdp_time(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti); +static void dissect_sdp_repeat_time(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti); +static void dissect_sdp_timezone(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti); +static void dissect_sdp_encryption_key(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item * ti); +static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree,proto_item *ti); +static void dissect_sdp_media(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item *ti); +static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree,proto_item *ti); static void dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *sdp_tree; - proto_item *ti; + proto_item *ti, *sub_ti; gint offset = 0; gint next_offset; int linelen; @@ -201,7 +291,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } break; case 'z': - hf = hf_time_zone; + hf = hf_timezone; break; default: hf = hf_unknown; @@ -210,10 +300,14 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tokenoffset = 2; if( hf == hf_unknown || hf == hf_misplaced ) tokenoffset = 0; - proto_tree_add_string(sdp_tree,hf,tvb, offset, - linelen, - tvb_format_text(tvb,offset+tokenoffset, + sub_ti = proto_tree_add_string(sdp_tree,hf,tvb, offset, + linelen, + tvb_format_text(tvb, + offset+tokenoffset, linelen - tokenoffset)); + call_sdp_subdissector(tvb_new_subset(tvb,offset+tokenoffset, + linelen-tokenoffset,-1), + pinfo,tree,hf,sub_ti); offset = next_offset; } @@ -224,6 +318,526 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } +static void +call_sdp_subdissector(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, int hf, proto_tree* ti){ + if(hf == hf_owner){ + dissect_sdp_owner(tvb,pinfo,tree,ti); + } else if ( hf == hf_connection_info) { + dissect_sdp_connection_info(tvb,pinfo,tree,ti); + } else if ( hf == hf_bandwidth) { + dissect_sdp_bandwidth(tvb,pinfo,tree,ti); + } else if ( hf == hf_time) { + dissect_sdp_time(tvb,pinfo,tree,ti); + } else if ( hf == hf_repeat_time ){ + dissect_sdp_repeat_time(tvb,pinfo,tree,ti); + } else if ( hf == hf_timezone ) { + dissect_sdp_timezone(tvb,pinfo,tree,ti); + } else if ( hf == hf_encryption_key ) { + dissect_sdp_encryption_key(tvb,pinfo,tree,ti); + } else if ( hf == hf_session_attribute ){ + dissect_sdp_session_attribute(tvb,pinfo,tree,ti); + } else if ( hf == hf_media ) { + dissect_sdp_media(tvb,pinfo,tree,ti); + } else if ( hf == hf_media_attribute ){ + dissect_sdp_media_attribute(tvb,pinfo,tree,ti); + } +} + +static void +dissect_sdp_owner(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, + proto_item *ti){ + proto_tree *sdp_owner_tree; + gint offset,next_offset,tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_owner_tree = proto_item_add_subtree(ti,ett_sdp_owner); + + /* Find the username */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_owner_tree,hf_owner_username,tvb, offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the session id */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_owner_tree,hf_owner_sessionid, tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the version */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_owner_tree,hf_owner_version, tvb, offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the network type */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_owner_tree,hf_owner_network_type, tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the address type */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_owner_tree,hf_owner_address_type, tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the address */ + tokenlen = tvb_length_remaining(tvb,offset); + + proto_tree_add_string(sdp_owner_tree,hf_owner_address, tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); +} + +static void +dissect_sdp_connection_info(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti){ + proto_tree *sdp_connection_info_tree; + gint offset,next_offset,tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_connection_info_tree = proto_item_add_subtree(ti, + ett_sdp_connection_info); + + /* Find the network type */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_connection_info_tree, + hf_connection_info_network_type,tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the address type */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_connection_info_tree, + hf_connection_info_address_type,tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + + /* Find the connection address */ + next_offset = tvb_find_guint8(tvb,offset,-1,'/'); + if( next_offset == -1){ + tokenlen = tvb_length_remaining(tvb,offset); + } else { + tokenlen = next_offset - offset; + } + proto_tree_add_string(sdp_connection_info_tree, + hf_connection_info_connection_address, tvb, + offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + if(next_offset != -1){ + offset = next_offset + 1; + next_offset = tvb_find_guint8(tvb,offset,-1,'/'); + if( next_offset == -1){ + tokenlen = tvb_length_remaining(tvb,offset); + } else { + tokenlen = next_offset - offset; + } + proto_tree_add_string(sdp_connection_info_tree, + hf_connection_info_ttl,tvb,offset,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + if(next_offset != -1){ + offset = next_offset + 1; + tokenlen = tvb_length_remaining(tvb,offset); + proto_tree_add_string(sdp_connection_info_tree, + hf_connection_info_num_addr, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + } + } +} + +static void +dissect_sdp_bandwidth(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree,proto_item *ti){ + proto_tree * sdp_bandwidth_tree; + gint offset, next_offset, tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_bandwidth_tree = proto_item_add_subtree(ti,ett_sdp_bandwidth); + + /* find the modifier */ + next_offset = tvb_find_guint8(tvb,offset,-1,':'); + + if( next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_bandwidth_tree, hf_bandwidth_modifier, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + offset = next_offset + 1; + + tokenlen = tvb_length_remaining(tvb,offset); + + proto_tree_add_string(sdp_bandwidth_tree, hf_bandwidth_value, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + +} + +static void dissect_sdp_time(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti){ + proto_tree *sdp_time_tree; + gint offset,next_offset, tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_time_tree = proto_item_add_subtree(ti,ett_sdp_time); + + /* get start time */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + + tokenlen = next_offset - offset; + proto_tree_add_string(sdp_time_tree, hf_time_start, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + /* get stop time */ + offset = next_offset + 1; + tokenlen = tvb_length_remaining(tvb,offset); + proto_tree_add_string(sdp_time_tree,hf_time_start, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); +} + +static void dissect_sdp_repeat_time(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti){ + proto_tree *sdp_repeat_time_tree; + gint offset,next_offset, tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_repeat_time_tree = proto_item_add_subtree(ti,ett_sdp_time); + + /* get interval */ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + + tokenlen = next_offset - offset; + proto_tree_add_string(sdp_repeat_time_tree, hf_repeat_time_interval, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + /* get duration */ + offset = next_offset + 1; + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if( next_offset == -1 ) + return; + + tokenlen = next_offset - offset; + proto_tree_add_string(sdp_repeat_time_tree,hf_repeat_time_duration, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + /* get offsets */ + do{ + offset = next_offset +1; + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if(next_offset != -1){ + tokenlen = next_offset - offset; + } else { + tokenlen = tvb_length_remaining(tvb,offset); + } + proto_tree_add_string(sdp_repeat_time_tree, hf_repeat_time_offset, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + } while( next_offset != -1 ); + +} +static void +dissect_sdp_timezone(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item* ti){ + proto_tree* sdp_timezone_tree; + gint offset, next_offset, tokenlen; + if(!tree) + return; + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_timezone_tree = proto_item_add_subtree(ti,ett_sdp_timezone); + + do{ + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if(next_offset == -1) + break; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_timezone_tree,hf_timezone_time,tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + if(next_offset != -1){ + tokenlen = next_offset - offset; + } else { + tokenlen = tvb_length_remaining(tvb,offset); + } + proto_tree_add_string(sdp_timezone_tree,hf_timezone_offset,tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + } while (next_offset != -1); + +} + + +static void dissect_sdp_encryption_key(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item * ti){ + proto_tree *sdp_encryption_key_tree; + gint offset, next_offset, tokenlen; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_encryption_key_tree = proto_item_add_subtree(ti,ett_sdp_encryption_key); + + next_offset = tvb_find_guint8(tvb,offset,-1,':'); + + if(next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_encryption_key_tree,hf_encryption_key_type, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + offset = next_offset + 1; + tokenlen = tvb_length_remaining(tvb,offset); + proto_tree_add_string(sdp_encryption_key_tree,hf_encryption_key_data, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + +} + + + +static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item * ti){ + proto_tree *sdp_session_attribute_tree; + gint offset, next_offset, tokenlen; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_session_attribute_tree = proto_item_add_subtree(ti, + ett_sdp_session_attribute); + + next_offset = tvb_find_guint8(tvb,offset,-1,':'); + + if(next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_session_attribute_tree, + hf_session_attribute_field, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + offset = next_offset + 1; + tokenlen = tvb_length_remaining(tvb,offset); + proto_tree_add_string(sdp_session_attribute_tree, + hf_session_attribute_value, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + +} + +static void +dissect_sdp_media(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item *ti){ + proto_tree *sdp_media_tree; + gint offset, next_offset, tokenlen; + + if(!tree) + return; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_media_tree = proto_item_add_subtree(ti,ett_sdp_media); + + next_offset = tvb_find_guint8(tvb,offset, -1, ' '); + + if(next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_media_tree, hf_media_media, tvb, + offset ,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + offset = next_offset + 1; + + next_offset = tvb_find_guint8(tvb,offset, -1, ' '); + if(next_offset == -1) + return; + tokenlen = next_offset - offset; + next_offset = tvb_find_guint8(tvb,offset, tokenlen, '/'); + + if(next_offset != -1){ + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_media_tree, hf_media_port, tvb, + offset ,tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + next_offset = tvb_find_guint8(tvb,offset, -1, ' '); + if(next_offset == -1) + return; + tokenlen = next_offset - offset; + proto_tree_add_string(sdp_media_tree, hf_media_portcount, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + } else { + next_offset = tvb_find_guint8(tvb,offset, -1, ' '); + + if(next_offset == -1) + return; + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_media_tree, hf_media_port, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + offset = next_offset + 1; + } + + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + + if( next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_media_tree, hf_media_proto, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset, tokenlen)); + + do{ + offset = next_offset + 1; + next_offset = tvb_find_guint8(tvb,offset,-1,' '); + + if(next_offset == -1){ + tokenlen = tvb_length_remaining(tvb,offset); + } else { + tokenlen = next_offset - offset; + } + + proto_tree_add_string(sdp_media_tree, hf_media_format, tvb, + offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + } while (next_offset != -1); + +} + +static void dissect_sdp_media_attribute(tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, proto_item * ti){ + proto_tree *sdp_media_attribute_tree; + gint offset, next_offset, tokenlen; + + offset = 0; + next_offset = 0; + tokenlen = 0; + + sdp_media_attribute_tree = proto_item_add_subtree(ti, + ett_sdp_media_attribute); + + next_offset = tvb_find_guint8(tvb,offset,-1,':'); + + if(next_offset == -1) + return; + + tokenlen = next_offset - offset; + + proto_tree_add_string(sdp_media_attribute_tree, + hf_media_attribute_field, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + + offset = next_offset + 1; + tokenlen = tvb_length_remaining(tvb,offset); + proto_tree_add_string(sdp_media_attribute_tree, + hf_media_attribute_value, + tvb, offset, tokenlen, + tvb_format_text(tvb,offset,tokenlen)); + +} + void proto_register_sdp(void) { @@ -264,7 +878,7 @@ proto_register_sdp(void) { "Bandwidth Information (b)", "sdp.bandwidth", FT_STRING, BASE_NONE, NULL, 0x0, "Bandwidth Information", HFILL }}, - { &hf_time_zone, + { &hf_timezone, { "Time Zone Adjustments (z)", "sdp.timezone", FT_STRING, BASE_NONE, NULL, 0x0, "Time Zone Adjustments", HFILL }}, @@ -308,9 +922,144 @@ proto_register_sdp(void) { "Invalid line", "sdp.invalid",FT_STRING, BASE_NONE, NULL, 0x0, "Invalid line", HFILL }}, + { &hf_owner_username, + { "Owner Username", + "sdp.owner.username",FT_STRING, BASE_NONE, NULL, 0x0, + "Owner Username", HFILL }}, + { &hf_owner_sessionid, + { "Session ID", + "sdp.owner.sessionid",FT_STRING, BASE_NONE, NULL, 0x0, + "Session ID", HFILL }}, + { &hf_owner_version, + { "Session Version", + "sdp.owner.version",FT_STRING, BASE_NONE, NULL, 0x0, + "Session Version", HFILL }}, + { &hf_owner_network_type, + { "Owner Network Type", + "sdp.owner.network_type",FT_STRING, BASE_NONE, NULL, 0x0, + "Owner Network Type", HFILL }}, + { &hf_owner_address_type, + { "Owner Address Type", + "sdp.owner.address_type",FT_STRING, BASE_NONE, NULL, 0x0, + "Owner Address Type", HFILL }}, + { &hf_owner_address, + { "Owner Address", + "sdp.owner.address",FT_STRING, BASE_NONE, NULL, 0x0, + "Owner Address", HFILL }}, + { &hf_connection_info_network_type, + { "Connection Network Type", + "sdp.connection_info.network_type",FT_STRING, BASE_NONE, NULL, 0x0, + "Connection Network Type", HFILL }}, + { &hf_connection_info_address_type, + { "Connection Address Type", + "sdp.connection_info.address_type",FT_STRING, BASE_NONE, NULL, 0x0, + "Connection Address Type", HFILL }}, + { &hf_connection_info_connection_address, + { "Connection Address", + "sdp.connection_info.address",FT_STRING, BASE_NONE, NULL, 0x0, + "Connection Address", HFILL }}, + { &hf_connection_info_ttl, + { "Connection TTL", + "sdp.connection_info.ttl",FT_STRING, BASE_NONE, NULL, 0x0, + "Connection TTL", HFILL }}, + { &hf_connection_info_num_addr, + { "Connection Number of Addresses", + "sdp.connection_info.num_addr",FT_STRING, BASE_NONE, NULL, 0x0, + "Connection Number of Addresses", HFILL }}, + { &hf_bandwidth_modifier, + { "Bandwidth Modifier", + "sdp.bandwidth.modifier",FT_STRING, BASE_NONE, NULL, 0x0, + "Bandwidth Modifier", HFILL }}, + { &hf_bandwidth_value, + { "Bandwidth Value", + "sdp.bandwidth.value",FT_STRING, BASE_NONE, NULL, 0x0, + "Bandwidth Value", HFILL }}, + { &hf_time_start, + { "Session Start Time", + "sdp.time.start",FT_STRING, BASE_NONE, NULL, 0x0, + "Session Start Time", HFILL }}, + { &hf_time_stop, + { "Session Stop Time", + "sdp.time.stop",FT_STRING, BASE_NONE, NULL, 0x0, + "Session Stop Time", HFILL }}, + { &hf_repeat_time_interval, + { "Repeat Interval", + "sdp.repeat_time.interval",FT_STRING, BASE_NONE, NULL, 0x0, + "Repeat Interval", HFILL }}, + { &hf_repeat_time_duration, + { "Repeat Duration", + "sdp.repeat_time.duration",FT_STRING, BASE_NONE, NULL, 0x0, + "Repeat Duration", HFILL }}, + { &hf_repeat_time_offset, + { "Repeat Offset", + "sdp.repeat_time.offset",FT_STRING, BASE_NONE, NULL, 0x0, + "Repeat Offset", HFILL }}, + { &hf_timezone_time, + { "Timezone Time", + "sdp.timezone.time",FT_STRING, BASE_NONE, NULL, 0x0, + "Timezone Time", HFILL }}, + { &hf_timezone_offset, + { "Timezone Offset", + "sdp.timezone.offset",FT_STRING, BASE_NONE, NULL, 0x0, + "Timezone Offset", HFILL }}, + { &hf_encryption_key_type, + { "Key Type", + "sdp.encryption_key.type",FT_STRING, BASE_NONE, NULL, 0x0, + "Type", HFILL }}, + { &hf_encryption_key_data, + { "Key Data", + "sdp.encryption_key.data",FT_STRING, BASE_NONE, NULL, 0x0, + "Data", HFILL }}, + { &hf_session_attribute_field, + { "Session Attribute Fieldname", + "sdp.session_attr.field",FT_STRING, BASE_NONE, NULL, 0x0, + "Session Attribute Fieldname", HFILL }}, + { &hf_session_attribute_value, + { "Session Attribute Value", + "sdp.session_attr.value",FT_STRING, BASE_NONE, NULL, 0x0, + "Session Attribute Value", HFILL }}, + { &hf_media_media, + { "Media Type", + "sdp.media.media",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Type", HFILL }}, + { &hf_media_port, + { "Media Port", + "sdp.media.port",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Port", HFILL }}, + { &hf_media_portcount, + { "Media Port Count", + "sdp.media.portcount",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Port Count", HFILL }}, + { &hf_media_proto, + { "Media Proto", + "sdp.media.proto",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Proto", HFILL }}, + { &hf_media_format, + { "Media Format", + "sdp.media.format",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Format", HFILL }}, + { &hf_media_attribute_field, + { "Media Attribute Fieldname", + "sdp.media_attribute.field",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Attribute Fieldname", HFILL }}, + { &hf_media_attribute_value, + { "Media Attribute Value", + "sdp.media_attribute.value",FT_STRING, BASE_NONE, NULL, 0x0, + "Media Attribute Value", HFILL }}, + }; static gint *ett[] = { &ett_sdp, + &ett_sdp_owner, + &ett_sdp_connection_info, + &ett_sdp_bandwidth, + &ett_sdp_time, + &ett_sdp_repeat_time, + &ett_sdp_timezone, + &ett_sdp_encryption_key, + &ett_sdp_session_attribute, + &ett_sdp_media, + &ett_sdp_media_attribute, }; proto_sdp = proto_register_protocol("Session Description Protocol", -- cgit v1.2.3