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>
This commit is contained in:
parent
cdd3f45c64
commit
f17ba6b21c
|
@ -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 \
|
||||
|
|
|
@ -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:
|
||||
#
|
Loading…
Reference in New Issue