aboutsummaryrefslogtreecommitdiffstats
path: root/tools/validate-diameter-xml.sh
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2016-08-17 19:47:42 -0400
committerJeff Morriss <jeff.morriss.ws@gmail.com>2016-08-17 23:53:23 +0000
commitf17ba6b21c892d4e74e2f75e766d6daacb8d5d52 (patch)
tree2748767c52e212c5146cbf156dd293f9ae9cd95d /tools/validate-diameter-xml.sh
parentcdd3f45c6455012ea573c8324009838db2570286 (diff)
Add a script to validate the Diameter dictionary XML.
I wrote this during Sharkfest to get the Diameter dictionary into (mostly) valid XML. There's some room for improvement in the script but it works. Change-Id: Ic8548c4f321831397951bf1d76779c263a832682 Reviewed-on: https://code.wireshark.org/review/17124 Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
Diffstat (limited to 'tools/validate-diameter-xml.sh')
-rwxr-xr-xtools/validate-diameter-xml.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/validate-diameter-xml.sh b/tools/validate-diameter-xml.sh
new file mode 100755
index 0000000000..09aa4af6aa
--- /dev/null
+++ b/tools/validate-diameter-xml.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# A small script to run xmllint on the Diameter XML files (after doing some
+# fixups to those files).
+#
+# Copyright 2016 Jeff Morriss <jeff.morriss.ws [AT] gmail.com>
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+if ! type -p sed > /dev/null
+then
+ echo "Sorry, 'sed' is needed to run this program."
+ exit 1
+fi
+if ! type -p xmllint > /dev/null
+then
+ echo "Sorry, 'xmllint' is needed to run this program."
+ exit 1
+fi
+
+# Ideally this would work regardless of our cwd
+if [ ! -r diameter/dictionary.xml ]
+then
+ echo "Couldn't find diameter/dictionary.xml"
+ exit 1
+fi
+if [ ! -r diameter/dictionary.dtd ]
+then
+ echo "Couldn't find diameter/dictionary.dtd"
+ exit 1
+fi
+
+# First edit all the AVP names that start with "3GPP" to indicate "TGPP".
+# XML doesn't allow ID's to start with a digit but:
+# 1) We don't *really* care if it's valid XML
+# 2) (but) we do want to use xmllint to find problems
+# 3) (and) users see the AVP names. Showing them "TGPP" instead of "3GPP"
+# is annoying enough to warrant this extra work.
+mkdir /tmp/diameter || exit 1
+cp diameter/dictionary.dtd /tmp/diameter || exit 1
+for f in diameter/*.xml
+do
+ sed 's/name="3GPP/name="TGPP/g' $f > /tmp/$f || exit 1
+done
+
+xmllint --noout --noent --postvalid /tmp/diameter/dictionary.xml &&
+ echo "Diameter dictionary is (mostly) valid XML!"
+
+rm -rf /tmp/diameter
+
+#
+# Editor modelines - https://www.wireshark.org/tools/modelines.html
+#
+# Local variables:
+# c-basic-offset: 8
+# tab-width: 8
+# indent-tabs-mode: t
+# End:
+#
+# vi: set shiftwidth=8 tabstop=8 noexpandtab:
+# :indentSize=8:tabSize=8:noTabs=false:
+#