diff options
-rw-r--r-- | tools/Makefile.am | 1 | ||||
-rwxr-xr-x | tools/validate-diameter-xml.sh | 77 |
2 files changed, 78 insertions, 0 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am index 9b9d093cae..d40ba8a7d2 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -92,6 +92,7 @@ EXTRA_DIST = \ usb-ptp-extract-models.pl \ usb-ptp-extract-models.txt \ valgrind-wireshark.sh \ + validate-diameter-xml.sh \ vg-suppressions \ win-setup.ps1 \ wireshark_be.py \ 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: +# |