Ethereal-dev: [Ethereal-dev] Small xml [patch]

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Martin Mathieson <martin.mathieson@xxxxxxxxxxxx>
Date: Tue, 16 May 2006 17:53:13 +0100
Hi,

This patch:
- adds application/xpidf+xml as a media type known to be xml
- appends /xml to the protocol column (as SDP does). It would be nice to append the top-level element, or the name taken from a matching DTD, but this will do for now (at least its a short name). - corrects the help text for the preference. I can see that it is registered as a heuristic for "http", "sip" and "media"

I've also included a slightly updated version of reginfo.dtd (RFC 3680) for the dtds folder. I've found it useful while looking at messages of that type.

Regards,
Martin
Index: epan/dissectors/packet-xml.c
===================================================================
--- epan/dissectors/packet-xml.c	(revision 18170)
+++ epan/dissectors/packet-xml.c	(working copy)
@@ -160,6 +160,7 @@
 	"application/xcap-error+xml", 
 	"application/xml", 
 	"application/xml-dtd", 
+	"application/xpidf+xml",
 	"application/xslt+xml", 
 	"image/svg+xml", 
 };
@@ -171,7 +172,10 @@
 	tvbparse_elem_t* tok = NULL;
 	static GPtrArray* stack = NULL;
 	xml_frame_t* current_frame;
-	
+
+	if (check_col(pinfo->cinfo, COL_PROTOCOL))
+		col_append_str(pinfo->cinfo, COL_PROTOCOL, "/XML");
+
 	if(!tree) return;
 	
 	if (stack != NULL)
@@ -1118,7 +1122,7 @@
 	}
 	
 	if (test_for_directory(dirname) == EISDIR) {
-	    
+	
 	    if ((dir = OPENDIR_OP(dirname)) != NULL) {
 	        while ((file = DIRGETNEXT_OP(dir)) != NULL) {
 	            guint namelen;
@@ -1216,7 +1220,7 @@
     
 	xml_module = prefs_register_protocol(xml_ns.hf_tag,apply_prefs);
     prefs_register_bool_preference(xml_module, "heuristic", "Use Heuristics",
-                                   "Try to recognize XML for unknown HTTP media types",
+                                   "Try to recognize XML for unknown media types",
                                    &pref_heuristic);
     
     g_array_free(hf_arr,FALSE);
<? ethereal:protocol
   proto_name="reginfo"
   description="Reginfo XML doc (RFC 3680)"
   hierarchy="yes" ?>

<!--
    
-->

<!ELEMENT reginfo (registration)* >
<!ATTLIST reginfo xmlns CDATA #REQUIRED
                  version CDATA #REQUIRED
                  state CDATA #REQUIRED>

<!ELEMENT registration (contact)*>
<!ATTLIST registration aor CDATA #REQUIRED
                       id CDATA #REQUIRED
                       state CDATA #REQUIRED>

<!ELEMENT contact (uri | display-name? | unknown-param?)* >
<!ATTLIST contact      id CDATA #REQUIRED
                       state CDATA #REQUIRED
                       event CDATA #REQUIRED
                       expires CDATA #IMPLIED
                       retry-after CDATA #IMPLIED
                       duration-registered CDATA #IMPLIED
                       q CDATA #IMPLIED
                       cseq CDATA #IMPLIED
                       callid CDATA #IMPLIED>

<!ELEMENT uri (#PCDATA)>

<!ELEMENT display-name (#PCDATA)>
<!ATTLIST display-name  lang CDATA #IMPLIED>

<!ELEMENT unknown-param (#PCDATA)>
<!ATTLIST unknown-param  name CDATA #REQUIRED>