System test refinement
authorEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Fri, 20 Nov 2015 14:46:50 +0000 (15:46 +0100)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Fri, 20 Nov 2015 14:46:50 +0000 (15:46 +0100)
68 files changed:
example/diameter/launcher/DEPLOY.sh
example/diameter/launcher/DEPLOY_setups.sh
example/diameter/launcher/deployments/basic/configure.sh
example/diameter/launcher/deployments/st-client/README
example/diameter/launcher/deployments/st-client/clone.sh [new symlink]
example/diameter/launcher/deployments/st-client/configure.sh
example/diameter/launcher/deployments/st-client/operation_all.sh [new file with mode: 0755]
example/diameter/launcher/deployments/st-client/pre-start.sh [new file with mode: 0755]
example/diameter/launcher/deployments/st-client/program.sh [new file with mode: 0755]
example/diameter/launcher/deployments/st-client/realms_example/README [new file with mode: 0644]
example/diameter/launcher/deployments/st-client/realms_example/cerGx.xml [new file with mode: 0644]
example/diameter/launcher/deployments/st-client/realms_example/cerRx.xml [new file with mode: 0644]
example/diameter/launcher/deployments/st-client/realms_example/dictionaryBase.xml [new symlink]
example/diameter/launcher/deployments/st-client/realms_example/dictionaryGx.xml [new symlink]
example/diameter/launcher/deployments/st-client/realms_example/dictionaryRx.xml [new symlink]
example/diameter/launcher/deployments/st-client/realms_example/services.msk [new file with mode: 0644]
example/diameter/launcher/deployments/st-client/run.sh [deleted file]
example/diameter/launcher/deployments/st-client/run_all.sh
example/diameter/launcher/deployments/st-client/st_examples [new symlink]
example/diameter/launcher/deployments/test_examples/RxGx/01.CER_Gx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/02.CEA_Gx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/03.CER_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/04.CEA_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/05.CCR-I.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/06.CCA-I.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/07.AAR-flows.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/08.AAA-flows.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/09.RAR-install.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/10.RAA-install.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/11.CCR-U.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/12.CCA-U.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/13.STR_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/14.STA_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/15.RAR-remove.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/16.RAA-remove.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/17.CCR-T.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/18.CCA-T.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/19.DPR_Gx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/20.DPA_Gx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/21.DPR_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/22.DPA_Rx.xml [deleted file]
example/diameter/launcher/deployments/test_examples/RxGx/simple.sh [deleted file]
example/diameter/launcher/deployments/test_examples/checkings.sh [deleted file]
example/diameter/launcher/deployments/test_examples/cycle.sh [deleted file]
example/diameter/launcher/deployments/test_examples/endsOk.sh [deleted file]
example/diameter/launcher/resources/scripts/clone.sh
example/diameter/launcher/resources/scripts/operation_signal.sh
example/diameter/launcher/resources/st_examples/DynamicQualification/.testcase.txt.st [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.15.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.20.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.28.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.30.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.35.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.39.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/1.41.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/15.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/20.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/28.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/30.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/35.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/39.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/41.hex.as.xml.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/DynamicQualification/testcase.txt.msk [new file with mode: 0644]
example/diameter/launcher/resources/st_examples/README [new file with mode: 0644]
example/diameter/launcher/resources/stack_examples/0.xml [new file with mode: 0644]
example/diameter/launcher/resources/stack_examples/16777236.xml [new file with mode: 0644]
example/diameter/launcher/resources/stack_examples/16777238.xml [new file with mode: 0644]
example/diameter/launcher/resources/stack_examples/16777302.xml [new file with mode: 0644]

index e44e928..1023729 100755 (executable)
@@ -8,6 +8,7 @@ MSGDTD=../../../include/anna/diameter/codec/message.dtd
 DCTDTD=../../../include/anna/diameter/stack/dictionary.dtd
 BASE_PROT=commands_baseProtocol.xml
 SERVICES=./resources/services_examples
+STACK_EXAMPLES=./resources/stack_examples
 SRVDTD=$SERVICES/services.dtd
 
 # Executables in priority order:
@@ -17,6 +18,7 @@ EXECS=( $EXEC_installed ./release/example_diameter_launcher ./debug/example_diam
 # Stack management
 STACKMGMT_EXEC_installed=/opt/bin/anna/example_diameter_stackManagement
 STACKMGMT_EXECS=( $STACKMGMT_EXEC_installed ../stackManagement/release/example_diameter_stackManagement ../stackManagement/debug/example_diameter_stackManagement )
+:1
 
 #############
 # FUNCTIONS #
@@ -54,17 +56,17 @@ createRunScript () {
   [ "$1" = "b" ] && return
 
   local other=
-  [ "$1" = "a" ] && { exe=ADML-launcher ; other="--httpServer \`grep -v ^# .httpServer\`"; }
-  [ "$1" = "f" ] && { exe=ADML-ftclient ; ln -s ADML-launcher $exe ; }
-  [ "$1" = "s" ] && { exe=ADML-stclient ; other="--disableLogs"; ln -s ADML-launcher $exe ; }
+  [ "$1" = "a" ] && other="--httpServer \`grep -v ^# .httpServer\`"
+  [ "$1" = "f" ] && ln -s ADML-launcher $EXE
+  [ "$1" = "s" ] && { other="--disableLogs"; ln -s ADML-launcher $EXE ; }
 
   echo "Creating 'run.sh' script ..."
 
   cat << EOF > run.sh
 #!/bin/bash
 cd \`dirname \$0\`
-EXE=$exe
-STARTED=\`pgrep \$EXE 2>/dev/null\`
+EXE=$EXE
+STARTED=\`pgrep \$EXE$ 2>/dev/null\`
 [ \$? -eq 0 ] && { echo "Already started!"; echo "\$STARTED" ; exit 1 ; }
 ./pre-start.sh
 0> launcher.trace
@@ -154,7 +156,7 @@ then
   echo " (a)dvanced version:     includes burst management script and templates for different scenarios. Automatic configuration during start."
   echo " (b)asic version:        4 types of launcher (client, server, balancer, dummy), lightly configured and managed through SIGURS2 method."
   echo " (f)unction test client: special client with regexp scheduler script based on splitted traffic logs. Requires a server to perform the tests."
-  echo " (s)ystem test client:   special client for stress testing. Requires a server to perform the tests."
+  echo " (s)ystem test client:   special client for stress testing. Requires a server/s to perform the tests."
   echo
   echo "Input option [b]:"
   read option
@@ -204,6 +206,7 @@ else
 fi
 
 [ -d $DPATH ] && _exit "The installation path '$DPATH' must not exists."
+EXE=ADML-`basename $DPATH`
 
 echo "Copying to '$DPATH' ..."
 mkdir -p $DPATH
@@ -222,6 +225,8 @@ cp -rL $DEPLOYMENTS_DIR/* $DPATH
 cp $SETUPS_DIR/*xml $DPATH/stacks
 cp $SETUPS_DIR/*sh $DPATH/stacks
 cp $SETUPS_DIR/readme.txt $DPATH/stacks
+mkdir $DPATH/stacks/other_examples
+cp $STACK_EXAMPLES/* $DPATH/stacks/other_examples 
 cp $MSGDTD $DPATH/DTDs
 cp $DCTDTD $DPATH/DTDs
 cp $SRVDTD $DPATH/DTDs
index b050efd..5a3256d 100755 (executable)
@@ -23,7 +23,7 @@ echo "Which one you want to deploy [1]:"
 echo
 echo "   1. Client and server"
 echo "   2. Ft-client and server"
-echo "   3. St-client and server"
+echo "   3. St-client and servers"
 echo
 read type
 [ "$type" = "" ] && type=1
@@ -38,7 +38,7 @@ case $type in
   ;;
 
   3)
-    DEPLOY_DIR__dflt=$HOME/ADML-stclientAndServer
+    DEPLOY_DIR__dflt=$HOME/ADML-stclientAndServers
   ;;
 
   *)
@@ -57,27 +57,44 @@ case $type in
   1)
     $DEPLOY_SCR b $DIR/client
     $DEPLOY_SCR b $DIR/server
+    echo "Configuring ..."
     cd $DIR/client
-    echo c | ./configure.sh
+    echo c | ./configure.sh >/dev/null
     cd - >/dev/null
     cd $DIR/server
-    echo s | ./configure.sh
+    echo s | ./configure.sh >/dev/null
     cd - >/dev/null
   ;;
 
   2)
     $DEPLOY_SCR f $DIR/ft-client
     $DEPLOY_SCR b $DIR/server
+    echo "Configuring ..."
     cd $DIR/server
-    echo s | ./configure.sh
+    echo s | ./configure.sh >/dev/null
     cd - >/dev/null
   ;;
 
   3)
     $DEPLOY_SCR s $DIR/st-client
-    $DEPLOY_SCR b $DIR/server
-    cd $DIR/server
-    echo s | ./configure.sh
+    $DEPLOY_SCR b $DIR/serverGx
+    $DEPLOY_SCR b $DIR/serverRx
+    echo "Configuring ..."
+    cd $DIR/st-client
+    mv run.sh .run-one.sh
+    mv run_all.sh run.sh
+    mv operation.sh .operation-one.sh
+    mv operation_all.sh operation.sh
+    rm dictionary.xml
+    cd - >/dev/null
+    cd $DIR/serverGx
+    echo s | ./configure.sh >/dev/null
+    sed -i 's/3868/3869/' services.xml
+    ln -sf stacks/other_examples/16777238.xml dictionary.xml
+    cd - >/dev/null
+    cd $DIR/serverRx
+    echo s | ./configure.sh >/dev/null
+    ln -sf stacks/other_examples/16777236.xml dictionary.xml
     cd - >/dev/null
   ;;
 esac
index 7a3705b..3b326bc 100755 (executable)
@@ -24,7 +24,7 @@ createRunScript () {
   cat << EOF > run.sh
 #!/bin/bash
 cd \`dirname \$0\`
-STARTED=\`pgrep $1 2>/dev/null\`
+STARTED=\`pgrep $1$ 2>/dev/null\`
 [ \$? -eq 0 ] && { echo "Already started!"; echo "\$STARTED" ; exit 1 ; }
 0> launcher.trace
 rm -f counters/* test-reports/*
@@ -88,7 +88,7 @@ then
 fi
 
 # Run script:
-EXE_LINK=ADML-$tol
+EXE_LINK=ADML-`basename $PWD`
 ln -sf $EXE_BN $EXE_LINK
 
 case $tol in
index 6c8c711..8950d84 100644 (file)
@@ -10,11 +10,26 @@ for system testing.
 STARTING THE PROCESS
 --------------------
 After configuring the ADML execution context, a new script has been created: 'run.sh'.
-This script will run all the cloned ADML instances within ADMLS directory.
+This script will run all the cloned ADML instances within ADMLS directory. Also, an
+'./operation.sh' script will broadcast the operation provided through every cloned
+instance. For example, if you provide 'test|ttps|5', the speed of 5 test cases per
+second will be set on every ADML instance. Imagine you have N instances, and then
+you actually are establishing a total 5*N speed rate over the servers.
+
+TESTING PROCEDURE
+-----------------
+Firstly you shall program the test cases. For example:
+  ./program.sh st_examples/DynamicQualification
+
+Using option '-s', the testing will start after programming, with the desired rate
+selected on configuration stage.
+
+Don't forget to populate whatever data you need on the tested system, because this
+work is not done here.
 
 OPERATION
 ---------
 Management interface for lite version is based on SIGUSR2 signal caugh. Use './operation.sh'
-script to send any operation to the processes. Ask for help with that script to see all the
-operations supported.
+script within a specific instance directory to send any operation to the process. Ask for
+help with that script to see all the operations supported.
 
diff --git a/example/diameter/launcher/deployments/st-client/clone.sh b/example/diameter/launcher/deployments/st-client/clone.sh
new file mode 120000 (symlink)
index 0000000..1a5e8eb
--- /dev/null
@@ -0,0 +1 @@
+../../resources/scripts/clone.sh
\ No newline at end of file
index 383c21a..3073050 100755 (executable)
@@ -9,6 +9,9 @@ ADML_INSTANCES__ST_CONF_FILE=.st_conf_adml_instances
 ADML_CONNECTIONS__ST_CONF_FILE=.st_conf_adml_connections
 CYCLE_REPEATS__ST_CONF_FILE=.st_conf_cycle_repeats
 N_TESTCASES__ST_CONF_FILE=.st_conf_n_testcases
+ADML_RATE_PER_INSTANCE__ST_CONF_FILE=.st_conf_rate_per_instance
+ADML_DESIRED_RATE__ST_CONF_FILE=.st_conf_desired_rate
+N_TESTCASES_PROGRAM_LAYOUT__ST_CONF_FILE=.st_conf_n_testcases_program_layout
 
 #############
 # FUNCTIONS #
@@ -22,7 +25,10 @@ _exit () {
 
 # ceil of division $1/$2
 ceil() {
-  echo "$1 $2" | awk '{print int( ($1/$2) + 1 )}'
+  #echo "$1 $2" | awk '{print int( ($1/$2) + 1 )}'
+  awk -vnumber="$1" -vdiv="$2" '
+  function ceiling(x){return x%1 ? int(x)+1 : x}
+  BEGIN{ print ceiling(number/div) }'
 }
 
 # Calculates the number of ADML instances and their client connections
@@ -70,9 +76,20 @@ calculate_deployment_layout() {
   read G_ADML_CONNECTIONS
   [ -z "$G_ADML_CONNECTIONS" ] && G_ADML_CONNECTIONS=1
   [ $G_ADML_CONNECTIONS -lt 1 ] && G_ADML_CONNECTIONS=1
-  [ $G_ADML_CONNECTIONS -gt $MAXIMUM_SUGGESTED_CLIENT_CONNECTION_PER_ADML_INSTANCE ] && G_ADML_CONNECTIONS=$MAXIMUM_SUGGESTED_CLIENT_CONNECTION_PER_ADML_INSTANCE
+  if [ $G_ADML_CONNECTIONS -gt 1 ]
+  then
+    echo "Remember to add 'diameterServerSessions="$G_ADML_CONNECTIONS"' on servers services.xml file (node tag)"
+    echo " in case that you are testing against ADML servers."
+    echo
+    echo "Press ENTER to continue, CTRL-C to abort ..."
+    read dummy
+  fi
+  if [ $G_ADML_CONNECTIONS -gt $MAXIMUM_SUGGESTED_CLIENT_CONNECTION_PER_ADML_INSTANCE ]
+  then
+    G_ADML_CONNECTIONS=$MAXIMUM_SUGGESTED_CLIENT_CONNECTION_PER_ADML_INSTANCE
+  fi
   
-  G_ADML_INSTANCES=$((max_connections/G_ADML_CONNECTIONS))
+  G_ADML_INSTANCES=$(ceil $max_connections $G_ADML_CONNECTIONS)
 }
 
 #############
@@ -86,6 +103,8 @@ echo "====================================="
 echo "ADML SYSTEM TEST CONFIGURATION WIZARD"
 echo "====================================="
 echo
+[ -d ADMLS ] && _exit "ADMLS directory still exists. Please remove it to continue (perhaps you have to 'pkill ADML' before) !"
+[ ! -d realms ] && _exit "Missing realms configuration (expecting '$PWD/realms' directory). Try with 'realms-example' and see README inside it !"
 
 calculate_deployment_layout
 
@@ -93,6 +112,13 @@ calculate_deployment_layout
 echo $G_ADML_INSTANCES > $ADML_INSTANCES__ST_CONF_FILE
 echo $G_ADML_CONNECTIONS > $ADML_CONNECTIONS__ST_CONF_FILE
 
+# Rate per instance:
+#rate_per_instance=$(ceil $desired_rate $G_ADML_INSTANCES)
+rate_per_instance=$((desired_rate/$G_ADML_INSTANCES))
+[ $rate_per_instance -lt 1 ] && rate_per_instance=1
+echo $rate_per_instance > $ADML_RATE_PER_INSTANCE__ST_CONF_FILE
+echo $desired_rate > $ADML_DESIRED_RATE__ST_CONF_FILE
+
 echo
 echo "Suggested layout:"
 echo " - $G_ADML_INSTANCES ADML instances"
@@ -104,6 +130,7 @@ echo "Usually, you will program a test case per subscriber. Input the number of
 read N_TESTCASES
 while [ -z "$N_TESTCASES" ]; do read N_TESTCASES; done
 echo $N_TESTCASES > $N_TESTCASES__ST_CONF_FILE
+testcase_per_adml_instance=$N_TESTCASES
 echo
 time_covered_1=$(ceil $N_TESTCASES $maximum_rate)
 time_covered=$(ceil $N_TESTCASES $((maximum_rate*G_ADML_INSTANCES)))
@@ -111,10 +138,19 @@ echo "That amount covers $time_covered_1 seconds for one running ADML instance."
 if [ $G_ADML_INSTANCES -gt 1 ]
 then
   echo "But you will have $G_ADML_INSTANCES instances running in parallel, then the total covered time is: $time_covered seconds"
-  testcase_per_adml_instance=$(ceil $N_TESTCASES $G_ADML_INSTANCES)
+  testcase_per_adml_instance=$((N_TESTCASES/G_ADML_INSTANCES))
   echo "(aproximately, $testcase_per_adml_instance test cases will be programmed on each ADML instance)"
 fi
 
+0>$N_TESTCASES_PROGRAM_LAYOUT__ST_CONF_FILE
+for instance in `seq 1 $G_ADML_INSTANCES`
+do
+  offset=$((testcase_per_adml_instance * (instance-1)))
+  ini=$((offset + 1))
+  fin=$((offset + testcase_per_adml_instance))
+  echo "$instance $ini $fin" >> $N_TESTCASES_PROGRAM_LAYOUT__ST_CONF_FILE
+done
+
 echo
 if [ $time_covered -lt 300 ]
 then
@@ -130,28 +166,37 @@ while [ -z "$minutes" ]; do read minutes; done
 seconds=$((minutes*60))
 repeats=$(ceil $seconds $time_covered)
 echo $repeats > $CYCLE_REPEATS__ST_CONF_FILE
-[ $repeats -gt 0 ] && echo "Configured $repeats cycle repeats ($repeats x $time_covered seconds = $seconds seconds (desired $minutes minutes)"
+[ $repeats -gt 0 ] && echo "Configured $repeats cycle repeats ($repeats x $time_covered seconds ~ $seconds seconds (desired $minutes minutes)"
 echo
 echo "System test configuration completed."
 echo
 echo "Ready to clone/start the ADML instances: press ENTER to continue, CTRL+C to abort ..."
 read dummy
-[ ! -d realms ] && _exit "Missing realms configuration (expecting '$PWD/realms' directory). Try with 'realms.example' and see README inside it !"
 
 # Update services.xml regarding the number of client connections:
-cp realms/services.msk realms/services.xml
-sed -i 's/__CLIENT_CONNECTIONS__/'$G_ADML_CONNECTIONS'/g' realms/services.xml
+cd realms
+cp services.msk services.xml
+sed -i 's/__CLIENT_CONNECTIONS__/'$G_ADML_CONNECTIONS'/g' services.xml
+cd - >/dev/null
+
 
-rm -rf ADMLS
 for instance in `seq 1 $G_ADML_INSTANCES`
 do
+  echo "Creating ADMLS/$instance ..."
   mkdir -p ADMLS/$instance
   cd ADMLS/$instance
   # Create resources:
-  ln -s ../../ADML-launcher
-  ln -s ../../operation.sh
-  ln -s ../../realms/services.xml
-  for cer in `ls ../../realms/cer*xml`; do ln -s $cer; done
+  ln -s ../../.operation-one.sh operation.sh
+  ln -s ../../pre-start.sh
+  cp ../../.run-one.sh run.sh
+  sed -i 's/^EXE=.*/EXE=ADML-'$instance'/' run.sh
+  ln -s ../../ADML-launcher ADML-$instance
+  for xml in `ls ../../realms/*xml`; do ln -s $xml; done
   cd - >/dev/null
 done
 
+echo
+echo "Now you can run all the instances deployed: ./run.sh"
+echo
+echo "Done!"
+
diff --git a/example/diameter/launcher/deployments/st-client/operation_all.sh b/example/diameter/launcher/deployments/st-client/operation_all.sh
new file mode 100755 (executable)
index 0000000..616814d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+cd `dirname $0`
+if [ ! -d "ADMLS" ]
+then
+  echo
+  echo "Run './configure.sh' first !"
+  echo
+  exit 1
+fi
+
+for op in `ls ADMLS/*/operation.sh`
+do
+  cd `dirname $op`
+  ./operation.sh $@
+  cd - >/dev/null
+done
+
diff --git a/example/diameter/launcher/deployments/st-client/pre-start.sh b/example/diameter/launcher/deployments/st-client/pre-start.sh
new file mode 100755 (executable)
index 0000000..8b97a22
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "Launching ADML instance `pwd` ..."
diff --git a/example/diameter/launcher/deployments/st-client/program.sh b/example/diameter/launcher/deployments/st-client/program.sh
new file mode 100755 (executable)
index 0000000..fccfe07
--- /dev/null
@@ -0,0 +1,112 @@
+#!/bin/bash
+
+#############
+# VARIABLES #
+#############
+ADML_INSTANCES=`cat .st_conf_adml_instances 2>/dev/null`
+RATE_PER_INSTANCE=`cat .st_conf_rate_per_instance 2>/dev/null`
+DESIRED_RATE=`cat .st_conf_desired_rate 2>/dev/null`
+REPEATS=`cat .st_conf_cycle_repeats 2>/dev/null`
+PROGRAM_LAYOUT_FILE=.st_conf_n_testcases_program_layout
+
+#############
+# FUNCTIONS #
+#############
+_exit() {
+  echo
+  echo $1
+  echo
+  exit 1
+}
+
+usage() {
+  echo "Usage: $0 <test stuff directory> [-s]"
+  echo
+  echo "       test stuff directory: contains msk files, specially a testcase description with xml files referenced."
+  echo "                             Those files, adding .msk extension, shall exists in the same directory. For example:"
+  echo "                                $0 st_examples/DynamicQualification"
+  echo
+  echo "       -s: start testing just after programming, using desired rate: $DESIRED_RATE test cases per second."
+  [ $ADML_INSTANCES -gt 1 ] && echo "           In your case, with $ADML_INSTANCES, a rate of $RATE_PER_INSTANCE ttps will be send per instance"
+  echo
+  _exit
+}
+
+children () {
+  bash_pid=$$
+  children=`ps -eo ppid | grep -w $bash_pid`
+  echo $children | wc -w
+}
+
+
+#############
+# EXECUTION #
+#############
+miss_conf=
+[ ! -f .st_conf_adml_instances ] && miss_conf=yes
+[ ! -f .st_conf_n_testcases_program_layout ] && miss_conf=yes
+[ ! -f .st_conf_cycle_repeats ] && miss_conf=yes
+[ ! -f .st_conf_rate_per_instance ] && miss_conf=yes
+[ ! -f .st_conf_desired_rate ] && miss_conf=yes
+[ -n "$miss_conf" ] && _exit "You must run './configure.sh' script firtly !!"
+
+echo
+[ -z "$1" ] && usage
+TESTCASE_DIR=$1
+AUTOSTART=$2
+
+[ ! -d $TESTCASE_DIR ] && _exit "Cannot found the test directory '$TESTCASE_DIR' !!"
+TESTCASE=( `ls $TESTCASE_DIR/testcase*msk 2>/dev/null` )
+TESTCASE_FILES=${#TESTCASE[@]}
+[ $TESTCASE_FILES -ne 1 ] && _exit "One and only one 'testcase*msk' file must be present !!"
+
+children_before=$(children)
+while read -r line
+do
+  instance=$(echo $line | awk '{ print $1 }')
+  ini_seq=$(echo $line | awk '{ print $2 }')
+  fin_seq=$(echo $line | awk '{ print $3 }')
+  ADML_DIR=`readlink -f ADMLS/$instance`
+  ./clone.sh $ADML_DIR $TESTCASE $ini_seq $fin_seq 1 &
+
+done < $PROGRAM_LAYOUT_FILE
+
+# Wait background jobs to finish:
+sleep 1
+echo "Waiting for clone completion ..."
+while true
+do
+  [ $(children) -eq $children_before ] && break
+  sleep 1
+done
+
+echo "Configuring repeat cycles ..."
+./operation.sh "test|repeats|$REPEATS"
+
+start_testing=
+if [ "$AUTOSTART" = "-s" ]
+then
+  start_testing=yes
+else
+  echo "Input desired rate (test cases per second) to start testing [0: nothing done]:"
+  read desired_rate
+  if [ "$desired_rate" != "" ]
+  then
+    rate_per_instance=$((desired_rate/$ADML_INSTANCES))
+    [ $rate_per_instance -lt 1 ] && rate_per_instance=1
+    ./operation.sh "test|ttps|$rate_per_instance"
+  fi
+fi
+
+if [ -n "$start_testing" ]
+then
+  echo
+  echo "Start testing to achieve desired rate of $DESIRED_RATE test cases per second ..."
+  echo
+  ./operation.sh "test|ttps|$RATE_PER_INSTANCE"
+fi
+
+echo
+echo "Done !"
+echo
+
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/README b/example/diameter/launcher/deployments/st-client/realms_example/README
new file mode 100644 (file)
index 0000000..1ddd49b
--- /dev/null
@@ -0,0 +1,13 @@
+
+Content
+=======
+
+README:             this file.
+services.msk:       services with some possible parseable variables:
+                    __CLIENT_CONNECTIONS__: Number of client conections from a specific realm to the
+                                            corresponding diameter entity.
+cerGx.xml:          CER file for Gx referenced in the services specification.
+cerRx.xml:          CER file for Rx referenced in the services specification.
+dictionaryBase.xml: Diameter base dictionary used in the services specification.
+dictionaryGx.xml:   Gx dictionary used in the services specification.
+dictionaryRx.xml:   Rx dictionary used in the services specification.
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/cerGx.xml b/example/diameter/launcher/deployments/st-client/realms_example/cerGx.xml
new file mode 100644 (file)
index 0000000..b5caf20
--- /dev/null
@@ -0,0 +1,10 @@
+<message version="1" name="CER" application-id="0" hop-by-hop-id="722470" end-by-end-id="539510">
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Host-IP-Address" data="1|192.168.14.42"/>
+   <avp name="Vendor-Id" data="193"/>
+   <avp name="Product-Name" data="ggsnNode"/>
+   <avp name="Firmware-Revision" data="1"/>
+</message>
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/cerRx.xml b/example/diameter/launcher/deployments/st-client/realms_example/cerRx.xml
new file mode 100644 (file)
index 0000000..e79ce98
--- /dev/null
@@ -0,0 +1,10 @@
+<message version="1" name="CER" application-id="0" hop-by-hop-id="956775" end-by-end-id="968247">
+   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Host-IP-Address" data="1|192.168.14.42"/>
+   <avp name="Vendor-Id" data="193"/>
+   <avp name="Product-Name" data="afNode"/>
+   <avp name="Firmware-Revision" data="1"/>
+</message>
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/dictionaryBase.xml b/example/diameter/launcher/deployments/st-client/realms_example/dictionaryBase.xml
new file mode 120000 (symlink)
index 0000000..3b80f68
--- /dev/null
@@ -0,0 +1 @@
+../../../resources/stack_examples/0.xml
\ No newline at end of file
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/dictionaryGx.xml b/example/diameter/launcher/deployments/st-client/realms_example/dictionaryGx.xml
new file mode 120000 (symlink)
index 0000000..4221ca3
--- /dev/null
@@ -0,0 +1 @@
+../../../resources/stack_examples/16777238.xml
\ No newline at end of file
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/dictionaryRx.xml b/example/diameter/launcher/deployments/st-client/realms_example/dictionaryRx.xml
new file mode 120000 (symlink)
index 0000000..0706e2b
--- /dev/null
@@ -0,0 +1 @@
+../../../resources/stack_examples/16777236.xml
\ No newline at end of file
diff --git a/example/diameter/launcher/deployments/st-client/realms_example/services.msk b/example/diameter/launcher/deployments/st-client/realms_example/services.msk
new file mode 100644 (file)
index 0000000..dc06824
--- /dev/null
@@ -0,0 +1,11 @@
+<services>
+  <!-- Stacks -->
+  <stack id="16777238" dictionary="dictionaryGx.xml"/>
+  <stack id="16777236" dictionary="dictionaryRx.xml"/>
+  <stack id="0" dictionary="dictionaryBase.xml"/>
+
+  <!-- Nodes -->
+  <node originRealm="afNodeHostRealm.com" applicationId="16777236" entity="localhost:3868" cer="cerRx.xml" entityServerSessions="__CLIENT_CONNECTIONS__"/>
+  <node originRealm="ggsnNodeHostRealm.com" applicationId="16777238" entity="localhost:3869" cer="cerGx.xml" entityServerSessions="__CLIENT_CONNECTIONS__"/>
+</services>
+
diff --git a/example/diameter/launcher/deployments/st-client/run.sh b/example/diameter/launcher/deployments/st-client/run.sh
deleted file mode 100755 (executable)
index 27aa362..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-EXE_BN=`basename $PWD`
-STARTED=`pgrep $EXE_BN 2>/dev/null`
-[ $? -eq 0 ] && { echo "Already started!"; echo "$STARTED" ; exit 1 ; }
-0> launcher.trace
-rm -f counters/* test-reports/*
-# Execution line:
-nohup ./ADML-client --cntDir counters --tmDir test-reports --disableLogs --services $SERVICES > stdout &
-echo $! > .pid
-
index 8f2cd56..e9014ee 100755 (executable)
@@ -1,6 +1,27 @@
 #!/bin/bash
 cd `dirname $0`
+if [ ! -d "ADMLS" ]
+then
+  echo
+  echo "Run './configure.sh' first !"
+  echo
+  exit 1
+fi
+
 for run in `ls ADMLS/*/run.sh`
 do
-  $run
+  cd `dirname $run`
+  ./run.sh
+  sleep 0.1
+  cd - >/dev/null
 done
+
+sleep 1
+echo "Now you could program the tests by mean script 'program.sh'. For example:"
+echo "   ./program.sh st_examples/DynamicQualification"
+echo
+echo "To stop the processes, you could execute:"
+echo "   pgrep ADML-[0-9] | xargs kill"
+echo
+echo "Done!"
+
diff --git a/example/diameter/launcher/deployments/st-client/st_examples b/example/diameter/launcher/deployments/st-client/st_examples
new file mode 120000 (symlink)
index 0000000..58e802a
--- /dev/null
@@ -0,0 +1 @@
+../../resources/st_examples
\ No newline at end of file
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/01.CER_Gx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/01.CER_Gx.xml
deleted file mode 100644 (file)
index b5caf20..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<message version="1" name="CER" application-id="0" hop-by-hop-id="722470" end-by-end-id="539510">
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="Host-IP-Address" data="1|192.168.14.42"/>
-   <avp name="Vendor-Id" data="193"/>
-   <avp name="Product-Name" data="ggsnNode"/>
-   <avp name="Firmware-Revision" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/02.CEA_Gx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/02.CEA_Gx.xml
deleted file mode 100644 (file)
index 06ce804..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<message version="1" name="CEA" application-id="0" hop-by-hop-id="722470" end-by-end-id="539510">
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="Host-IP-Address" data="1|192.168.12.40"/>
-   <avp name="Vendor-Id" data="193"/>
-   <avp name="Product-Name" data="SAPC"/>
-   <avp name="Supported-Vendor-Id" data="5535"/>
-   <avp name="Supported-Vendor-Id" data="10415"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Vendor-Specific-Application-Id">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Auth-Application-Id" data="16777238"/>
-   </avp>
-   <avp name="Vendor-Specific-Application-Id">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Auth-Application-Id" data="16777236"/>
-   </avp>
-   <avp name="Firmware-Revision" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/03.CER_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/03.CER_Rx.xml
deleted file mode 100644 (file)
index e79ce98..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<message version="1" name="CER" application-id="0" hop-by-hop-id="956775" end-by-end-id="968247">
-   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="Host-IP-Address" data="1|192.168.14.42"/>
-   <avp name="Vendor-Id" data="193"/>
-   <avp name="Product-Name" data="afNode"/>
-   <avp name="Firmware-Revision" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/04.CEA_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/04.CEA_Rx.xml
deleted file mode 100644 (file)
index 7b9dd52..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<message version="1" name="CEA" application-id="0" hop-by-hop-id="956775" end-by-end-id="968247">
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="Host-IP-Address" data="1|192.168.12.40"/>
-   <avp name="Vendor-Id" data="193"/>
-   <avp name="Product-Name" data="SAPC"/>
-   <avp name="Supported-Vendor-Id" data="5535"/>
-   <avp name="Supported-Vendor-Id" data="10415"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Vendor-Specific-Application-Id">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Auth-Application-Id" data="16777238"/>
-   </avp>
-   <avp name="Vendor-Specific-Application-Id">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Auth-Application-Id" data="16777236"/>
-   </avp>
-   <avp name="Firmware-Revision" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/05.CCR-I.xml b/example/diameter/launcher/deployments/test_examples/RxGx/05.CCR-I.xml
deleted file mode 100644 (file)
index 96a031a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="529097" end-by-end-id="419342">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Destination-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Destination-Realm" data="operatorRealm.com"/>
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="CC-Request-Number" data="0"/>
-   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
-   <avp name="Framed-IP-Address" hex-data="8132bb64"/>
-   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="34600000001"/>
-   </avp>
-   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
-   <avp name="Called-Station-Id" data="defaultApnId"/>
-   <avp name="QoS-Negotiation" data="1" alias="QoS_NEGOTIATION_SUPPORTED"/>
-   <avp name="QoS-Upgrade" data="1" alias="QoS_UPGRADE_SUPPORTED"/>
-   <avp name="Supported-Features" flags="192">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Feature-List-ID" data="1"/>
-      <avp name="Feature-List" data="11"/>
-   </avp>
-   <avp name="IP-CAN-Type" data="5" alias="3GPP-EPS"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/06.CCA-I.xml b/example/diameter/launcher/deployments/test_examples/RxGx/06.CCA-I.xml
deleted file mode 100644 (file)
index 885b867..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<message version="1" name="CC-Answer" application-id="16777238" hop-by-hop-id="529097" end-by-end-id="419342">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="CC-Request-Number" data="0"/>
-   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
-   <avp name="Supported-Features" flags="128">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Feature-List-ID" data="1"/>
-      <avp name="Feature-List" data="11"/>
-   </avp>
-   <avp name="Bearer-Control-Mode" data="0" alias="UE_ONLY"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/07.AAR-flows.xml b/example/diameter/launcher/deployments/test_examples/RxGx/07.AAR-flows.xml
deleted file mode 100644 (file)
index 3e11df3..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<message version="1" name="AA-Request" application-id="16777236" hop-by-hop-id="187793" end-by-end-id="827675">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;1;690434"/>
-   <avp name="Destination-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Destination-Realm" data="operatorRealm.com"/>
-   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="Framed-IP-Address" hex-data="8132bb64"/>
-   <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
-   <avp name="Media-Component-Description">
-      <avp name="Media-Component-Number" data="1"/>
-      <avp name="Media-Sub-Component">
-         <avp name="Flow-Number" data="1"/>
-         <avp name="Flow-Description" data="permit in 17 from 129.50.187.100 2234 to 10.95.130.50 2234"/>
-         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 129.50.187.100 2234"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
-      </avp>
-      <avp name="Media-Sub-Component">
-         <avp name="Flow-Number" data="2"/>
-         <avp name="Flow-Description" data="permit in 17 from 129.50.187.100 2235 to 10.95.130.50 2235"/>
-         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 129.50.187.100 2235"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Flow-Usage" data="1" alias="RTCP"/>
-      </avp>
-      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
-      <avp name="Media-Type" data="0" alias="OTHER"/>
-      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-      <avp name="Flow-Status" data="2" alias="ENABLED"/>
-      <avp name="Reservation-Priority" data="3" alias="PRIORITY-THREE"/>
-      <avp name="RR-Bandwidth" data="64000"/>
-      <avp name="RS-Bandwidth" data="64000"/>
-   </avp>
-   <avp name="Media-Component-Description">
-      <avp name="Media-Component-Number" data="2"/>
-      <avp name="Media-Sub-Component">
-         <avp name="Flow-Number" data="1"/>
-         <avp name="Flow-Description" data="permit in 17 from 129.50.187.100 2236 to 10.95.130.50 2236"/>
-         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 129.50.187.100 2236"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
-      </avp>
-      <avp name="Media-Sub-Component">
-         <avp name="Flow-Number" data="2"/>
-         <avp name="Flow-Description" data="permit in 17 from 129.50.187.100 2237 to 10.95.130.50 2237"/>
-         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 129.50.187.100 2237"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Flow-Usage" data="1" alias="RTCP"/>
-      </avp>
-      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
-      <avp name="Media-Type" data="1" alias="VIDEO"/>
-      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-      <avp name="Flow-Status" data="2" alias="ENABLED"/>
-      <avp name="Reservation-Priority" data="4" alias="PRIORITY-FOUR"/>
-      <avp name="RR-Bandwidth" data="64000"/>
-      <avp name="RS-Bandwidth" data="64000"/>
-   </avp>
-   <avp name="AF-Charging-Identifier" hex-data="41462d4368617267696e674964656e746966696572"/>
-   <avp name="SIP-Forking-Indication" data="0" alias="SINGLE_DIALOGUE"/>
-   <avp name="Supported-Features" flags="192">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Feature-List-ID" data="1"/>
-      <avp name="Feature-List" data="19"/>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/08.AAA-flows.xml b/example/diameter/launcher/deployments/test_examples/RxGx/08.AAA-flows.xml
deleted file mode 100644 (file)
index 1392535..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<message version="1" name="AA-Answer" application-id="16777236" hop-by-hop-id="187793" end-by-end-id="827675">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;1;690434"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="Supported-Features" flags="128">
-      <avp name="Vendor-Id" data="10415"/>
-      <avp name="Feature-List-ID" data="1"/>
-      <avp name="Feature-List" data="19"/>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/09.RAR-install.xml b/example/diameter/launcher/deployments/test_examples/RxGx/09.RAR-install.xml
deleted file mode 100644 (file)
index 5c1d643..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<message version="1" name="RA-Request" p-bit="yes" application-id="16777238" hop-by-hop-id="771961614" end-by-end-id="771961614">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Destination-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Re-Auth-Request-Type" data="0" alias="AUTHORIZE_ONLY"/>
-   <avp name="Destination-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="Charging-Rule-Install">
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c317c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="0" alias="DURATION"/>
-         <avp name="Offline" data="1" alias="ENABLE_OFFLINE"/>
-         <avp name="Online" data="0" alias="DISABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="Guaranteed-Bitrate-DL" data="32000"/>
-            <avp name="Guaranteed-Bitrate-UL" data="32000"/>
-            <avp name="QoS-Class-Identifier" data="1" alias="QCI_1"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="3"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 129.50.187.100 2234"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 129.50.187.100 2234"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c327c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="0" alias="DURATION"/>
-         <avp name="Offline" data="1" alias="ENABLE_OFFLINE"/>
-         <avp name="Online" data="0" alias="DISABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="Guaranteed-Bitrate-DL" data="1600"/>
-            <avp name="Guaranteed-Bitrate-UL" data="1600"/>
-            <avp name="QoS-Class-Identifier" data="1" alias="QCI_1"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="3"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 129.50.187.100 2235"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 129.50.187.100 2235"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c317c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="2" alias="DURATION_VOLUME"/>
-         <avp name="Offline" data="0" alias="DISABLE_OFFLINE"/>
-         <avp name="Online" data="1" alias="ENABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="Guaranteed-Bitrate-DL" data="208000"/>
-            <avp name="Guaranteed-Bitrate-UL" data="208000"/>
-            <avp name="QoS-Class-Identifier" data="2" alias="QCI_2"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="4"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 129.50.187.100 2236"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 129.50.187.100 2236"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c327c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="2" alias="DURATION_VOLUME"/>
-         <avp name="Offline" data="0" alias="DISABLE_OFFLINE"/>
-         <avp name="Online" data="1" alias="ENABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="Guaranteed-Bitrate-DL" data="10400"/>
-            <avp name="Guaranteed-Bitrate-UL" data="10400"/>
-            <avp name="QoS-Class-Identifier" data="2" alias="QCI_2"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="4"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 129.50.187.100 2237"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 129.50.187.100 2237"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/10.RAA-install.xml b/example/diameter/launcher/deployments/test_examples/RxGx/10.RAA-install.xml
deleted file mode 100644 (file)
index 8c7f5b5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="771961614" end-by-end-id="771961614">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/11.CCR-U.xml b/example/diameter/launcher/deployments/test_examples/RxGx/11.CCR-U.xml
deleted file mode 100644 (file)
index 29aad50..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="771961615" end-by-end-id="771961615">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Destination-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Destination-Realm" data="operatorRealm.com"/>
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="CC-Request-Number" data="1"/>
-   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
-   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="34600000001"/>
-   </avp>
-   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
-   <avp name="IP-CAN-Type" data="6" alias="Non-3GPP-EPS"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/12.CCA-U.xml b/example/diameter/launcher/deployments/test_examples/RxGx/12.CCA-U.xml
deleted file mode 100644 (file)
index 27f8e3b..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<message version="1" name="CC-Answer" application-id="16777238" hop-by-hop-id="771961615" end-by-end-id="771961615">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="CC-Request-Number" data="1"/>
-   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
-   <avp name="Charging-Rule-Install">
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c317c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="0" alias="DURATION"/>
-         <avp name="Offline" data="1" alias="ENABLE_OFFLINE"/>
-         <avp name="Online" data="0" alias="DISABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="QoS-Class-Identifier" data="5" alias="QCI_5"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="5"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 129.50.187.100 2234"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 129.50.187.100 2234"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c327c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="0" alias="DURATION"/>
-         <avp name="Offline" data="1" alias="ENABLE_OFFLINE"/>
-         <avp name="Online" data="0" alias="DISABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="QoS-Class-Identifier" data="5" alias="QCI_5"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="5"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 129.50.187.100 2235"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 129.50.187.100 2235"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c317c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="2" alias="DURATION_VOLUME"/>
-         <avp name="Offline" data="0" alias="DISABLE_OFFLINE"/>
-         <avp name="Online" data="1" alias="ENABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="QoS-Class-Identifier" data="5" alias="QCI_5"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="5"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 129.50.187.100 2236"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 129.50.187.100 2236"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-      <avp name="Charging-Rule-Definition">
-         <avp name="Rating-Group" data="4"/>
-         <avp name="Flow-Status" data="2" alias="ENABLED"/>
-         <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c327c303030303030323235363534343736303436383530333138"/>
-         <avp name="Metering-Method" data="2" alias="DURATION_VOLUME"/>
-         <avp name="Offline" data="0" alias="DISABLE_OFFLINE"/>
-         <avp name="Online" data="1" alias="ENABLE_ONLINE"/>
-         <avp name="Precedence" data="0"/>
-         <avp name="Reporting-Level" data="1" alias="RATING_GROUP_LEVEL"/>
-         <avp name="QoS-Information">
-            <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
-            <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
-            <avp name="QoS-Class-Identifier" data="5" alias="QCI_5"/>
-            <avp name="Allocation-Retention-Priority">
-               <avp name="Priority-Level" data="5"/>
-            </avp>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 129.50.187.100 2237"/>
-            <avp name="Flow-Direction" data="2" alias="UPLINK"/>
-         </avp>
-         <avp name="Flow-Information">
-            <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 129.50.187.100 2237"/>
-            <avp name="Flow-Direction" data="1" alias="DOWNLINK"/>
-         </avp>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/13.STR_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/13.STR_Rx.xml
deleted file mode 100644 (file)
index 0f823dc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<message version="1" name="ST-Request" application-id="16777236" hop-by-hop-id="187793" end-by-end-id="827675">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;1;690434"/>
-   <avp name="Destination-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Destination-Realm" data="operatorRealm.com"/>
-   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/14.STA_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/14.STA_Rx.xml
deleted file mode 100644 (file)
index 24038dc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<message version="1" name="ST-Answer" application-id="16777236" hop-by-hop-id="187793" end-by-end-id="827675">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;1;690434"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/15.RAR-remove.xml b/example/diameter/launcher/deployments/test_examples/RxGx/15.RAR-remove.xml
deleted file mode 100644 (file)
index 3840a18..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<message version="1" name="RA-Request" p-bit="yes" application-id="16777238" hop-by-hop-id="771961615" end-by-end-id="771961615">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Destination-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Re-Auth-Request-Type" data="0" alias="AUTHORIZE_ONLY"/>
-   <avp name="Destination-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="Charging-Rule-Remove">
-      <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c317c303030303030323235363534343736303436383530333138"/>
-      <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c317c327c303030303030323235363534343736303436383530333138"/>
-      <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c317c303030303030323235363534343736303436383530333138"/>
-      <avp name="Charging-Rule-Name" hex-data="4d4d54656c7c327c327c303030303030323235363534343736303436383530333138"/>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/16.RAA-remove.xml b/example/diameter/launcher/deployments/test_examples/RxGx/16.RAA-remove.xml
deleted file mode 100644 (file)
index 53a2386..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="771961615" end-by-end-id="771961615">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/17.CCR-T.xml b/example/diameter/launcher/deployments/test_examples/RxGx/17.CCR-T.xml
deleted file mode 100644 (file)
index 84a790a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="771961616" end-by-end-id="771961616">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Destination-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Destination-Realm" data="operatorRealm.com"/>
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-State-Id" data="1"/>
-   <avp name="CC-Request-Number" data="2"/>
-   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
-   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="34600000001"/>
-   </avp>
-   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
-   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/18.CCA-T.xml b/example/diameter/launcher/deployments/test_examples/RxGx/18.CCA-T.xml
deleted file mode 100644 (file)
index f6a6808..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<message version="1" name="CC-Answer" application-id="16777238" hop-by-hop-id="771961616" end-by-end-id="771961616">
-   <avp name="Session-Id" data="tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"/>
-   <avp name="Auth-Application-Id" data="16777238"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-State-Id" data="1441363963"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-   <avp name="CC-Request-Number" data="2"/>
-   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/19.DPR_Gx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/19.DPR_Gx.xml
deleted file mode 100644 (file)
index b277506..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<message version="1" name="DPR" application-id="0" hop-by-hop-id="118544" end-by-end-id="901132">
-   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
-   <avp name="Disconnect-Cause" data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/20.DPA_Gx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/20.DPA_Gx.xml
deleted file mode 100644 (file)
index f4a2435..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<message version="1" name="DPA" application-id="0" hop-by-hop-id="118544" end-by-end-id="901132">
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/21.DPR_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/21.DPR_Rx.xml
deleted file mode 100644 (file)
index 17896d0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<message version="1" name="DPR" application-id="0" hop-by-hop-id="640659" end-by-end-id="633282">
-   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
-   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
-   <avp name="Disconnect-Cause" data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/22.DPA_Rx.xml b/example/diameter/launcher/deployments/test_examples/RxGx/22.DPA_Rx.xml
deleted file mode 100644 (file)
index 76fcc1c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<message version="1" name="DPA" application-id="0" hop-by-hop-id="640659" end-by-end-id="633282">
-   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
-   <avp name="Origin-Host" data="sapcOwnHostId.operatorRealm.com"/>
-   <avp name="Origin-Realm" data="operatorRealm.com"/>
-</message>
diff --git a/example/diameter/launcher/deployments/test_examples/RxGx/simple.sh b/example/diameter/launcher/deployments/test_examples/RxGx/simple.sh
deleted file mode 100755 (executable)
index 765401c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-pkill ADML
-sleep 1
-./run.sh
-sleep 1
-
-SCR_DIR=`dirname $0`
-./operation.sh "test|report|yes"
-
-./operation.sh "test|1|timeout|5000"
-./operation.sh "test|1|sendxml2e|$SCR_DIR/05.CCR-I.xml"
-./operation.sh "test|1|waitfe|272|0|2001|tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"
-./operation.sh "test|1|sendxml2e|$SCR_DIR/07.AAR-flows.xml"
-./operation.sh "test|1|waitfe|265|0|2001|tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;1;690434"
-./operation.sh "test|1|waitfe|258|1||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"
-./operation.sh "test|1|sendxml2e|$SCR_DIR/10.RAA-install.xml|6"
-./operation.sh "test|1|sendxml2e|$SCR_DIR/17.CCR-T.xml"
-./operation.sh "test|1|waitfe|272|0|2001|tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571|H1"
-./operation.sh "test|1|waitfe|258|1||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;1;629571"
-./operation.sh "test|1|sendxml2e|$SCR_DIR/16.RAA-remove.xml|10"
-
-#./operation.sh "test|ttps|1"
-
diff --git a/example/diameter/launcher/deployments/test_examples/checkings.sh b/example/diameter/launcher/deployments/test_examples/checkings.sh
deleted file mode 100755 (executable)
index 11d0c70..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-pkill ADML
-sleep 1
-./run.sh
-sleep 1
-
-./operation.sh "test|1|timeout|5000"
-./operation.sh "test|1|delay|5000"
-./operation.sh "test|1|waitfe|258|1"
-./operation.sh "test|1|waitfc|258|1"
-./operation.sh "test|1|sendxml2e|aar.xml|7"
-
-#for id in `seq 1 2`
-#do
-#  ./operation.sh "test|$id|timeout|5000"
-#  ./operation.sh "test|$id|delay|5000"
-#  ./operation.sh "test|$id|sendxml2e|aar${id}.xml"
-##  ./operation.sh "test|$id|waitfe-answer|2"
-##  ./operation.sh "test|$id|waitfe|258|1||Session|hbhx"
-##  ./operation.sh "test|$id|waitfe|258|1|rcxxx|Session"
-#done
-
-#./operation.sh "test|ttps|40"
-
diff --git a/example/diameter/launcher/deployments/test_examples/cycle.sh b/example/diameter/launcher/deployments/test_examples/cycle.sh
deleted file mode 100755 (executable)
index a16a62e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-# Checking the correct cycle repeat and reports appending
-program () {
-
-  if [ "$2" = "ok" ]
-  then
-    ./operation.sh "test|$1|timeout|5000"
-    ./operation.sh "test|$1|delay|2000"
-    ./operation.sh "test|$1|delay|2000"
-  else
-    ./operation.sh "test|$1|timeout|5000"
-    ./operation.sh "test|$1|delay|2000"
-    ./operation.sh "test|$1|delay|4000"
-  fi
-}
-
-pkill ADML
-sleep 1
-./run.sh
-sleep 1
-./operation.sh "test|repeat|yes"
-./operation.sh "test|report|yes"
-
-COVERED_SECONDS=1
-for id in `seq 0 $((COVERED_SECONDS/2))`
-do
-  program $((2*id + 1)) ok
-  program $((2*id + 2)) nok
-done
-
-echo "Press ENTER to continue, CTRL+C to abort ..."
-read dummy
-./operation.sh "test|ttps|1"
-
-while true
-do
-  sleep 1
-  ./operation.sh "test|look"
-done
-
diff --git a/example/diameter/launcher/deployments/test_examples/endsOk.sh b/example/diameter/launcher/deployments/test_examples/endsOk.sh
deleted file mode 100755 (executable)
index b355ea1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-pkill ADML
-sleep 1
-./run.sh
-sleep 1
-./operation.sh "test|report|yes"
-./operation.sh "test|1|timeout|5000"
-./operation.sh "test|1|delay|2000"
-./operation.sh "test|1|delay|2000"
-# Last timeout ignored:
-./operation.sh "test|1|timeout|3000"
-
-echo "Press ENTER to continue, CTRL+C to abort ..."
-read dummy
-./operation.sh "test|ttps|1"
-
-while true
-do
-  sleep 1
-  ./operation.sh "test|look|1"
-done
-
index 815a5a7..099aa7f 100755 (executable)
@@ -28,7 +28,7 @@ sig_handler() {
 }
 
 usage() {
-  echo "Usage: $0 <ADML directory> <testcase variable file> <initial sequence> <final sequence> [number of groups]"
+  echo "Usage: $0 <ADML directory> <testcase variable file> <initial sequence> <final sequence> [number of groups] [population]"
   echo
   echo "          ADML directory:         path to the ADML directory where 'operation.sh' script is used to load the test cases."
   echo "          testcase variable file: path to the testcase file with parseable variables, for example '<directory>/testcase.txt.msk'."
@@ -43,13 +43,22 @@ usage() {
   echo "                                    __SRX1_SUFFIX__: \""
   echo "                                    __SGX2_SUFFIX__: 2<8-digit sequence>"
   echo "                                    __SRX2_SUFFIX__: \""
+  echo "                                  Edit the variables section to add more special values if you need them."
   echo
   echo "          initial sequence:       initial sequence number to parse over variables."
   echo "          final sequence:         final sequence number to parse over variables."
   echo "          number of groups:       number of background group jobs to clone the provided sequence range."
-  echo "                                  By default, it will be the number of items divided by 25, with a maximum of $MAX_NUMBER_GROUPS."
-  echo
-  echo
+  echo "                                  By default (or if you provide \"\"), it will be the number of items divided by 25, with a maximum"
+  echo "                                  of $MAX_NUMBER_GROUPS."
+  echo "          population:             Optionally, a population file (basename) can be provided. It must exist on the same directory"
+  echo "                                  than other stuff (testcase, xml files). The behaviour will be the accumulation of every parsing"
+  echo "                                  operation during clone procedure regarding the templated content of the population file. The"
+  echo "                                  accumulated content will be dump over a new file created together with cloned <population> and"
+  echo "                                  named with the extension '.all' (<population>.all). This population file could be useful to"
+  echo "                                  specify database commands related to each sequence (each single testcase), in order to have"
+  echo "                                  the whole population file. This won't include common database elements for the tested scenary,"
+  echo "                                  which shall be provisioned in a separated procedure."
+  echo 
   _exit
 }
 
@@ -78,7 +87,8 @@ clone() {
   local wkdir=$2
   mkdir -p $wkdir
 
-  # Values:
+  ############################################# SPECIAL VARIABLES SECTION #############################################
+  ################################ EDIT THIS SECTION IF YOU NEED NEW SPECIAL VARIABLES ################################
   testid=$sequence
   seq8=$(printf "%08d" $testid)
   msisdn9=6${seq8}
@@ -105,6 +115,8 @@ clone() {
   echo "__SRX2_SUFFIX__=$srx2_suffix" >> $target
   source $target
   #rm $target
+  ######################################### END SPECIAL VARIABLES SECTION #########################################
+
 
   # Parse template files:
   parse_file $sequence $TESTCASE_TEMPLATE $wkdir/testcase.txt.$sequence
@@ -117,6 +129,13 @@ clone() {
   done
   cat $wkdir/testcase.txt.$sequence >> $wkdir/testcase.txt
   rm $wkdir/testcase.txt.$sequence
+
+  # Population:
+  if [ -n "$POPULATION_FILE" ]
+  then
+    parse_file $sequence $POPULATION_FILE $CLONE_WKDIR/${POPULATION}.$sequence
+    cat $CLONE_WKDIR/${POPULATION}.$sequence >> $POPULATION_ALL
+  fi
 }
 
 # $1: group number; $2: initial subrange value; $3: final subrange value
@@ -124,7 +143,7 @@ clone_group() {
   for i in `seq $2 $3`
   do
     clone $i $CLONE_WKDIR/$1
-    #sleep 0.01
+    sleep 0.01
   done
 }
 
@@ -136,9 +155,13 @@ trap sig_handler SIGTERM
 
 ADML_DIR=$1
 TESTCASE_TEMPLATE=`readlink -f $2`
+TESTCASE_TEMPLATE_DIR=`dirname $TESTCASE_TEMPLATE`
 CLONE_SEQ_BEGIN=$3
 CLONE_SEQ_END=$4
 N_GROUPS=$5
+POPULATION=$6
+POPULATION_FILE=$TESTCASE_TEMPLATE_DIR/$POPULATION
+POPULATION_ALL=$TESTCASE_TEMPLATE_DIR/${POPULATION}.all
 
 [ "$4" = "" ] && usage
 
@@ -147,7 +170,14 @@ OPERATION=$ADML_DIR/operation.sh
 [ ! -f $OPERATION ] && _exit "Missing '$OPERATION' file !!"
 [ ! -f $TESTCASE_TEMPLATE ] && _exit "Missing '$TESTCASE_TEMPLATE' testcase template file !!"
 
-TESTCASE_TEMPLATE_DIR=`dirname $TESTCASE_TEMPLATE`
+if [ -n "$POPULATION" ]
+then
+  bn_population=`basename $POPULATION`
+  [ "$bn_population" != "$POPULATION" ] && _exit "Only basename is allowed for population provided !!"
+  [ ! -f $POPULATION_FILE ] && _exit "Missing provided population file '$POPULATION_FILE' !!"
+  0> $POPULATION_ALL
+fi
+
 N_ITEMS=$((CLONE_SEQ_END - CLONE_SEQ_BEGIN + 1))
 if [ -z "$N_GROUPS" ]
 then
@@ -169,6 +199,7 @@ children_before=$(children)
 offset=0
 $OPERATION "test|clear"
 echo "Please be patient, this may take a while ..."
+#echo "Temporary directory: $CLONE_WKDIR"
 for group in `seq 1 $((N_GROUPS+1))`
 do
   n_begin=$((CLONE_SEQ_BEGIN + offset))
@@ -178,7 +209,6 @@ do
   clone_group $group $n_begin $n_end &
   offset=$((group * GROUPS_SIZE))
 done
-children_now=$(children)
 
 # Wait background jobs to finish:
 while true
index 85b3111..1be6fa9 100755 (executable)
@@ -29,7 +29,10 @@ else
   grep -v "^#" $FILE | sed '/^[ \t]*$/d' > sigusr2.in
 fi
 0> sigusr2.out
+kill -0 $PID 2>/dev/null
+[ $? -ne 0 ] && _exit "Operation error: missing process with pid $PID"
 kill -s SIGUSR2 $PID
+
 # Detect EOF and print all except that last line:
 while [ -z "$(tail -1 sigusr2.out | grep ^EOF)" ]; do sleep 0.1; done
 head --lines=-1 `pwd`/sigusr2.out
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/.testcase.txt.st b/example/diameter/launcher/resources/st_examples/DynamicQualification/.testcase.txt.st
new file mode 100644 (file)
index 0000000..f741b4b
--- /dev/null
@@ -0,0 +1,17 @@
+test|1|delay|0
+test|1|delay|0
+test|1|delay|0
+test|1|sendxml2e|15.hex.as.xml
+test|1|waitfe|272|0|||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;|2001
+test|1|sendxml2e|20.hex.as.xml
+test|1|waitfe|265|0|||tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;|2001
+test|1|waitfe|258|1|||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;
+test|1|sendxml2e|28.hex.as.xml|8
+test|1|sendxml2e|30.hex.as.xml
+test|1|waitfe|272|0|||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;|2001
+test|1|sendxml2e|35.hex.as.xml
+test|1|waitfe|275|0|||tc_01_MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;|2001
+test|1|waitfe|258|1|||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;
+test|1|sendxml2e|39.hex.as.xml|14
+test|1|sendxml2e|41.hex.as.xml
+test|1|waitfe|272|0|||tc_01_MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;|2001
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.15.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.15.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..726b1ab
--- /dev/null
@@ -0,0 +1,27 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="15" end-by-end-id="143351">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;100000001"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="0"/>
+   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
+   <avp name="Framed-IP-Address" hex-data="00000001"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34600000001"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="Called-Station-Id" data="defaultApnId"/>
+   <avp name="QoS-Negotiation" data="1" alias="QoS_NEGOTIATION_SUPPORTED"/>
+   <avp name="QoS-Upgrade" data="1" alias="QoS_UPGRADE_SUPPORTED"/>
+   <avp name="Supported-Features" flags="192">
+      <avp name="Vendor-Id" data="10415"/>
+      <avp code="629" vendor-code="10415" flags="192" data="1"/>
+      <avp code="630" vendor-code="10415" flags="192" data="11"/>
+   </avp>
+   <avp name="IP-CAN-Type" data="5" alias="3GPP-EPS"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.20.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.20.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..9d0543d
--- /dev/null
@@ -0,0 +1,68 @@
+<message version="1" name="AA-Request" application-id="16777236" hop-by-hop-id="20" end-by-end-id="163097">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;100000001"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Framed-IP-Address" hex-data="00000001"/>
+   <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+   <avp name="Media-Component-Description">
+      <avp name="Media-Component-Number" data="1"/>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="1"/>
+         <avp name="Flow-Description" data="permit in 17 from 0.0.0.1 2234 to 10.95.130.50 2234"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to 0.0.0.1 2234"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
+      </avp>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="2"/>
+         <avp name="Flow-Description" data="permit in 17 from 0.0.0.1 2235 to 10.95.130.50 2235"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to 0.0.0.1 2235"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="1" alias="RTCP"/>
+      </avp>
+      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+      <avp name="Media-Type" data="0" alias="OTHER"/>
+      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
+      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
+      <avp name="Flow-Status" data="2" alias="ENABLED"/>
+      <avp code="458" vendor-code="13019" flags="192" data="3" alias="PRIORITY-THREE"/>
+      <avp name="RR-Bandwidth" data="64000"/>
+      <avp name="RS-Bandwidth" data="64000"/>
+   </avp>
+   <avp name="Media-Component-Description">
+      <avp name="Media-Component-Number" data="2"/>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="1"/>
+         <avp name="Flow-Description" data="permit in 17 from 0.0.0.1 2236 to 10.95.130.50 2236"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to 0.0.0.1 2236"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
+      </avp>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="2"/>
+         <avp name="Flow-Description" data="permit in 17 from 0.0.0.1 2237 to 10.95.130.50 2237"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to 0.0.0.1 2237"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="1" alias="RTCP"/>
+      </avp>
+      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+      <avp name="Media-Type" data="1" alias="VIDEO"/>
+      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
+      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
+      <avp name="Flow-Status" data="2" alias="ENABLED"/>
+      <avp code="458" vendor-code="13019" flags="192" data="4" alias="PRIORITY-FOUR"/>
+      <avp name="RR-Bandwidth" data="64000"/>
+      <avp name="RS-Bandwidth" data="64000"/>
+   </avp>
+   <avp name="AF-Charging-Identifier" hex-data="41462d4368617267696e674964656e746966696572"/>
+   <avp name="SIP-Forking-Indication" data="0" alias="SINGLE_DIALOGUE"/>
+   <avp name="Supported-Features" flags="192">
+      <avp name="Vendor-Id" data="10415"/>
+      <avp code="629" vendor-code="10415" flags="192" data="1"/>
+      <avp code="630" vendor-code="10415" flags="192" data="19"/>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.28.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.28.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..ec101b0
--- /dev/null
@@ -0,0 +1,7 @@
+<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="3244878460" end-by-end-id="3244878460">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;100000001"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
+   <avp name="Origin-State-Id" data="1"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.30.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.30.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..42e6cd0
--- /dev/null
@@ -0,0 +1,18 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="30" end-by-end-id="3244878461">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;100000001"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="1"/>
+   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34600000001"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="IP-CAN-Type" data="6" alias="Non-3GPP-EPS"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.35.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.35.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..1f54e3a
--- /dev/null
@@ -0,0 +1,10 @@
+<message version="1" name="ST-Request" application-id="16777236" hop-by-hop-id="35" end-by-end-id="163097">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;100000001"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.39.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.39.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..ac0a303
--- /dev/null
@@ -0,0 +1,7 @@
+<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="3244878461" end-by-end-id="3244878461">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;100000001"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
+   <avp name="Origin-State-Id" data="1"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/1.41.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/1.41.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..152ad13
--- /dev/null
@@ -0,0 +1,18 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="41" end-by-end-id="3244878462">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;100000001"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="2"/>
+   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34600000001"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/15.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/15.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..dc7332d
--- /dev/null
@@ -0,0 +1,27 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="15" end-by-end-id="143351">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="0"/>
+   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
+   <avp name="Framed-IP-Address" hex-data="__IPV4HEX__"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34__MSISDN9__"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="Called-Station-Id" data="defaultApnId"/>
+   <avp name="QoS-Negotiation" data="1" alias="QoS_NEGOTIATION_SUPPORTED"/>
+   <avp name="QoS-Upgrade" data="1" alias="QoS_UPGRADE_SUPPORTED"/>
+   <avp name="Supported-Features" flags="192">
+      <avp name="Vendor-Id" data="10415"/>
+      <avp code="629" vendor-code="10415" flags="192" data="1"/>
+      <avp code="630" vendor-code="10415" flags="192" data="11"/>
+   </avp>
+   <avp name="IP-CAN-Type" data="5" alias="3GPP-EPS"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/20.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/20.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..0b4129c
--- /dev/null
@@ -0,0 +1,68 @@
+<message version="1" name="AA-Request" application-id="16777236" hop-by-hop-id="20" end-by-end-id="163097">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;__SRX1_SUFFIX__"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Framed-IP-Address" hex-data="__IPV4HEX__"/>
+   <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+   <avp name="Media-Component-Description">
+      <avp name="Media-Component-Number" data="1"/>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="1"/>
+         <avp name="Flow-Description" data="permit in 17 from __IPV4__ 2234 to 10.95.130.50 2234"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2234 to __IPV4__ 2234"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
+      </avp>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="2"/>
+         <avp name="Flow-Description" data="permit in 17 from __IPV4__ 2235 to 10.95.130.50 2235"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2235 to __IPV4__ 2235"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="1" alias="RTCP"/>
+      </avp>
+      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+      <avp name="Media-Type" data="0" alias="OTHER"/>
+      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
+      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
+      <avp name="Flow-Status" data="2" alias="ENABLED"/>
+      <avp code="458" vendor-code="13019" flags="192" data="3" alias="PRIORITY-THREE"/>
+      <avp name="RR-Bandwidth" data="64000"/>
+      <avp name="RS-Bandwidth" data="64000"/>
+   </avp>
+   <avp name="Media-Component-Description">
+      <avp name="Media-Component-Number" data="2"/>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="1"/>
+         <avp name="Flow-Description" data="permit in 17 from __IPV4__ 2236 to 10.95.130.50 2236"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2236 to __IPV4__ 2236"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="0" alias="NO_INFORMATION"/>
+      </avp>
+      <avp name="Media-Sub-Component">
+         <avp name="Flow-Number" data="2"/>
+         <avp name="Flow-Description" data="permit in 17 from __IPV4__ 2237 to 10.95.130.50 2237"/>
+         <avp name="Flow-Description" data="permit out 17 from 10.95.130.50 2237 to __IPV4__ 2237"/>
+         <avp name="Flow-Status" data="2" alias="ENABLED"/>
+         <avp name="Flow-Usage" data="1" alias="RTCP"/>
+      </avp>
+      <avp name="AF-Application-Identifier" hex-data="75726e25334175726e2d787878253341336770702d736572766963652e696d732e696373692e6d6d74656c"/>
+      <avp name="Media-Type" data="1" alias="VIDEO"/>
+      <avp name="Max-Requested-Bandwidth-UL" data="128000"/>
+      <avp name="Max-Requested-Bandwidth-DL" data="128000"/>
+      <avp name="Flow-Status" data="2" alias="ENABLED"/>
+      <avp code="458" vendor-code="13019" flags="192" data="4" alias="PRIORITY-FOUR"/>
+      <avp name="RR-Bandwidth" data="64000"/>
+      <avp name="RS-Bandwidth" data="64000"/>
+   </avp>
+   <avp name="AF-Charging-Identifier" hex-data="41462d4368617267696e674964656e746966696572"/>
+   <avp name="SIP-Forking-Indication" data="0" alias="SINGLE_DIALOGUE"/>
+   <avp name="Supported-Features" flags="192">
+      <avp name="Vendor-Id" data="10415"/>
+      <avp code="629" vendor-code="10415" flags="192" data="1"/>
+      <avp code="630" vendor-code="10415" flags="192" data="19"/>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/28.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/28.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..92d6388
--- /dev/null
@@ -0,0 +1,7 @@
+<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="3244878460" end-by-end-id="3244878460">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
+   <avp name="Origin-State-Id" data="1"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/30.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/30.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..6e53c57
--- /dev/null
@@ -0,0 +1,18 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="30" end-by-end-id="3244878461">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="1"/>
+   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34__MSISDN9__"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="IP-CAN-Type" data="6" alias="Non-3GPP-EPS"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/35.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/35.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..31a4d35
--- /dev/null
@@ -0,0 +1,10 @@
+<message version="1" name="ST-Request" application-id="16777236" hop-by-hop-id="35" end-by-end-id="163097">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;__SRX1_SUFFIX__"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="afNodeHostname.afNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="afNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/39.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/39.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..b229433
--- /dev/null
@@ -0,0 +1,7 @@
+<message version="1" name="RA-Answer" p-bit="yes" application-id="16777238" hop-by-hop-id="3244878461" end-by-end-id="3244878461">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Result-Code" data="2001" alias="DIAMETER_SUCCESS"/>
+   <avp name="Origin-State-Id" data="1"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/41.hex.as.xml.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/41.hex.as.xml.msk
new file mode 100644 (file)
index 0000000..242a779
--- /dev/null
@@ -0,0 +1,18 @@
+<message version="1" name="CC-Request" application-id="16777238" hop-by-hop-id="41" end-by-end-id="3244878462">
+   <avp name="Session-Id" data="MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__"/>
+   <avp name="Destination-Host" data="ownHostId.operatorRealm.com"/>
+   <avp name="Destination-Realm" data="operatorRealm.com"/>
+   <avp name="Origin-Host" data="ggsnNodeHostname.ggsnNodeHostRealm.com"/>
+   <avp name="Origin-Realm" data="ggsnNodeHostRealm.com"/>
+   <avp name="Auth-Application-Id" data="16777238"/>
+   <avp name="Origin-State-Id" data="1"/>
+   <avp name="CC-Request-Number" data="2"/>
+   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
+   <avp name="Bearer-Usage" data="0" alias="GENERAL"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="34__MSISDN9__"/>
+   </avp>
+   <avp name="RAT-Type" data="1004" alias="EUTRAN"/>
+   <avp name="Termination-Cause" data="1" alias="LOGOUT"/>
+</message>
diff --git a/example/diameter/launcher/resources/st_examples/DynamicQualification/testcase.txt.msk b/example/diameter/launcher/resources/st_examples/DynamicQualification/testcase.txt.msk
new file mode 100644 (file)
index 0000000..b215519
--- /dev/null
@@ -0,0 +1,17 @@
+test|__TESTID__|delay|0
+test|__TESTID__|delay|0
+test|__TESTID__|delay|0
+test|__TESTID__|sendxml2e|15.hex.as.xml
+test|__TESTID__|waitfe|272|0|||MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__|2001
+test|__TESTID__|sendxml2e|20.hex.as.xml
+test|__TESTID__|waitfe|265|0|||MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;__SRX1_SUFFIX__|2001
+test|__TESTID__|waitfe|258|1|||MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__
+test|__TESTID__|sendxml2e|28.hex.as.xml|8
+test|__TESTID__|sendxml2e|30.hex.as.xml
+test|__TESTID__|waitfe|272|0|||MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__|2001
+test|__TESTID__|sendxml2e|35.hex.as.xml
+test|__TESTID__|waitfe|275|0|||MMTel_DynamicQualification;afNodeHostname.afNodeHostRealm.com;2;__SRX1_SUFFIX__|2001
+test|__TESTID__|waitfe|258|1|||MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__
+test|__TESTID__|sendxml2e|39.hex.as.xml|14
+test|__TESTID__|sendxml2e|41.hex.as.xml
+test|__TESTID__|waitfe|272|0|||MMTel_DynamicQualification;ggsnNodeHostname.ggsnNodeHostRealm.com;2;__SGX1_SUFFIX__|2001
diff --git a/example/diameter/launcher/resources/st_examples/README b/example/diameter/launcher/resources/st_examples/README
new file mode 100644 (file)
index 0000000..b421345
--- /dev/null
@@ -0,0 +1,3 @@
+Here there are testcase to clone. For example:
+
+  ../scripts/clone.sh <ADML directory> DynamicQualification/testcase.txt.msk  1 40 1
diff --git a/example/diameter/launcher/resources/stack_examples/0.xml b/example/diameter/launcher/resources/stack_examples/0.xml
new file mode 100644 (file)
index 0000000..c1e23cc
--- /dev/null
@@ -0,0 +1,438 @@
+<dictionary name="diameter_gen_base_rfc3588 | Application-Id: 0">
+   <vendor name="IETF" code="0"/>
+   <avp name="User-Name" code="1" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Class" code="25" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Session-Timeout" code="27" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Proxy-State" code="33" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Session-Id" code="44" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Multi-Session-Id" code="50" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Event-Timestamp" code="55" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <avp name="Acct-Interim-Interval" code="85" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Host-IP-Address" code="257" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Auth-Application-Id" code="258" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Acct-Application-Id" code="259" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Specific-Application-Id" code="260" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory" qual="1*"/>
+         <avprule id="Auth-Application-Id" type="Optional"/>
+         <avprule id="Acct-Application-Id" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Redirect-Host-Usage" code="261" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="DONT_CACHE"/>
+         <label data="1" alias="ALL_SESSION"/>
+         <label data="2" alias="ALL_REALM"/>
+         <label data="3" alias="REALM_AND_APPLICATION"/>
+         <label data="4" alias="ALL_APPLICATION"/>
+         <label data="5" alias="ALL_HOST"/>
+         <label data="6" alias="ALL_USER"/>
+      </single>
+   </avp>
+   <avp name="Redirect-Max-Cache-Time" code="262" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Id" code="263" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Origin-Host" code="264" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Supported-Vendor-Id" code="265" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Id" code="266" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Firmware-Revision" code="267" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Result-Code" code="268" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32">
+         <label data="1001" alias="DIAMETER_MULTI_ROUND_AUTH"/>
+         <label data="2001" alias="DIAMETER_SUCCESS"/>
+         <label data="2002" alias="DIAMETER_LIMITED_SUCCESS"/>
+         <label data="3001" alias="DIAMETER_COMMAND_UNSUPPORTED"/>
+         <label data="3002" alias="DIAMETER_UNABLE_TO_DELIVER"/>
+         <label data="3003" alias="DIAMETER_REALM_NOT_SERVED"/>
+         <label data="3004" alias="DIAMETER_TOO_BUSY"/>
+         <label data="3005" alias="DIAMETER_LOOP_DETECTED"/>
+         <label data="3006" alias="DIAMETER_REDIRECT_INDICATION"/>
+         <label data="3007" alias="DIAMETER_APPLICATION_UNSUPPORTED"/>
+         <label data="3008" alias="DIAMETER_INVALID_HDR_BITS"/>
+         <label data="3009" alias="DIAMETER_INVALID_AVP_BITS"/>
+         <label data="3010" alias="DIAMETER_UNKNOWN_PEER"/>
+         <label data="4001" alias="DIAMETER_AUTHENTICATION_REJECTED"/>
+         <label data="4002" alias="DIAMETER_OUT_OF_SPACE"/>
+         <label data="4003" alias="DIAMETER_ELECTION_LOST"/>
+         <label data="5001" alias="DIAMETER_AVP_UNSUPPORTED"/>
+         <label data="5002" alias="DIAMETER_UNKNOWN_SESSION_ID"/>
+         <label data="5003" alias="DIAMETER_AUTHORIZATION_REJECTED"/>
+         <label data="5004" alias="DIAMETER_INVALID_AVP_VALUE"/>
+         <label data="5005" alias="DIAMETER_MISSING_AVP"/>
+         <label data="5006" alias="DIAMETER_RESOURCES_EXCEEDED"/>
+         <label data="5007" alias="DIAMETER_CONTRADICTING_AVPS"/>
+         <label data="5008" alias="DIAMETER_AVP_NOT_ALLOWED"/>
+         <label data="5009" alias="DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"/>
+         <label data="5010" alias="DIAMETER_NO_COMMON_APPLICATION"/>
+         <label data="5011" alias="DIAMETER_UNSUPPORTED_VERSION"/>
+         <label data="5012" alias="DIAMETER_UNABLE_TO_COMPLY"/>
+         <label data="5013" alias="DIAMETER_INVALID_BIT_IN_HEADER"/>
+         <label data="5014" alias="DIAMETER_INVALID_AVP_LENGTH"/>
+         <label data="5015" alias="DIAMETER_INVALID_MESSAGE_LENGTH"/>
+         <label data="5016" alias="DIAMETER_INVALID_AVP_BIT_COMBO"/>
+         <label data="5017" alias="DIAMETER_NO_COMMON_SECURITY"/>
+         <label data="5030" alias="DIAMETER_USER_UNKNOWN"/>
+         <label data="5063" alias="REQUESTED_SERVICE_NOT_AUTHORIZED"/>
+         <label data="5065" alias="IP_CAN_SESSION_NOT_AVAILABLE"/>
+      </single>
+   </avp>
+   <avp name="Product-Name" code="269" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Session-Binding" code="270" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Server-Failover" code="271" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="REFUSE_SERVICE"/>
+         <label data="1" alias="TRY_AGAIN"/>
+         <label data="2" alias="ALLOW_SERVICE"/>
+         <label data="3" alias="TRY_AGAIN_ALLOW_SERVICE"/>
+      </single>
+   </avp>
+   <avp name="Multi-Round-Time-Out" code="272" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Disconnect-Cause" code="273" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="REBOOTING"/>
+         <label data="1" alias="BUSY"/>
+         <label data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
+      </single>
+   </avp>
+   <avp name="Auth-Request-Type" code="274" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="AUTHENTICATE_ONLY"/>
+         <label data="2" alias="AUTHORIZE_ONLY"/>
+         <label data="3" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Auth-Grace-Period" code="276" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Auth-Session-State" code="277" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="STATE_MAINTAINED"/>
+         <label data="1" alias="NO_STATE_MAINTAINED"/>
+      </single>
+   </avp>
+   <avp name="Origin-State-Id" code="278" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Failed-AVP" code="279" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="1*"/>
+      </grouped>
+   </avp>
+   <avp name="Proxy-Host" code="280" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Message" code="281" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Route-Record" code="282" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Destination-Realm" code="283" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Proxy-Info" code="284" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Proxy-Host" type="Mandatory"/>
+         <avprule id="Proxy-State" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Re-Auth-Request-Type" code="285" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="AUTHORIZE_ONLY"/>
+         <label data="1" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Sub-Session-Id" code="287" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="Redirect-Host" code="292" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Destination-Host" code="293" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Reporting-Host" code="294" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Termination-Cause" code="295" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-8">
+         <label data="1" alias="LOGOUT"/>
+         <label data="2" alias="SERVICE_NOT_PROVIDED"/>
+         <label data="3" alias="BAD_ANSWER"/>
+         <label data="4" alias="ADMINISTRATIVE"/>
+         <label data="5" alias="LINK_BROKEN"/>
+         <label data="6" alias="AUTH_EXPIRED"/>
+         <label data="7" alias="USER_MOVED"/>
+         <label data="8" alias="SESSION_TIMEOUT"/>
+      </single>
+   </avp>
+   <avp name="Origin-Realm" code="296" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Experimental-Result" code="297" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Experimental-Result-Code" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Experimental-Result-Code" code="298" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Inband-Security-Id" code="299" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="E2E-Sequence" code="300" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="2*"/>
+      </grouped>
+   </avp>
+   <avp name="Accounting-Record-Type" code="480" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4">
+         <label data="1" alias="EVENT_RECORD"/>
+         <label data="2" alias="START_RECORD"/>
+         <label data="3" alias="INTERIM_RECORD"/>
+         <label data="4" alias="STOP_RECORD"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Realtime-Required" code="483" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="DELIVER_AND_GRANT"/>
+         <label data="2" alias="GRANT_AND_STORE"/>
+         <label data="3" alias="GRANT_AND_LOSE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Number" code="485" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <command name="CER" code="257" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CEA" code="257" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RAR" code="258" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Re-Auth-Request-Type" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RAA" code="258" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACR" code="271" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACA" code="271" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASR" code="274" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASA" code="274" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="STR" code="275" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Termination-Cause" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="STA" code="275" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="DWR" code="280" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DWA" code="280" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DPR" code="282" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Disconnect-Cause" type="Mandatory"/>
+   </command>
+   <command name="DPA" code="282" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+   </command>
+</dictionary>
diff --git a/example/diameter/launcher/resources/stack_examples/16777236.xml b/example/diameter/launcher/resources/stack_examples/16777236.xml
new file mode 100644 (file)
index 0000000..a0d53e3
--- /dev/null
@@ -0,0 +1,696 @@
+<dictionary name="DictionaryRx | Application-Id: 16777236">
+   <vendor name="IETF" code="0"/>
+   <vendor name="3GPP" code="10415"/>
+   <vendor name="ETSI" code="13019"/>
+   <avp name="User-Name" code="1" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Framed-IP-Address" code="8" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Class" code="25" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Session-Timeout" code="27" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Called-Station-Id" code="30" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Proxy-State" code="33" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Session-Id" code="44" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Multi-Session-Id" code="50" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Event-Timestamp" code="55" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <avp name="Acct-Interim-Interval" code="85" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Framed-IPv6-Prefix" code="97" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Host-IP-Address" code="257" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Auth-Application-Id" code="258" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Acct-Application-Id" code="259" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Specific-Application-Id" code="260" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory" qual="1*"/>
+         <avprule id="Auth-Application-Id" type="Optional"/>
+         <avprule id="Acct-Application-Id" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Redirect-Host-Usage" code="261" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="DONT_CACHE"/>
+         <label data="1" alias="ALL_SESSION"/>
+         <label data="2" alias="ALL_REALM"/>
+         <label data="3" alias="REALM_AND_APPLICATION"/>
+         <label data="4" alias="ALL_APPLICATION"/>
+         <label data="5" alias="ALL_HOST"/>
+         <label data="6" alias="ALL_USER"/>
+      </single>
+   </avp>
+   <avp name="Redirect-Max-Cache-Time" code="262" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Id" code="263" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Origin-Host" code="264" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Supported-Vendor-Id" code="265" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Id" code="266" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Firmware-Revision" code="267" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Result-Code" code="268" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32">
+         <label data="1001" alias="DIAMETER_MULTI_ROUND_AUTH"/>
+         <label data="2001" alias="DIAMETER_SUCCESS"/>
+         <label data="2002" alias="DIAMETER_LIMITED_SUCCESS"/>
+         <label data="3001" alias="DIAMETER_COMMAND_UNSUPPORTED"/>
+         <label data="3002" alias="DIAMETER_UNABLE_TO_DELIVER"/>
+         <label data="3003" alias="DIAMETER_REALM_NOT_SERVED"/>
+         <label data="3004" alias="DIAMETER_TOO_BUSY"/>
+         <label data="3005" alias="DIAMETER_LOOP_DETECTED"/>
+         <label data="3006" alias="DIAMETER_REDIRECT_INDICATION"/>
+         <label data="3007" alias="DIAMETER_APPLICATION_UNSUPPORTED"/>
+         <label data="3008" alias="DIAMETER_INVALID_HDR_BITS"/>
+         <label data="3009" alias="DIAMETER_INVALID_AVP_BITS"/>
+         <label data="3010" alias="DIAMETER_UNKNOWN_PEER"/>
+         <label data="4001" alias="DIAMETER_AUTHENTICATION_REJECTED"/>
+         <label data="4002" alias="DIAMETER_OUT_OF_SPACE"/>
+         <label data="4003" alias="DIAMETER_ELECTION_LOST"/>
+         <label data="5001" alias="DIAMETER_AVP_UNSUPPORTED"/>
+         <label data="5002" alias="DIAMETER_UNKNOWN_SESSION_ID"/>
+         <label data="5003" alias="DIAMETER_AUTHORIZATION_REJECTED"/>
+         <label data="5004" alias="DIAMETER_INVALID_AVP_VALUE"/>
+         <label data="5005" alias="DIAMETER_MISSING_AVP"/>
+         <label data="5006" alias="DIAMETER_RESOURCES_EXCEEDED"/>
+         <label data="5007" alias="DIAMETER_CONTRADICTING_AVPS"/>
+         <label data="5008" alias="DIAMETER_AVP_NOT_ALLOWED"/>
+         <label data="5009" alias="DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"/>
+         <label data="5010" alias="DIAMETER_NO_COMMON_APPLICATION"/>
+         <label data="5011" alias="DIAMETER_UNSUPPORTED_VERSION"/>
+         <label data="5012" alias="DIAMETER_UNABLE_TO_COMPLY"/>
+         <label data="5013" alias="DIAMETER_INVALID_BIT_IN_HEADER"/>
+         <label data="5014" alias="DIAMETER_INVALID_AVP_LENGTH"/>
+         <label data="5015" alias="DIAMETER_INVALID_MESSAGE_LENGTH"/>
+         <label data="5016" alias="DIAMETER_INVALID_AVP_BIT_COMBO"/>
+         <label data="5017" alias="DIAMETER_NO_COMMON_SECURITY"/>
+         <label data="5030" alias="DIAMETER_USER_UNKNOWN"/>
+         <label data="5063" alias="REQUESTED_SERVICE_NOT_AUTHORIZED"/>
+         <label data="5065" alias="IP_CAN_SESSION_NOT_AVAILABLE"/>
+      </single>
+   </avp>
+   <avp name="Product-Name" code="269" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Session-Binding" code="270" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Server-Failover" code="271" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="REFUSE_SERVICE"/>
+         <label data="1" alias="TRY_AGAIN"/>
+         <label data="2" alias="ALLOW_SERVICE"/>
+         <label data="3" alias="TRY_AGAIN_ALLOW_SERVICE"/>
+      </single>
+   </avp>
+   <avp name="Multi-Round-Time-Out" code="272" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Disconnect-Cause" code="273" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="REBOOTING"/>
+         <label data="1" alias="BUSY"/>
+         <label data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
+      </single>
+   </avp>
+   <avp name="Auth-Request-Type" code="274" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="AUTHENTICATE_ONLY"/>
+         <label data="2" alias="AUTHORIZE_ONLY"/>
+         <label data="3" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Auth-Grace-Period" code="276" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Auth-Session-State" code="277" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="STATE_MAINTAINED"/>
+         <label data="1" alias="NO_STATE_MAINTAINED"/>
+      </single>
+   </avp>
+   <avp name="Origin-State-Id" code="278" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Failed-AVP" code="279" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="1*"/>
+      </grouped>
+   </avp>
+   <avp name="Proxy-Host" code="280" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Message" code="281" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Route-Record" code="282" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Destination-Realm" code="283" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Proxy-Info" code="284" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Proxy-Host" type="Mandatory"/>
+         <avprule id="Proxy-State" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Re-Auth-Request-Type" code="285" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="AUTHORIZE_ONLY"/>
+         <label data="1" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Sub-Session-Id" code="287" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="Redirect-Host" code="292" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Destination-Host" code="293" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Reporting-Host" code="294" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Termination-Cause" code="295" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-8">
+         <label data="1" alias="LOGOUT"/>
+         <label data="2" alias="SERVICE_NOT_PROVIDED"/>
+         <label data="3" alias="BAD_ANSWER"/>
+         <label data="4" alias="ADMINISTRATIVE"/>
+         <label data="5" alias="LINK_BROKEN"/>
+         <label data="6" alias="AUTH_EXPIRED"/>
+         <label data="7" alias="USER_MOVED"/>
+         <label data="8" alias="SESSION_TIMEOUT"/>
+      </single>
+   </avp>
+   <avp name="Origin-Realm" code="296" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Experimental-Result" code="297" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Experimental-Result-Code" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Experimental-Result-Code" code="298" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Inband-Security-Id" code="299" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="E2E-Sequence" code="300" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="2*"/>
+      </grouped>
+   </avp>
+   <avp name="Subscription-Id" code="443" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Subscription-Id-Type" type="Mandatory"/>
+         <avprule id="Subscription-Id-Data" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Subscription-Id-Data" code="444" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Subscription-Id-Type" code="450" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="END_USER_E164"/>
+         <label data="1" alias="END_USER_IMSI"/>
+         <label data="2" alias="END_USER_SIP_URI"/>
+         <label data="3" alias="END_USER_NAI"/>
+         <label data="4" alias="END_USER_PRIVATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Type" code="480" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4">
+         <label data="1" alias="EVENT_RECORD"/>
+         <label data="2" alias="START_RECORD"/>
+         <label data="3" alias="INTERIM_RECORD"/>
+         <label data="4" alias="STOP_RECORD"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Realtime-Required" code="483" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="DELIVER_AND_GRANT"/>
+         <label data="2" alias="GRANT_AND_STORE"/>
+         <label data="3" alias="GRANT_AND_LOSE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Number" code="485" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Abort-Cause" code="500" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="BEARER_RELEASED"/>
+         <label data="1" alias="INSUFFICIENT_SERVER_RESOURCES"/>
+         <label data="2" alias="INSUFFICIENT_BEARER_RESOURCES"/>
+         <label data="3" alias="PS_TO_CS_HANDOVER"/>
+         <label data="4" alias="SPONSORED_DATA_CONNECTIVITY_DISALLOWED"/>
+      </single>
+   </avp>
+   <avp name="AF-Application-Identifier" code="504" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="AF-Charging-Identifier" code="505" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Flow-Description" code="507" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="IPFilterRule"/>
+   </avp>
+   <avp name="Flow-Number" code="509" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Flows" code="510" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Media-Component-Number" type="Mandatory"/>
+         <avprule id="Flow-Number" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Flow-Status" code="511" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="ENABLED-UPLINK"/>
+         <label data="1" alias="ENABLED-DOWNLINK"/>
+         <label data="2" alias="ENABLED"/>
+         <label data="3" alias="DISABLED"/>
+         <label data="4" alias="REMOVED"/>
+      </single>
+   </avp>
+   <avp name="Flow-Usage" code="512" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="NO_INFORMATION"/>
+         <label data="1" alias="RTCP"/>
+         <label data="2" alias="AF_SIGNALLING"/>
+      </single>
+   </avp>
+   <avp name="Specific-Action" code="513" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4,6-14">
+         <label data="1" alias="CHARGING_CORRELATION_EXCHANGE"/>
+         <label data="2" alias="INDICATION_OF_LOSS_OF_BEARER"/>
+         <label data="3" alias="INDICATION_OF_RECOVERY_OF_BEARER"/>
+         <label data="4" alias="INDICATION_OF_RELEASE_OF_BEARER"/>
+         <label data="6" alias="IP-CAN_CHANGE"/>
+         <label data="7" alias="INDICATION_OF_OUT_OF_CREDIT"/>
+         <label data="8" alias="INDICATION_OF_SUCCESSFUL_RESOURCES_ALLOCATION"/>
+         <label data="9" alias="INDICATION_OF_FAILED_RESOURCES_ALLOCATION"/>
+         <label data="10" alias="INDICATION_OF_LIMITED_PCC_DEPLOYMENT"/>
+         <label data="11" alias="USAGE_REPORT"/>
+         <label data="12" alias="ACCESS_NETWORK_INFO_REPORT"/>
+         <label data="13" alias="INDICATION_OF_RECOVERY_FROM_LIMITED_PCC_DEPLOYMENT"/>
+         <label data="14" alias="INDICATION_OF_ACCESS_NETWORK_INFO_REPORTING_FAILURE"/>
+      </single>
+   </avp>
+   <avp name="Max-Requested-Bandwidth-DL" code="515" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Max-Requested-Bandwidth-UL" code="516" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Media-Component-Description" code="517" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Media-Component-Number" type="Mandatory"/>
+         <avprule id="Media-Sub-Component" type="Optional" qual="*"/>
+         <avprule id="AF-Application-Identifier" type="Optional"/>
+         <avprule id="Media-Type" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
+         <avprule id="Min-Requested-Bandwidth-UL" type="Optional"/>
+         <avprule id="Min-Requested-Bandwidth-DL" type="Optional"/>
+         <avprule id="Flow-Status" type="Optional"/>
+         <avprule id="Reservation-Priority" type="Optional"/>
+         <avprule id="RS-Bandwidth" type="Optional"/>
+         <avprule id="RR-Bandwidth" type="Optional"/>
+         <avprule id="Codec-Data" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Media-Component-Number" code="518" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Media-Sub-Component" code="519" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Flow-Number" type="Mandatory"/>
+         <avprule id="Flow-Description" type="Optional" qual="0*2"/>
+         <avprule id="Flow-Status" type="Optional"/>
+         <avprule id="Flow-Usage" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Media-Type" code="520" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="OTHER"/>
+         <label data="1" alias="VIDEO"/>
+         <label data="2" alias="DATA"/>
+         <label data="3" alias="APPLICATION"/>
+         <label data="4" alias="CONTROL"/>
+         <label data="5" alias="TEXT"/>
+         <label data="6" alias="MESSAGE"/>
+      </single>
+   </avp>
+   <avp name="RR-Bandwidth" code="521" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="RS-Bandwidth" code="522" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="SIP-Forking-Indication" code="523" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="SINGLE_DIALOGUE"/>
+         <label data="1" alias="SEVERAL_DIALOGUES"/>
+      </single>
+   </avp>
+   <avp name="Codec-Data" code="524" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Service-URN" code="525" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Service-Info-Status" code="527" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="FINAL_SERVICE_INFORMATION"/>
+         <label data="1" alias="PRELIMINARY_SERVICE_INFORMATION"/>
+      </single>
+   </avp>
+   <avp name="MPS-Identifier" code="528" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="AF-Signalling-Protocol" code="529" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="NO_INFORMATION"/>
+         <label data="1" alias="SIP"/>
+      </single>
+   </avp>
+   <avp name="Rx-Request-Type" code="533" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="INITIAL_REQUEST"/>
+         <label data="1" alias="UPDATE_REQUEST"/>
+      </single>
+   </avp>
+   <avp name="Min-Requested-Bandwidth-DL" code="534" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Min-Requested-Bandwidth-UL" code="535" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Required-Access-Info" code="536" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="USER_LOCATION"/>
+         <label data="1" alias="MS_TIME_ZONE"/>
+      </single>
+   </avp>
+   <avp name="IP-Domain-Id" code="537" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Supported-Features" code="628" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="may" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Feature-List-ID" type="Mandatory"/>
+         <avprule id="Feature-List" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Feature-List-ID" code="629" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Feature-List" code="630" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Reservation-Priority" code="458" vendor-name="ETSI" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-15">
+         <label data="0" alias="DEFAULT"/>
+         <label data="1" alias="PRIORITY-ONE"/>
+         <label data="2" alias="PRIORITY-TWO"/>
+         <label data="3" alias="PRIORITY-THREE"/>
+         <label data="4" alias="PRIORITY-FOUR"/>
+         <label data="5" alias="PRIORITY-FIVE"/>
+         <label data="6" alias="PRIORITY-SIX"/>
+         <label data="7" alias="PRIORITY-SEVEN"/>
+         <label data="8" alias="PRIORITY-EIGHT"/>
+         <label data="9" alias="PRIORITY-NINE"/>
+         <label data="10" alias="PRIORITY-TEN"/>
+         <label data="11" alias="PRIORITY-ELEVEN"/>
+         <label data="12" alias="PRIORITY-TWELVE"/>
+         <label data="13" alias="PRIORITY-THIRTEEN"/>
+         <label data="14" alias="PRIORITY-FOURTEEN"/>
+         <label data="15" alias="PRIORITY-FIFTEEN"/>
+      </single>
+   </avp>
+   <command name="CER" code="257" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CEA" code="257" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RA-Request" code="258" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Specific-Action" type="Mandatory" qual="*"/>
+      <avprule id="Flows" type="Optional" qual="*"/>
+      <avprule id="Abort-Cause" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+   </command>
+   <command name="RA-Answer" code="258" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Media-Component-Description" type="Optional" qual="*"/>
+      <avprule id="Service-URN" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="AA-Request" code="265" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="IP-Domain-Id" type="Optional"/>
+      <avprule id="AF-Application-Identifier" type="Optional"/>
+      <avprule id="Media-Component-Description" type="Optional" qual="*"/>
+      <avprule id="Service-Info-Status" type="Optional"/>
+      <avprule id="AF-Charging-Identifier" type="Optional"/>
+      <avprule id="SIP-Forking-Indication" type="Optional"/>
+      <avprule id="Specific-Action" type="Optional" qual="*"/>
+      <avprule id="Subscription-Id" type="Optional" qual="*"/>
+      <avprule id="Supported-Features" type="Optional" qual="*"/>
+      <avprule id="Reservation-Priority" type="Optional"/>
+      <avprule id="Framed-IP-Address" type="Optional"/>
+      <avprule id="Framed-IPv6-Prefix" type="Optional"/>
+      <avprule id="Called-Station-Id" type="Optional"/>
+      <avprule id="Service-URN" type="Optional"/>
+      <avprule id="MPS-Identifier" type="Optional"/>
+      <avprule id="Rx-Request-Type" type="Optional"/>
+      <avprule id="Required-Access-Info" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="AA-Answer" code="265" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Supported-Features" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+   </command>
+   <command name="ACR" code="271" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACA" code="271" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="AS-Request" code="274" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Abort-Cause" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+   </command>
+   <command name="AS-Answer" code="274" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ST-Request" code="275" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Termination-Cause" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Required-Access-Info" type="Optional" qual="*"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ST-Answer" code="275" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+   </command>
+   <command name="DWR" code="280" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DWA" code="280" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DPR" code="282" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Disconnect-Cause" type="Mandatory"/>
+   </command>
+   <command name="DPA" code="282" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+   </command>
+</dictionary>
diff --git a/example/diameter/launcher/resources/stack_examples/16777238.xml b/example/diameter/launcher/resources/stack_examples/16777238.xml
new file mode 100644 (file)
index 0000000..efc5acd
--- /dev/null
@@ -0,0 +1,1270 @@
+<dictionary name="DictionaryGx | Application-Id: 16777238">
+   <vendor name="IETF" code="0"/>
+   <vendor name="ERICSSON" code="193"/>
+   <vendor name="3GPP2" code="5535"/>
+   <vendor name="3GPP" code="10415"/>
+   <avp name="User-Name" code="1" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Framed-IP-Address" code="8" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Class" code="25" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Session-Timeout" code="27" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Called-Station-Id" code="30" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Proxy-State" code="33" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Session-Id" code="44" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Multi-Session-Id" code="50" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Event-Timestamp" code="55" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <avp name="Acct-Interim-Interval" code="85" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Framed-IPv6-Prefix" code="97" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Host-IP-Address" code="257" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Auth-Application-Id" code="258" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Acct-Application-Id" code="259" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Specific-Application-Id" code="260" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory" qual="1*"/>
+         <avprule id="Auth-Application-Id" type="Optional"/>
+         <avprule id="Acct-Application-Id" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Redirect-Host-Usage" code="261" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="DONT_CACHE"/>
+         <label data="1" alias="ALL_SESSION"/>
+         <label data="2" alias="ALL_REALM"/>
+         <label data="3" alias="REALM_AND_APPLICATION"/>
+         <label data="4" alias="ALL_APPLICATION"/>
+         <label data="5" alias="ALL_HOST"/>
+         <label data="6" alias="ALL_USER"/>
+      </single>
+   </avp>
+   <avp name="Redirect-Max-Cache-Time" code="262" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Id" code="263" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Origin-Host" code="264" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Supported-Vendor-Id" code="265" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Id" code="266" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Firmware-Revision" code="267" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Result-Code" code="268" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32">
+         <label data="1001" alias="DIAMETER_MULTI_ROUND_AUTH"/>
+         <label data="2001" alias="DIAMETER_SUCCESS"/>
+         <label data="2002" alias="DIAMETER_LIMITED_SUCCESS"/>
+         <label data="3001" alias="DIAMETER_COMMAND_UNSUPPORTED"/>
+         <label data="3002" alias="DIAMETER_UNABLE_TO_DELIVER"/>
+         <label data="3003" alias="DIAMETER_REALM_NOT_SERVED"/>
+         <label data="3004" alias="DIAMETER_TOO_BUSY"/>
+         <label data="3005" alias="DIAMETER_LOOP_DETECTED"/>
+         <label data="3006" alias="DIAMETER_REDIRECT_INDICATION"/>
+         <label data="3007" alias="DIAMETER_APPLICATION_UNSUPPORTED"/>
+         <label data="3008" alias="DIAMETER_INVALID_HDR_BITS"/>
+         <label data="3009" alias="DIAMETER_INVALID_AVP_BITS"/>
+         <label data="3010" alias="DIAMETER_UNKNOWN_PEER"/>
+         <label data="4001" alias="DIAMETER_AUTHENTICATION_REJECTED"/>
+         <label data="4002" alias="DIAMETER_OUT_OF_SPACE"/>
+         <label data="4003" alias="DIAMETER_ELECTION_LOST"/>
+         <label data="5001" alias="DIAMETER_AVP_UNSUPPORTED"/>
+         <label data="5002" alias="DIAMETER_UNKNOWN_SESSION_ID"/>
+         <label data="5003" alias="DIAMETER_AUTHORIZATION_REJECTED"/>
+         <label data="5004" alias="DIAMETER_INVALID_AVP_VALUE"/>
+         <label data="5005" alias="DIAMETER_MISSING_AVP"/>
+         <label data="5006" alias="DIAMETER_RESOURCES_EXCEEDED"/>
+         <label data="5007" alias="DIAMETER_CONTRADICTING_AVPS"/>
+         <label data="5008" alias="DIAMETER_AVP_NOT_ALLOWED"/>
+         <label data="5009" alias="DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"/>
+         <label data="5010" alias="DIAMETER_NO_COMMON_APPLICATION"/>
+         <label data="5011" alias="DIAMETER_UNSUPPORTED_VERSION"/>
+         <label data="5012" alias="DIAMETER_UNABLE_TO_COMPLY"/>
+         <label data="5013" alias="DIAMETER_INVALID_BIT_IN_HEADER"/>
+         <label data="5014" alias="DIAMETER_INVALID_AVP_LENGTH"/>
+         <label data="5015" alias="DIAMETER_INVALID_MESSAGE_LENGTH"/>
+         <label data="5016" alias="DIAMETER_INVALID_AVP_BIT_COMBO"/>
+         <label data="5017" alias="DIAMETER_NO_COMMON_SECURITY"/>
+         <label data="5030" alias="DIAMETER_USER_UNKNOWN"/>
+         <label data="5063" alias="REQUESTED_SERVICE_NOT_AUTHORIZED"/>
+         <label data="5065" alias="IP_CAN_SESSION_NOT_AVAILABLE"/>
+      </single>
+   </avp>
+   <avp name="Product-Name" code="269" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Session-Binding" code="270" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Server-Failover" code="271" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="REFUSE_SERVICE"/>
+         <label data="1" alias="TRY_AGAIN"/>
+         <label data="2" alias="ALLOW_SERVICE"/>
+         <label data="3" alias="TRY_AGAIN_ALLOW_SERVICE"/>
+      </single>
+   </avp>
+   <avp name="Multi-Round-Time-Out" code="272" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Disconnect-Cause" code="273" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="REBOOTING"/>
+         <label data="1" alias="BUSY"/>
+         <label data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
+      </single>
+   </avp>
+   <avp name="Auth-Request-Type" code="274" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="AUTHENTICATE_ONLY"/>
+         <label data="2" alias="AUTHORIZE_ONLY"/>
+         <label data="3" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Auth-Grace-Period" code="276" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Auth-Session-State" code="277" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="STATE_MAINTAINED"/>
+         <label data="1" alias="NO_STATE_MAINTAINED"/>
+      </single>
+   </avp>
+   <avp name="Origin-State-Id" code="278" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Failed-AVP" code="279" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="1*"/>
+      </grouped>
+   </avp>
+   <avp name="Proxy-Host" code="280" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Message" code="281" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Route-Record" code="282" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Destination-Realm" code="283" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Proxy-Info" code="284" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Proxy-Host" type="Mandatory"/>
+         <avprule id="Proxy-State" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Re-Auth-Request-Type" code="285" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="AUTHORIZE_ONLY"/>
+         <label data="1" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Sub-Session-Id" code="287" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="Redirect-Host" code="292" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Destination-Host" code="293" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Reporting-Host" code="294" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Termination-Cause" code="295" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-8">
+         <label data="1" alias="LOGOUT"/>
+         <label data="2" alias="SERVICE_NOT_PROVIDED"/>
+         <label data="3" alias="BAD_ANSWER"/>
+         <label data="4" alias="ADMINISTRATIVE"/>
+         <label data="5" alias="LINK_BROKEN"/>
+         <label data="6" alias="AUTH_EXPIRED"/>
+         <label data="7" alias="USER_MOVED"/>
+         <label data="8" alias="SESSION_TIMEOUT"/>
+      </single>
+   </avp>
+   <avp name="Origin-Realm" code="296" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Experimental-Result" code="297" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Experimental-Result-Code" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Experimental-Result-Code" code="298" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Inband-Security-Id" code="299" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="E2E-Sequence" code="300" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="2*"/>
+      </grouped>
+   </avp>
+   <avp name="CC-Input-Octets" code="412" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="CC-Output-Octets" code="414" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="CC-Request-Number" code="415" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="CC-Request-Type" code="416" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4">
+         <label data="1" alias="INITIAL_REQUEST"/>
+         <label data="2" alias="UPDATE_REQUEST"/>
+         <label data="3" alias="TERMINATION_REQUEST"/>
+         <label data="4" alias="EVENT_REQUEST"/>
+      </single>
+   </avp>
+   <avp name="CC-Time" code="420" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="CC-Total-Octets" code="421" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="Granted-Service-Unit" code="431" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="CC-Total-Octets" type="Optional"/>
+         <avprule id="CC-Time" type="Optional"/>
+         <avprule id="CC-Input-Octets" type="Optional"/>
+         <avprule id="CC-Output-Octets" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Rating-Group" code="432" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Redirect-Server-Address" code="435" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Service-Identifier" code="439" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Subscription-Id" code="443" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Subscription-Id-Type" type="Mandatory"/>
+         <avprule id="Subscription-Id-Data" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Subscription-Id-Data" code="444" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Used-Service-Unit" code="446" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="CC-Total-Octets" type="Optional"/>
+         <avprule id="CC-Time" type="Optional"/>
+         <avprule id="CC-Input-Octets" type="Optional"/>
+         <avprule id="CC-Output-Octets" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Subscription-Id-Type" code="450" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="END_USER_E164"/>
+         <label data="1" alias="END_USER_IMSI"/>
+         <label data="2" alias="END_USER_SIP_URI"/>
+         <label data="3" alias="END_USER_NAI"/>
+         <label data="4" alias="END_USER_PRIVATE"/>
+      </single>
+   </avp>
+   <avp name="User-Equipment-Info" code="458" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="mustnot">
+      <grouped>
+         <avprule id="User-Equipment-Info-Type" type="Mandatory"/>
+         <avprule id="User-Equipment-Info-Value" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="User-Equipment-Info-Type" code="459" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="IMEISV"/>
+         <label data="1" alias="MAC"/>
+         <label data="2" alias="EUI64"/>
+         <label data="3" alias="MODIFIED_EUI64"/>
+      </single>
+   </avp>
+   <avp name="User-Equipment-Info-Value" code="460" may-encrypt="yes" v-bit="mustnot" m-bit="may" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Accounting-Record-Type" code="480" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4">
+         <label data="1" alias="EVENT_RECORD"/>
+         <label data="2" alias="START_RECORD"/>
+         <label data="3" alias="INTERIM_RECORD"/>
+         <label data="4" alias="STOP_RECORD"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Realtime-Required" code="483" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="DELIVER_AND_GRANT"/>
+         <label data="2" alias="GRANT_AND_STORE"/>
+         <label data="3" alias="GRANT_AND_LOSE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Number" code="485" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Rule-Space-Suggestion" code="290" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Authorization-State" code="1056" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-12">
+         <label data="0" alias="AUTHORIZED"/>
+         <label data="1" alias="DENIED_CALENDAR_TIME"/>
+         <label data="2" alias="DENIED_ROAMING"/>
+         <label data="3" alias="DENIED_QUALITY_OF_SERVICE"/>
+         <label data="4" alias="DENIED_BLACKLISTED"/>
+         <label data="5" alias="DENIED_TERMINAL"/>
+         <label data="6" alias="DENIED_OPERATOR_REASON_ONE"/>
+         <label data="7" alias="DENIED_OPERATOR_REASON_TWO"/>
+         <label data="8" alias="DENIED_OPERATOR_REASON_THREE"/>
+         <label data="9" alias="DENIED_OPERATOR_REASON_FOUR"/>
+         <label data="10" alias="DENIED_OPERATOR_REASON_FIVE"/>
+         <label data="11" alias="DENIED_UNKNOWN_REASON"/>
+         <label data="12" alias="DENIED_USAGE_CONTROL"/>
+      </single>
+   </avp>
+   <avp name="Gx-Capability-List" code="1060" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Content-Filtering-Profile-Id" code="1138" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="3GPP2-BSID" code="9010" vendor-name="3GPP2" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="3GPP-SGSN-Address" code="6" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="3GPP-Charging-Characteristics" code="13" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="3GPP-SGSN-IPv6-Address" code="15" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="3GPP-SGSN-MCC-MNC" code="18" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="3GPP-RAT-Type" code="21" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="3GPP-User-Location-Info" code="22" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="3GPP-MS-TimeZone" code="23" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Access-Network-Charging-Address" code="501" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Access-Network-Charging-Identifier-Value" code="503" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="AF-Charging-Identifier" code="505" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Flow-Description" code="507" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="IPFilterRule"/>
+   </avp>
+   <avp name="Flow-Number" code="509" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Flows" code="510" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Media-Component-Number" type="Mandatory"/>
+         <avprule id="Flow-Number" type="Optional" qual="*"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Flow-Status" code="511" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="ENABLED-UPLINK"/>
+         <label data="1" alias="ENABLED-DOWNLINK"/>
+         <label data="2" alias="ENABLED"/>
+         <label data="3" alias="DISABLED"/>
+         <label data="4" alias="REMOVED"/>
+      </single>
+   </avp>
+   <avp name="Max-Requested-Bandwidth-DL" code="515" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Max-Requested-Bandwidth-UL" code="516" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Media-Component-Number" code="518" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Charging-Information" code="618" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Primary-Event-Charging-Function-Name" type="Optional"/>
+         <avprule id="Secondary-Event-Charging-Function-Name" type="Optional"/>
+         <avprule id="Primary-Charging-Collection-Function-Name" type="Optional"/>
+         <avprule id="Secondary-Charging-Collection-Function-Name" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Primary-Event-Charging-Function-Name" code="619" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Secondary-Event-Charging-Function-Name" code="620" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Primary-Charging-Collection-Function-Name" code="621" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Secondary-Charging-Collection-Function-Name" code="622" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Supported-Features" code="628" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="may" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Feature-List-ID" type="Mandatory"/>
+         <avprule id="Feature-List" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Feature-List-ID" code="629" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Feature-List" code="630" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="RAI" code="909" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Bearer-Usage" code="1000" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="GENERAL"/>
+         <label data="1" alias="IMS_SIGNALLING"/>
+      </single>
+   </avp>
+   <avp name="Charging-Rule-Install" code="1001" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Charging-Rule-Definition" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Name" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Base-Name" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Authorization" type="Optional" qual="*"/>
+         <avprule id="Bearer-Identifier" type="Optional"/>
+         <avprule id="Rule-Activation-Time" type="Optional"/>
+         <avprule id="Rule-DeActivation-Time" type="Optional"/>
+         <avprule id="Resource-Allocation-Notification" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Charging-Rule-Remove" code="1002" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Charging-Rule-Name" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Base-Name" type="Optional" qual="*"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Charging-Rule-Definition" code="1003" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Charging-Rule-Name" type="Mandatory"/>
+         <avprule id="Service-Identifier" type="Optional"/>
+         <avprule id="Rating-Group" type="Optional"/>
+         <avprule id="Flow-Information" type="Optional" qual="*"/>
+         <avprule id="Flow-Status" type="Optional"/>
+         <avprule id="QoS-Information" type="Optional"/>
+         <avprule id="Reporting-Level" type="Optional"/>
+         <avprule id="Online" type="Optional"/>
+         <avprule id="Offline" type="Optional"/>
+         <avprule id="Metering-Method" type="Optional"/>
+         <avprule id="Precedence" type="Optional"/>
+         <avprule id="AF-Charging-Identifier" type="Optional"/>
+         <avprule id="Flows" type="Optional" qual="*"/>
+         <avprule id="Monitoring-Key" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Charging-Rule-Base-Name" code="1004" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Charging-Rule-Name" code="1005" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Event-Trigger" code="1006" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2,4-4,7-7,12-13,15-17,20-22,25-27,29-29,33-34">
+         <label data="0" alias="SGSN_CHANGE"/>
+         <label data="1" alias="QOS_CHANGE"/>
+         <label data="2" alias="RAT_CHANGE"/>
+         <label data="4" alias="PLMN_CHANGE"/>
+         <label data="7" alias="IP-CAN-CHANGE"/>
+         <label data="12" alias="RAI_CHANGE"/>
+         <label data="13" alias="USER_LOCATION_CHANGE"/>
+         <label data="15" alias="OUT_OF_CREDIT"/>
+         <label data="16" alias="REALLOCATION_OF_CREDIT"/>
+         <label data="17" alias="REVALIDATION_TIMEOUT"/>
+         <label data="20" alias="DEFAULT_EPS_BEARER_QOS_CHANGE"/>
+         <label data="21" alias="AN_GW_CHANGE"/>
+         <label data="22" alias="SUCCESSFUL_RESOURCE_ALLOCATION"/>
+         <label data="25" alias="UE_TIME_ZONE_CHANGE"/>
+         <label data="26" alias="TAI_CHANGE"/>
+         <label data="27" alias="ECGI_CHANGE"/>
+         <label data="29" alias="APN-AMBR_MODIFICATION_FAILURE"/>
+         <label data="33" alias="USAGE_REPORT"/>
+         <label data="34" alias="DEFAULT-EPS-BEARER-QOS_MODIFICATION_FAILURE"/>
+      </single>
+   </avp>
+   <avp name="Metering-Method" code="1007" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="DURATION"/>
+         <label data="1" alias="VOLUME"/>
+         <label data="2" alias="DURATION_VOLUME"/>
+      </single>
+   </avp>
+   <avp name="Offline" code="1008" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="DISABLE_OFFLINE"/>
+         <label data="1" alias="ENABLE_OFFLINE"/>
+      </single>
+   </avp>
+   <avp name="Online" code="1009" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="DISABLE_ONLINE"/>
+         <label data="1" alias="ENABLE_ONLINE"/>
+      </single>
+   </avp>
+   <avp name="Precedence" code="1010" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Reporting-Level" code="1011" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="SERVICE_IDENTIFIER_LEVEL"/>
+         <label data="1" alias="RATING_GROUP_LEVEL"/>
+      </single>
+   </avp>
+   <avp name="ToS-Traffic-Class" code="1014" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="QoS-Information" code="1016" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="QoS-Class-Identifier" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-UL" type="Optional"/>
+         <avprule id="Max-Requested-Bandwidth-DL" type="Optional"/>
+         <avprule id="Guaranteed-Bitrate-UL" type="Optional"/>
+         <avprule id="Guaranteed-Bitrate-DL" type="Optional"/>
+         <avprule id="Bearer-Identifier" type="Optional"/>
+         <avprule id="Allocation-Retention-Priority" type="Optional"/>
+         <avprule id="APN-Aggregate-Max-Bitrate-UL" type="Optional"/>
+         <avprule id="APN-Aggregate-Max-Bitrate-DL" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Charging-Rule-Report" code="1018" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Charging-Rule-Name" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Base-Name" type="Optional" qual="*"/>
+         <avprule id="PCC-Rule-Status" type="Optional"/>
+         <avprule id="Rule-Failure-Code" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="PCC-Rule-Status" code="1019" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="ACTIVE"/>
+         <label data="1" alias="INACTIVE"/>
+         <label data="2" alias="TEMPORARILY_INACTIVE"/>
+      </single>
+   </avp>
+   <avp name="Bearer-Identifier" code="1020" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Bearer-Operation" code="1021" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="TERMINATION"/>
+         <label data="1" alias="ESTABLISHMENT"/>
+         <label data="2" alias="MODIFICATION"/>
+      </single>
+   </avp>
+   <avp name="Access-Network-Charging-Identifier-Gx" code="1022" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Access-Network-Charging-Identifier-Value" type="Mandatory"/>
+         <avprule id="Charging-Rule-Base-Name" type="Optional" qual="*"/>
+         <avprule id="Charging-Rule-Name" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Bearer-Control-Mode" code="1023" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="UE_ONLY"/>
+         <label data="1" alias="RESERVED"/>
+         <label data="2" alias="UE_NW"/>
+      </single>
+   </avp>
+   <avp name="Network-Request-Support" code="1024" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="NETWORK_REQUEST_NOT_SUPPORTED"/>
+         <label data="1" alias="NETWORK_REQUEST_SUPPORTED"/>
+      </single>
+   </avp>
+   <avp name="Guaranteed-Bitrate-DL" code="1025" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Guaranteed-Bitrate-UL" code="1026" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="IP-CAN-Type" code="1027" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="3GPP-GPRS"/>
+         <label data="1" alias="DOCSIS"/>
+         <label data="2" alias="xDSL"/>
+         <label data="3" alias="WiMAX"/>
+         <label data="4" alias="3GPP2"/>
+         <label data="5" alias="3GPP-EPS"/>
+         <label data="6" alias="Non-3GPP-EPS"/>
+      </single>
+   </avp>
+   <avp name="QoS-Class-Identifier" code="1028" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-9,128-254">
+         <label data="1" alias="QCI_1"/>
+         <label data="2" alias="QCI_2"/>
+         <label data="3" alias="QCI_3"/>
+         <label data="4" alias="QCI_4"/>
+         <label data="5" alias="QCI_5"/>
+         <label data="6" alias="QCI_6"/>
+         <label data="7" alias="QCI_7"/>
+         <label data="8" alias="QCI_8"/>
+         <label data="9" alias="QCI_9"/>
+         <label data="128" alias="QCI_128"/>
+         <label data="129" alias="QCI_129"/>
+         <label data="130" alias="QCI_130"/>
+         <label data="131" alias="QCI_131"/>
+         <label data="132" alias="QCI_132"/>
+         <label data="133" alias="QCI_133"/>
+         <label data="134" alias="QCI_134"/>
+         <label data="135" alias="QCI_135"/>
+         <label data="136" alias="QCI_136"/>
+         <label data="137" alias="QCI_137"/>
+         <label data="138" alias="QCI_138"/>
+         <label data="139" alias="QCI_139"/>
+         <label data="140" alias="QCI_140"/>
+         <label data="141" alias="QCI_141"/>
+         <label data="142" alias="QCI_142"/>
+         <label data="143" alias="QCI_143"/>
+         <label data="144" alias="QCI_144"/>
+         <label data="145" alias="QCI_145"/>
+         <label data="146" alias="QCI_146"/>
+         <label data="147" alias="QCI_147"/>
+         <label data="148" alias="QCI_148"/>
+         <label data="149" alias="QCI_149"/>
+         <label data="150" alias="QCI_150"/>
+         <label data="151" alias="QCI_151"/>
+         <label data="152" alias="QCI_152"/>
+         <label data="153" alias="QCI_153"/>
+         <label data="154" alias="QCI_154"/>
+         <label data="155" alias="QCI_155"/>
+         <label data="156" alias="QCI_156"/>
+         <label data="157" alias="QCI_157"/>
+         <label data="158" alias="QCI_158"/>
+         <label data="159" alias="QCI_159"/>
+         <label data="160" alias="QCI_160"/>
+         <label data="161" alias="QCI_161"/>
+         <label data="162" alias="QCI_162"/>
+         <label data="163" alias="QCI_163"/>
+         <label data="164" alias="QCI_164"/>
+         <label data="165" alias="QCI_165"/>
+         <label data="166" alias="QCI_166"/>
+         <label data="167" alias="QCI_167"/>
+         <label data="168" alias="QCI_168"/>
+         <label data="169" alias="QCI_169"/>
+         <label data="170" alias="QCI_170"/>
+         <label data="171" alias="QCI_171"/>
+         <label data="172" alias="QCI_172"/>
+         <label data="173" alias="QCI_173"/>
+         <label data="174" alias="QCI_174"/>
+         <label data="175" alias="QCI_175"/>
+         <label data="176" alias="QCI_176"/>
+         <label data="177" alias="QCI_177"/>
+         <label data="178" alias="QCI_178"/>
+         <label data="179" alias="QCI_179"/>
+         <label data="180" alias="QCI_180"/>
+         <label data="181" alias="QCI_181"/>
+         <label data="182" alias="QCI_182"/>
+         <label data="183" alias="QCI_183"/>
+         <label data="184" alias="QCI_184"/>
+         <label data="185" alias="QCI_185"/>
+         <label data="186" alias="QCI_186"/>
+         <label data="187" alias="QCI_187"/>
+         <label data="188" alias="QCI_188"/>
+         <label data="189" alias="QCI_189"/>
+         <label data="190" alias="QCI_190"/>
+         <label data="191" alias="QCI_191"/>
+         <label data="192" alias="QCI_192"/>
+         <label data="193" alias="QCI_193"/>
+         <label data="194" alias="QCI_194"/>
+         <label data="195" alias="QCI_195"/>
+         <label data="196" alias="QCI_196"/>
+         <label data="197" alias="QCI_197"/>
+         <label data="198" alias="QCI_198"/>
+         <label data="199" alias="QCI_199"/>
+         <label data="200" alias="QCI_200"/>
+         <label data="201" alias="QCI_201"/>
+         <label data="202" alias="QCI_202"/>
+         <label data="203" alias="QCI_203"/>
+         <label data="204" alias="QCI_204"/>
+         <label data="205" alias="QCI_205"/>
+         <label data="206" alias="QCI_206"/>
+         <label data="207" alias="QCI_207"/>
+         <label data="208" alias="QCI_208"/>
+         <label data="209" alias="QCI_209"/>
+         <label data="210" alias="QCI_210"/>
+         <label data="211" alias="QCI_211"/>
+         <label data="212" alias="QCI_212"/>
+         <label data="213" alias="QCI_213"/>
+         <label data="214" alias="QCI_214"/>
+         <label data="215" alias="QCI_215"/>
+         <label data="216" alias="QCI_216"/>
+         <label data="217" alias="QCI_217"/>
+         <label data="218" alias="QCI_218"/>
+         <label data="219" alias="QCI_219"/>
+         <label data="220" alias="QCI_220"/>
+         <label data="221" alias="QCI_221"/>
+         <label data="222" alias="QCI_222"/>
+         <label data="223" alias="QCI_223"/>
+         <label data="224" alias="QCI_224"/>
+         <label data="225" alias="QCI_225"/>
+         <label data="226" alias="QCI_226"/>
+         <label data="227" alias="QCI_227"/>
+         <label data="228" alias="QCI_228"/>
+         <label data="229" alias="QCI_229"/>
+         <label data="230" alias="QCI_230"/>
+         <label data="231" alias="QCI_231"/>
+         <label data="232" alias="QCI_232"/>
+         <label data="233" alias="QCI_233"/>
+         <label data="234" alias="QCI_234"/>
+         <label data="235" alias="QCI_235"/>
+         <label data="236" alias="QCI_236"/>
+         <label data="237" alias="QCI_237"/>
+         <label data="238" alias="QCI_238"/>
+         <label data="239" alias="QCI_239"/>
+         <label data="240" alias="QCI_240"/>
+         <label data="241" alias="QCI_241"/>
+         <label data="242" alias="QCI_242"/>
+         <label data="243" alias="QCI_243"/>
+         <label data="244" alias="QCI_244"/>
+         <label data="245" alias="QCI_245"/>
+         <label data="246" alias="QCI_246"/>
+         <label data="247" alias="QCI_247"/>
+         <label data="248" alias="QCI_248"/>
+         <label data="249" alias="QCI_249"/>
+         <label data="250" alias="QCI_250"/>
+         <label data="251" alias="QCI_251"/>
+         <label data="252" alias="QCI_252"/>
+         <label data="253" alias="QCI_253"/>
+         <label data="254" alias="QCI_254"/>
+      </single>
+   </avp>
+   <avp name="QoS-Negotiation" code="1029" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="NO_QoS_NEGOTIATION"/>
+         <label data="1" alias="QoS_NEGOTIATION_SUPPORTED"/>
+      </single>
+   </avp>
+   <avp name="QoS-Upgrade" code="1030" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="QoS_UPGRADE_NOT_SUPPORTED"/>
+         <label data="1" alias="QoS_UPGRADE_SUPPORTED"/>
+      </single>
+   </avp>
+   <avp name="Rule-Failure-Code" code="1031" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-13,15">
+         <label data="1" alias="UNKNOWN_RULE_NAME"/>
+         <label data="2" alias="RATING_GROUP_ERROR"/>
+         <label data="3" alias="SERVICE_IDENTIFIER_ERROR"/>
+         <label data="4" alias="GWPCEF_MALFUNCTION"/>
+         <label data="5" alias="RESOURCES_LIMITATION"/>
+         <label data="6" alias="MAX_NR_BEARERS_REACHED"/>
+         <label data="7" alias="UNKNOWN_BEARER_ID"/>
+         <label data="8" alias="MISSING_BEARER_ID"/>
+         <label data="9" alias="MISSING_FLOW_INFORMATION"/>
+         <label data="10" alias="RESOURCE_ALLOCATION_FAILURE"/>
+         <label data="11" alias="UNSUCCESSFUL_QOS_VALIDATION"/>
+         <label data="12" alias="INCORRECT_FLOW_INFORMATION"/>
+         <label data="13" alias="PS_TO_CS_HANDOVER"/>
+         <label data="15" alias="NO_BEARER_BOUND"/>
+      </single>
+   </avp>
+   <avp name="RAT-Type" code="1032" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1,1000-1004,2000-2003">
+         <label data="0" alias="WLAN"/>
+         <label data="1" alias="VIRTUAL"/>
+         <label data="1000" alias="UTRAN"/>
+         <label data="1001" alias="GERAN"/>
+         <label data="1002" alias="GAN"/>
+         <label data="1003" alias="HSPA_EVOLUTION"/>
+         <label data="1004" alias="EUTRAN"/>
+         <label data="2000" alias="CDMA2000_1X"/>
+         <label data="2001" alias="HRPD"/>
+         <label data="2002" alias="UMB"/>
+         <label data="2003" alias="EHRPD"/>
+      </single>
+   </avp>
+   <avp name="Allocation-Retention-Priority" code="1034" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="Priority-Level" type="Mandatory"/>
+         <avprule id="Pre-emption-Capability" type="Optional"/>
+         <avprule id="Pre-emption-Vulnerability" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="APN-Aggregate-Max-Bitrate-DL" code="1040" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="APN-Aggregate-Max-Bitrate-UL" code="1041" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Revalidation-Time" code="1042" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Rule-Activation-Time" code="1043" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Rule-DeActivation-Time" code="1044" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Release-Cause" code="1045" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="UNSPECIFIED_REASON"/>
+         <label data="1" alias="UE_SUBSCRIPTION_REASON"/>
+      </single>
+   </avp>
+   <avp name="Priority-Level" code="1046" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Pre-emption-Capability" code="1047" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="PRE-EMPTION_CAPABILITY_ENABLED"/>
+         <label data="1" alias="PRE-EMPTION_CAPABILITY_DISABLED"/>
+      </single>
+   </avp>
+   <avp name="Pre-emption-Vulnerability" code="1048" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="PRE-EMPTION_VULNERABILITY_ENABLED"/>
+         <label data="1" alias="PRE-EMPTION_VULNERABILITY_DISABLED"/>
+      </single>
+   </avp>
+   <avp name="Default-EPS-Bearer-QoS" code="1049" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="QoS-Class-Identifier" type="Optional"/>
+         <avprule id="Allocation-Retention-Priority" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="AN-GW-Address" code="1050" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Authorization-State-Change-Time" code="1057" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <avp name="Flow-Information" code="1058" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="Flow-Description" type="Optional"/>
+         <avprule id="Flow-Direction" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Next-Authorization-State" code="1059" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="AUTHORIZED"/>
+         <label data="1" alias="DENIED_CALENDAR_TIME"/>
+      </single>
+   </avp>
+   <avp name="Resource-Allocation-Notification" code="1063" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0">
+         <label data="0" alias="ENABLE_NOTIFICATION"/>
+      </single>
+   </avp>
+   <avp name="Monitoring-Key" code="1066" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Usage-Monitoring-Information" code="1067" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <grouped>
+         <avprule id="Monitoring-Key" type="Optional"/>
+         <avprule id="Granted-Service-Unit" type="Optional"/>
+         <avprule id="Used-Service-Unit" type="Optional"/>
+         <avprule id="Usage-Monitoring-Level" type="Optional"/>
+         <avprule id="Usage-Monitoring-Report" type="Optional"/>
+         <avprule id="Usage-Monitoring-Support" type="Optional"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Usage-Monitoring-Level" code="1068" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="SESSION_LEVEL"/>
+         <label data="1" alias="PCC_RULE_LEVEL"/>
+      </single>
+   </avp>
+   <avp name="Usage-Monitoring-Report" code="1069" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0">
+         <label data="0" alias="USAGE_MONITORING_REPORT_REQUIRED"/>
+      </single>
+   </avp>
+   <avp name="Usage-Monitoring-Support" code="1070" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0">
+         <label data="0" alias="USAGE_MONITORING_DISABLED"/>
+      </single>
+   </avp>
+   <avp name="Flow-Direction" code="1080" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="UNSPECIFIED"/>
+         <label data="1" alias="DOWNLINK"/>
+         <label data="2" alias="UPLINK"/>
+         <label data="3" alias="BIDIRECTIONAL"/>
+      </single>
+   </avp>
+   <avp name="Rule-Space-Decision" code="291" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Charging-Rule-Authorization" code="1055" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Authorization-State" type="Mandatory"/>
+         <avprule id="Authorization-State-Change-Time" type="Optional"/>
+         <avprule id="Next-Authorization-State" type="Optional"/>
+         <avprule id="One-Time-Redirect-Control" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Customer-Id" code="1146" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="One-Time-Redirect-Control" code="1193" vendor-name="ERICSSON" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-10">
+         <label data="0" alias="INACTIVE"/>
+         <label data="1" alias="DEFAULT"/>
+         <label data="2" alias="ROAMING"/>
+         <label data="3" alias="QBAU"/>
+         <label data="4" alias="TIME"/>
+         <label data="5" alias="OPERATOR_REASON_ONE"/>
+         <label data="6" alias="OPERATOR_REASON_TWO"/>
+         <label data="7" alias="OPERATOR_REASON_THREE"/>
+         <label data="8" alias="OPERATOR_REASON_FOUR"/>
+         <label data="9" alias="OPERATOR_REASON_FIVE"/>
+         <label data="10" alias="OPERATOR_REASON_SIX"/>
+      </single>
+   </avp>
+   <command name="CER" code="257" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CEA" code="257" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RA-Request" code="258" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Re-Auth-Request-Type" type="Mandatory"/>
+      <avprule id="Session-Release-Cause" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Trigger" type="Optional" qual="*"/>
+      <avprule id="Charging-Rule-Remove" type="Optional" qual="*"/>
+      <avprule id="Charging-Rule-Install" type="Optional" qual="*"/>
+      <avprule id="Default-EPS-Bearer-QoS" type="Optional"/>
+      <avprule id="QoS-Information" type="Optional"/>
+      <avprule id="Revalidation-Time" type="Optional"/>
+      <avprule id="Content-Filtering-Profile-Id" type="Optional"/>
+      <avprule id="Usage-Monitoring-Information" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RA-Answer" code="258" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="IP-CAN-Type" type="Optional"/>
+      <avprule id="RAT-Type" type="Optional"/>
+      <avprule id="AN-GW-Address" type="Optional" qual="0*2"/>
+      <avprule id="3GPP-SGSN-MCC-MNC" type="Optional"/>
+      <avprule id="3GPP-SGSN-Address" type="Optional"/>
+      <avprule id="3GPP-SGSN-IPv6-Address" type="Optional"/>
+      <avprule id="RAI" type="Optional"/>
+      <avprule id="3GPP-User-Location-Info" type="Optional"/>
+      <avprule id="3GPP-MS-TimeZone" type="Optional"/>
+      <avprule id="Charging-Rule-Report" type="Optional" qual="*"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACR" code="271" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACA" code="271" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CC-Request" code="272" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="CC-Request-Type" type="Mandatory"/>
+      <avprule id="CC-Request-Number" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Subscription-Id" type="Optional" qual="*"/>
+      <avprule id="Supported-Features" type="Optional" qual="*"/>
+      <avprule id="Network-Request-Support" type="Optional"/>
+      <avprule id="Bearer-Identifier" type="Optional"/>
+      <avprule id="Bearer-Operation" type="Optional"/>
+      <avprule id="Framed-IP-Address" type="Optional"/>
+      <avprule id="Framed-IPv6-Prefix" type="Optional"/>
+      <avprule id="IP-CAN-Type" type="Optional"/>
+      <avprule id="3GPP-RAT-Type" type="Optional"/>
+      <avprule id="RAT-Type" type="Optional"/>
+      <avprule id="Termination-Cause" type="Optional"/>
+      <avprule id="User-Equipment-Info" type="Optional"/>
+      <avprule id="QoS-Information" type="Optional"/>
+      <avprule id="QoS-Negotiation" type="Optional"/>
+      <avprule id="QoS-Upgrade" type="Optional"/>
+      <avprule id="Default-EPS-Bearer-QoS" type="Optional"/>
+      <avprule id="AN-GW-Address" type="Optional" qual="0*2"/>
+      <avprule id="3GPP-SGSN-MCC-MNC" type="Optional"/>
+      <avprule id="3GPP-SGSN-Address" type="Optional"/>
+      <avprule id="3GPP-SGSN-IPv6-Address" type="Optional"/>
+      <avprule id="RAI" type="Optional"/>
+      <avprule id="3GPP-User-Location-Info" type="Optional"/>
+      <avprule id="3GPP-MS-TimeZone" type="Optional"/>
+      <avprule id="Called-Station-Id" type="Optional"/>
+      <avprule id="Bearer-Usage" type="Optional"/>
+      <avprule id="Online" type="Optional"/>
+      <avprule id="Offline" type="Optional"/>
+      <avprule id="3GPP-Charging-Characteristics" type="Optional"/>
+      <avprule id="Gx-Capability-List" type="Optional"/>
+      <avprule id="Rule-Space-Decision" type="Optional"/>
+      <avprule id="Rule-Space-Suggestion" type="Optional"/>
+      <avprule id="Charging-Rule-Report" type="Optional" qual="*"/>
+      <avprule id="Event-Trigger" type="Optional" qual="*"/>
+      <avprule id="Access-Network-Charging-Address" type="Optional"/>
+      <avprule id="Access-Network-Charging-Identifier-Gx" type="Optional" qual="*"/>
+      <avprule id="Usage-Monitoring-Information" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CC-Answer" code="272" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="CC-Request-Type" type="Mandatory"/>
+      <avprule id="CC-Request-Number" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Supported-Features" type="Optional" qual="*"/>
+      <avprule id="Bearer-Control-Mode" type="Optional"/>
+      <avprule id="Event-Trigger" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Charging-Rule-Remove" type="Optional" qual="*"/>
+      <avprule id="Charging-Rule-Install" type="Optional" qual="*"/>
+      <avprule id="Charging-Information" type="Optional"/>
+      <avprule id="Online" type="Optional"/>
+      <avprule id="Offline" type="Optional"/>
+      <avprule id="Content-Filtering-Profile-Id" type="Optional"/>
+      <avprule id="3GPP-Charging-Characteristics" type="Optional"/>
+      <avprule id="Gx-Capability-List" type="Optional"/>
+      <avprule id="QoS-Information" type="Optional"/>
+      <avprule id="Revalidation-Time" type="Optional"/>
+      <avprule id="Default-EPS-Bearer-QoS" type="Optional"/>
+      <avprule id="Customer-Id" type="Optional"/>
+      <avprule id="Usage-Monitoring-Information" type="Optional" qual="*"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASR" code="274" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASA" code="274" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="STR" code="275" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Termination-Cause" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="STA" code="275" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Class" type="Optional" qual="*"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="DWR" code="280" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DWA" code="280" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DPR" code="282" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Disconnect-Cause" type="Mandatory"/>
+   </command>
+   <command name="DPA" code="282" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+   </command>
+</dictionary>
diff --git a/example/diameter/launcher/resources/stack_examples/16777302.xml b/example/diameter/launcher/resources/stack_examples/16777302.xml
new file mode 100644 (file)
index 0000000..ce4e22d
--- /dev/null
@@ -0,0 +1,553 @@
+<dictionary name="DictionarySy | Application-Id: 16777302">
+   <vendor name="IETF" code="0"/>
+   <vendor name="3GPP" code="10415"/>
+   <avp name="User-Name" code="1" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Class" code="25" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Session-Timeout" code="27" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Proxy-State" code="33" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Session-Id" code="44" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Acct-Multi-Session-Id" code="50" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Event-Timestamp" code="55" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <avp name="Acct-Interim-Interval" code="85" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Host-IP-Address" code="257" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Address"/>
+   </avp>
+   <avp name="Auth-Application-Id" code="258" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Acct-Application-Id" code="259" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Specific-Application-Id" code="260" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory" qual="1*"/>
+         <avprule id="Auth-Application-Id" type="Optional"/>
+         <avprule id="Acct-Application-Id" type="Optional"/>
+      </grouped>
+   </avp>
+   <avp name="Redirect-Host-Usage" code="261" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-6">
+         <label data="0" alias="DONT_CACHE"/>
+         <label data="1" alias="ALL_SESSION"/>
+         <label data="2" alias="ALL_REALM"/>
+         <label data="3" alias="REALM_AND_APPLICATION"/>
+         <label data="4" alias="ALL_APPLICATION"/>
+         <label data="5" alias="ALL_HOST"/>
+         <label data="6" alias="ALL_USER"/>
+      </single>
+   </avp>
+   <avp name="Redirect-Max-Cache-Time" code="262" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Id" code="263" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Origin-Host" code="264" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Supported-Vendor-Id" code="265" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Vendor-Id" code="266" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Firmware-Revision" code="267" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Result-Code" code="268" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32">
+         <label data="1001" alias="DIAMETER_MULTI_ROUND_AUTH"/>
+         <label data="2001" alias="DIAMETER_SUCCESS"/>
+         <label data="2002" alias="DIAMETER_LIMITED_SUCCESS"/>
+         <label data="3001" alias="DIAMETER_COMMAND_UNSUPPORTED"/>
+         <label data="3002" alias="DIAMETER_UNABLE_TO_DELIVER"/>
+         <label data="3003" alias="DIAMETER_REALM_NOT_SERVED"/>
+         <label data="3004" alias="DIAMETER_TOO_BUSY"/>
+         <label data="3005" alias="DIAMETER_LOOP_DETECTED"/>
+         <label data="3006" alias="DIAMETER_REDIRECT_INDICATION"/>
+         <label data="3007" alias="DIAMETER_APPLICATION_UNSUPPORTED"/>
+         <label data="3008" alias="DIAMETER_INVALID_HDR_BITS"/>
+         <label data="3009" alias="DIAMETER_INVALID_AVP_BITS"/>
+         <label data="3010" alias="DIAMETER_UNKNOWN_PEER"/>
+         <label data="4001" alias="DIAMETER_AUTHENTICATION_REJECTED"/>
+         <label data="4002" alias="DIAMETER_OUT_OF_SPACE"/>
+         <label data="4003" alias="DIAMETER_ELECTION_LOST"/>
+         <label data="5001" alias="DIAMETER_AVP_UNSUPPORTED"/>
+         <label data="5002" alias="DIAMETER_UNKNOWN_SESSION_ID"/>
+         <label data="5003" alias="DIAMETER_AUTHORIZATION_REJECTED"/>
+         <label data="5004" alias="DIAMETER_INVALID_AVP_VALUE"/>
+         <label data="5005" alias="DIAMETER_MISSING_AVP"/>
+         <label data="5006" alias="DIAMETER_RESOURCES_EXCEEDED"/>
+         <label data="5007" alias="DIAMETER_CONTRADICTING_AVPS"/>
+         <label data="5008" alias="DIAMETER_AVP_NOT_ALLOWED"/>
+         <label data="5009" alias="DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"/>
+         <label data="5010" alias="DIAMETER_NO_COMMON_APPLICATION"/>
+         <label data="5011" alias="DIAMETER_UNSUPPORTED_VERSION"/>
+         <label data="5012" alias="DIAMETER_UNABLE_TO_COMPLY"/>
+         <label data="5013" alias="DIAMETER_INVALID_BIT_IN_HEADER"/>
+         <label data="5014" alias="DIAMETER_INVALID_AVP_LENGTH"/>
+         <label data="5015" alias="DIAMETER_INVALID_MESSAGE_LENGTH"/>
+         <label data="5016" alias="DIAMETER_INVALID_AVP_BIT_COMBO"/>
+         <label data="5017" alias="DIAMETER_NO_COMMON_SECURITY"/>
+         <label data="5030" alias="DIAMETER_USER_UNKNOWN"/>
+         <label data="5063" alias="REQUESTED_SERVICE_NOT_AUTHORIZED"/>
+         <label data="5065" alias="IP_CAN_SESSION_NOT_AVAILABLE"/>
+      </single>
+   </avp>
+   <avp name="Product-Name" code="269" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Session-Binding" code="270" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Session-Server-Failover" code="271" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-3">
+         <label data="0" alias="REFUSE_SERVICE"/>
+         <label data="1" alias="TRY_AGAIN"/>
+         <label data="2" alias="ALLOW_SERVICE"/>
+         <label data="3" alias="TRY_AGAIN_ALLOW_SERVICE"/>
+      </single>
+   </avp>
+   <avp name="Multi-Round-Time-Out" code="272" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Disconnect-Cause" code="273" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-2">
+         <label data="0" alias="REBOOTING"/>
+         <label data="1" alias="BUSY"/>
+         <label data="2" alias="DO_NOT_WANT_TO_TALK_TO_YOU"/>
+      </single>
+   </avp>
+   <avp name="Auth-Request-Type" code="274" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="AUTHENTICATE_ONLY"/>
+         <label data="2" alias="AUTHORIZE_ONLY"/>
+         <label data="3" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Auth-Grace-Period" code="276" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Auth-Session-State" code="277" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="STATE_MAINTAINED"/>
+         <label data="1" alias="NO_STATE_MAINTAINED"/>
+      </single>
+   </avp>
+   <avp name="Origin-State-Id" code="278" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Failed-AVP" code="279" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="1*"/>
+      </grouped>
+   </avp>
+   <avp name="Proxy-Host" code="280" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Message" code="281" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Route-Record" code="282" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Destination-Realm" code="283" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Proxy-Info" code="284" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Proxy-Host" type="Mandatory"/>
+         <avprule id="Proxy-State" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Re-Auth-Request-Type" code="285" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="AUTHORIZE_ONLY"/>
+         <label data="1" alias="AUTHORIZE_AUTHENTICATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Sub-Session-Id" code="287" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned64"/>
+   </avp>
+   <avp name="Redirect-Host" code="292" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterURI"/>
+   </avp>
+   <avp name="Destination-Host" code="293" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Error-Reporting-Host" code="294" may-encrypt="yes" v-bit="mustnot" m-bit="mustnot" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Termination-Cause" code="295" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-8">
+         <label data="1" alias="LOGOUT"/>
+         <label data="2" alias="SERVICE_NOT_PROVIDED"/>
+         <label data="3" alias="BAD_ANSWER"/>
+         <label data="4" alias="ADMINISTRATIVE"/>
+         <label data="5" alias="LINK_BROKEN"/>
+         <label data="6" alias="AUTH_EXPIRED"/>
+         <label data="7" alias="USER_MOVED"/>
+         <label data="8" alias="SESSION_TIMEOUT"/>
+      </single>
+   </avp>
+   <avp name="Origin-Realm" code="296" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="DiameterIdentity"/>
+   </avp>
+   <avp name="Experimental-Result" code="297" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Vendor-Id" type="Mandatory"/>
+         <avprule id="Experimental-Result-Code" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Experimental-Result-Code" code="298" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Inband-Security-Id" code="299" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="E2E-Sequence" code="300" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="AVP" type="Mandatory" qual="2*"/>
+      </grouped>
+   </avp>
+   <avp name="Logical-Access-ID" code="302" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="OctetString"/>
+   </avp>
+   <avp name="Physical-Access-ID" code="313" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Subscription-Id" code="443" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Subscription-Id-Type" type="Mandatory"/>
+         <avprule id="Subscription-Id-Data" type="Mandatory"/>
+      </grouped>
+   </avp>
+   <avp name="Subscription-Id-Data" code="444" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Subscription-Id-Type" code="450" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-4">
+         <label data="0" alias="END_USER_E164"/>
+         <label data="1" alias="END_USER_IMSI"/>
+         <label data="2" alias="END_USER_SIP_URI"/>
+         <label data="3" alias="END_USER_NAI"/>
+         <label data="4" alias="END_USER_PRIVATE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Type" code="480" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-4">
+         <label data="1" alias="EVENT_RECORD"/>
+         <label data="2" alias="START_RECORD"/>
+         <label data="3" alias="INTERIM_RECORD"/>
+         <label data="4" alias="STOP_RECORD"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Realtime-Required" code="483" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="1-3">
+         <label data="1" alias="DELIVER_AND_GRANT"/>
+         <label data="2" alias="GRANT_AND_STORE"/>
+         <label data="3" alias="GRANT_AND_LOSE"/>
+      </single>
+   </avp>
+   <avp name="Accounting-Record-Number" code="485" may-encrypt="yes" v-bit="mustnot" m-bit="must" p-bit="mustnot">
+      <single format-name="Unsigned32"/>
+   </avp>
+   <avp name="Policy-Counter-Identifier" code="2901" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Policy-Counter-Status" code="2902" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="UTF8String"/>
+   </avp>
+   <avp name="Policy-Counter-Status-Report" code="2903" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Policy-Counter-Identifier" type="Mandatory"/>
+         <avprule id="Policy-Counter-Status" type="Mandatory"/>
+         <avprule id="Pending-Policy-Counter-Information" type="Optional" qual="*"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="SL-Request-Type" code="2904" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Enumerated" enum="0-1">
+         <label data="0" alias="INITIAL_REQUEST"/>
+         <label data="1" alias="INTERMEDIATE_REQUEST"/>
+      </single>
+   </avp>
+   <avp name="Pending-Policy-Counter-Information" code="2905" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <grouped>
+         <avprule id="Policy-Counter-Status" type="Mandatory"/>
+         <avprule id="Pending-Policy-Counter-Change-Time" type="Mandatory"/>
+         <avprule id="AVP" type="Optional" qual="*"/>
+      </grouped>
+   </avp>
+   <avp name="Pending-Policy-Counter-Change-Time" code="2906" vendor-name="3GPP" may-encrypt="yes" v-bit="must" m-bit="must" p-bit="mustnot">
+      <single format-name="Time"/>
+   </avp>
+   <command name="CER" code="257" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="CEA" code="257" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Host-IP-Address" type="Mandatory" qual="1*"/>
+      <avprule id="Vendor-Id" type="Mandatory"/>
+      <avprule id="Product-Name" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Supported-Vendor-Id" type="Optional" qual="*"/>
+      <avprule id="Auth-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Inband-Security-Id" type="Optional" qual="*"/>
+      <avprule id="Acct-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional" qual="*"/>
+      <avprule id="Firmware-Revision" type="Optional"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RAR" code="258" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Re-Auth-Request-Type" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="RAA" code="258" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACR" code="271" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ACA" code="271" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Accounting-Record-Type" type="Mandatory"/>
+      <avprule id="Accounting-Record-Number" type="Mandatory"/>
+      <avprule id="Acct-Application-Id" type="Optional"/>
+      <avprule id="Vendor-Specific-Application-Id" type="Optional"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Accounting-Sub-Session-Id" type="Optional"/>
+      <avprule id="Acct-Session-Id" type="Optional"/>
+      <avprule id="Acct-Multi-Session-Id" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Acct-Interim-Interval" type="Optional"/>
+      <avprule id="Accounting-Realtime-Required" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Event-Timestamp" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASR" code="274" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ASA" code="274" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="User-Name" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ST-Request" code="275" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Termination-Cause" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="ST-Answer" code="275" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="DWR" code="280" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DWA" code="280" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+   </command>
+   <command name="DPR" code="282" type="Request">
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Disconnect-Cause" type="Mandatory"/>
+   </command>
+   <command name="DPA" code="282" type="Answer">
+      <avprule id="Result-Code" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="SL-Request" code="8388635" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="SL-Request-Type" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Subscription-Id" type="Optional" qual="*"/>
+      <avprule id="Policy-Counter-Identifier" type="Optional" qual="*"/>
+      <avprule id="Logical-Access-ID" type="Optional"/>
+      <avprule id="Physical-Access-ID" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="SL-Answer" code="8388635" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Policy-Counter-Status-Report" type="Optional" qual="*"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="SN-Request" code="8388636" type="Request">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Destination-Realm" type="Mandatory"/>
+      <avprule id="Destination-Host" type="Mandatory"/>
+      <avprule id="Auth-Application-Id" type="Mandatory"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Policy-Counter-Status-Report" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="Route-Record" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+   <command name="SN-Answer" code="8388636" type="Answer">
+      <avprule id="Session-Id" type="Fixed"/>
+      <avprule id="Origin-Host" type="Mandatory"/>
+      <avprule id="Origin-Realm" type="Mandatory"/>
+      <avprule id="Result-Code" type="Optional"/>
+      <avprule id="Experimental-Result" type="Optional"/>
+      <avprule id="Origin-State-Id" type="Optional"/>
+      <avprule id="Error-Message" type="Optional"/>
+      <avprule id="Error-Reporting-Host" type="Optional"/>
+      <avprule id="Redirect-Host" type="Optional" qual="*"/>
+      <avprule id="Redirect-Host-Usage" type="Optional"/>
+      <avprule id="Redirect-Max-Cache-Time" type="Optional"/>
+      <avprule id="Failed-AVP" type="Optional" qual="*"/>
+      <avprule id="Proxy-Info" type="Optional" qual="*"/>
+      <avprule id="AVP" type="Optional" qual="*"/>
+   </command>
+</dictionary>