Commit 612d5878 authored by gauthier's avatar gauthier

Removed from this repo epc xsl files, commiting for sync

parent 0397ba15
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
################################################################################ ################################################################################
# file build_helper # file build_helper
# brief # brief
# author Laurent Thomas # authors Laurent Thomas, Lionel GAUTHIER
# #
####################################### #######################################
SUDO='sudo -E' SUDO='sudo -E'
...@@ -301,6 +301,183 @@ install_nas_tools() { ...@@ -301,6 +301,183 @@ install_nas_tools() {
fi fi
} }
#################################################
# 3. Network interfaces utilities
################################################
cidr2mask(){
local i mask=""
local full_octets=$(($1/8))
local partial_octet=$(($1%8))
for ((i=0;i<4;i+=1)); do
if [ $i -lt $full_octets ]; then
mask+=255
elif [ $i -eq $full_octets ]; then
mask+=$((256 - 2**(8-$partial_octet)))
else
mask+=0
fi
test $i -lt 3 && mask+=.
done
echo $mask
}
# example: netcalc 192.168.12.100 255.255.255.0
netcalc(){
local IFS='.' ip i
local -a oct msk
read -ra oct <<<"$1"
read -ra msk <<<"$2"
for i in ${!oct[@]}; do
ip+=( "$(( oct[i] & msk[i] ))" )
done
echo "${ip[*]}"
}
# example:
bcastcalc(){
local IFS='.' ip i
local -a oct msk
read -ra oct <<<"$1"
read -ra msk <<<"$2"
for i in ${!oct[@]}; do
ip+=( "$(( oct[i] + ( 255 - ( oct[i] | msk[i] ) ) ))" )
done
echo "${ip[*]}"
}
is_real_interface(){
my_bool=1
for var in "$@"
do
if [ "a$var" == "a" ]; then
return 0
fi
if [ "a$var" == "anone" ]; then
return 0
fi
IF=`cat /etc/udev/rules.d/70-persistent-net.rules | grep $var | sed 's/^.*NAME=//' | tr -d '"'`
if [ "$IF" == "$var" ]; then
if [ "a${var:0:3}" != "aeth" ]; then
if [ "a${var:0:4}" != "awlan" ]; then
if [ "a${var:0:4}" != "awifi" ]; then
my_bool=0;
fi
fi
fi
fi
done
return $my_bool
}
is_virtual_interface(){
my_bool=1
for var in "$@"
do
if [ "a$var" == "a" ]; then
return 0
fi
if [ "a$var" == "anone" ]; then
return 0
fi
num=`expr index "$var" :`
if [ $num -eq 0 ]; then
my_bool=0;
fi
done
return $my_bool
}
# arg1 = interface name
# arg2 = ipv4 addr cidr
set_interface_up(){
interface=$1
address=${2%/*} #part before '/'
cidr_netmask=${2#*/} # part after '/'
if [ "a${interface:0:4}" == "anone" ]; then
return;
fi
echo "ifconfig $interface up"
$SUDO ifconfig $interface up
sync
netmask=`cidr2mask $cidr_netmask`
broadcast=`bcastcalc $address $netmask`
echo "ip -4 addr add $address/$cidr_netmask broadcast $broadcast dev $interface"
$SUDO ip -4 addr add $address/$cidr_netmask broadcast $broadcast dev $interface
sync
}
# arg1 = interface name
# arg2 = ipv4 addr cidr
set_virtual_interface_up(){
interface=$1
address=${2%/*} #part before '/'
cidr_netmask=${2#*/} # part after '/'
if [ "a${interface:0:4}" == "anone" ]; then
return;
fi
$SUDO ifconfig $interface down > /dev/null 2>&1
sync
echo "ifconfig $interface $address up"
$SUDO ifconfig $interface $address up
sync
}
#arg1 is interface name
#arg2 is IP address (CIDR)
set_network_interface(){
local interface_name=$1
local ip_cidr=$2
is_virtual_interface $interface_name
if [ $? -eq 1 ]; then
echo "$interface_name is virtual interface"
set_virtual_interface_up $interface_name $ip_cidr
else
is_real_interface $interface_name
if [ $? -eq 1 ]; then
echo "$interface_name is real interface"
set_interface_up $interface_name $ip_cidr
else
echo_warning "$interface_name not handled, not configuring it"
return
fi
fi
}
# arg1 is a 'libconfig-like' config file
set_epc_network_interfaces(){
value="`cat $1 | cut -d "#" -f1 | grep 'ADDRESS\|INTERFACE' | tr -d " " | grep "="`"
eval $value
# check all var names are correct
list_var_name="\
ENB_INTERFACE_NAME_FOR_S1_MME ENB_IPV4_ADDRESS_FOR_S1_MME \
ENB_INTERFACE_NAME_FOR_S1U ENB_IPV4_ADDRESS_FOR_S1U "
for var_name in $list_var_name
do
if [ -n "$${var_name}" ]; then
echo_success "Found ${var_name} = ${!var_name}"
else
echo_fatal "${var_name} does does not exist in your config file $1"
fi
done
# configure interfaces
set_network_interface $ENB_INTERFACE_NAME_FOR_S1_MME $ENB_IPV4_ADDRESS_FOR_S1_MME
set_network_interface $ENB_INTERFACE_NAME_FOR_S1U $ENB_IPV4_ADDRESS_FOR_S1U
}
......
...@@ -148,7 +148,6 @@ function main() ...@@ -148,7 +148,6 @@ function main()
$SUDO cp -upv test_epc_generate_scenario /usr/local/bin $SUDO cp -upv test_epc_generate_scenario /usr/local/bin
$SUDO cp -upv test_epc_play_scenario /usr/local/bin $SUDO cp -upv test_epc_play_scenario /usr/local/bin
$SUDO cp -upv $OPENAIR_DIR/openair3/TEST/EPC_TEST/mme_test_s1_pcap2pdml /usr/local/bin
} }
......
...@@ -97,7 +97,6 @@ ...@@ -97,7 +97,6 @@
#define ENB_CONFIG_MAX_XSLT_PARAMS 32 #define ENB_CONFIG_MAX_XSLT_PARAMS 32
Enb_properties_array_t g_enb_properties; Enb_properties_array_t g_enb_properties;
char *g_openair_dir = NULL;
char *g_test_dir = NULL; char *g_test_dir = NULL;
char *g_pdml_in_origin = NULL; char *g_pdml_in_origin = NULL;
extern int xmlLoadExtDtdDefaultValue; extern int xmlLoadExtDtdDefaultValue;
...@@ -195,17 +194,13 @@ int generate_test_scenario(const char const * test_nameP, const char const * pdm ...@@ -195,17 +194,13 @@ int generate_test_scenario(const char const * test_nameP, const char const * pdm
exit(1); exit(1);
} }
memset(astring, 0, sizeof(astring));
strcat(astring, g_openair_dir);
strcat(astring, "/openair3/TEST/EPC_TEST/generic_scenario.xsl");
xmlSubstituteEntitiesDefault(1); xmlSubstituteEntitiesDefault(1);
xmlLoadExtDtdDefaultValue = 1; xmlLoadExtDtdDefaultValue = 1;
cur = xsltParseStylesheetFile(astring); cur = xsltParseStylesheetFile("/usr/share/oai/xsl/generic_scenario.xsl");
if (NULL == cur) { if (NULL == cur) {
AssertFatal (0, "Could not parse stylesheet file %s (check OPENAIR_DIR env variable)!\n", astring); AssertFatal (0, "Could not parse stylesheet file /usr/share/oai/xsl/generic_scenario.xsl!\n");
} else { } else {
fprintf(stdout, "XSLT style sheet: %s\n", astring); fprintf(stdout, "XSLT style sheet: /usr/share/oai/xsl/generic_scenario.xsl\n");
} }
doc = xmlParseFile(pdml_in_basenameP); doc = xmlParseFile(pdml_in_basenameP);
...@@ -686,12 +681,6 @@ int main( int argc, char **argv ) ...@@ -686,12 +681,6 @@ int main( int argc, char **argv )
{ {
int actions = 0; int actions = 0;
g_openair_dir = getenv("OPENAIR_DIR");
if (NULL == g_openair_dir) {
fprintf(stderr, "Error: Could not get OPENAIR_DIR environment variable\n");
exit(1);
}
memset((char*) &g_enb_properties, 0 , sizeof(g_enb_properties)); memset((char*) &g_enb_properties, 0 , sizeof(g_enb_properties));
actions = config_parse_opt_line (argc, argv); //Command-line options actions = config_parse_opt_line (argc, argv); //Command-line options
......
This diff is collapsed.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import subprocess
import re
import socket
import datetime
from datetime import date
import os, errno
import argparse
import tempfile
from lxml import etree
from xml.dom.minidom import parse, parseString
#####################
# program arguments
#####################
parser = argparse.ArgumentParser()
parser.add_argument("--pcap_file", "-p", type=str,help="input pcap file to be translated")
args = parser.parse_args()
#####################
# get xml document from pcap
#####################
orig_pcap_file_name = args.pcap_file.strip()
orig_pdml_string = subprocess.check_output(["tshark", '-T', 'pdml', '-r', orig_pcap_file_name])
orig_dom = parseString(orig_pdml_string)
#####################
# filtering unwanted packets
#####################
#cases = orig_etree.findall(".//proto[@name='sctp']")
packets = orig_dom.getElementsByTagName("packet")
for packet in packets:
found_sctp = False
found_s1ap = False
sctp_node = None
frame_node = None
ip_node = None
protos = packet.getElementsByTagName("proto")
for proto in protos:
attrs = proto.attributes
urlnode = attrs['name']
if urlnode.nodeValue == 'frame':
frame_node = proto
elif urlnode.nodeValue == 'ip':
frame_node.appendChild(proto)
ip_node = proto
elif urlnode.nodeValue == 'sctp':
found_sctp = True
ip_node.appendChild(proto)
sctp_node = proto
elif urlnode.nodeValue == 's1ap':
found_s1ap = True
sctp_node.appendChild(proto)
elif urlnode.nodeValue == 'geninfo':
packet.removeChild(proto)
elif urlnode.nodeValue == 'eth':
packet.removeChild(proto)
if found_sctp == False:
# hopefully it seems to work (remove iterated packet)
packet.parentNode.removeChild(packet)
#####################
# dom to xml string
#####################
filtered_pdml_string = orig_dom.toprettyxml(indent=" ")
cleaned_pdml_string = ""
#####################
# remove blank lines in xml string
#####################
lines = filtered_pdml_string.splitlines()
for line in lines:
if len(line.strip()):
if line[:-1]:
cleaned_pdml_string += line + '\r\n'
#print "'%s'" % cleaned_pdml_string
#####################
# write pdml string to pdml file
#####################
out_pdml_file_name = os.path.dirname(orig_pcap_file_name) + '/' + os.path.splitext(os.path.basename(orig_pcap_file_name))[0] + '.pdml'
out_file = open(out_pdml_file_name, "w")
out_file.write(cleaned_pdml_string)
out_file.close()
############################################################
# DECEIVING HTML BONUS: DO NOT SEEM TO WORK CORRECTLY IN FIREFOX
# DID NOT INVESTIGATE
#####################
# write xml string to html file
#####################
xsl_root = etree.fromstring(open('/usr/share/wireshark/pdml2html.xsl').read())
transform = etree.XSLT(xsl_root)
xml_root = etree.fromstring(cleaned_pdml_string)
trans_root = transform(xml_root)
filtered_html_string = etree.tostring(trans_root)
#####################
# write html string to html file
#####################
out_html_file_name = os.path.dirname(orig_pcap_file_name) + '/' +os.path.splitext(os.path.basename(orig_pcap_file_name))[0] + '.html'
out_file = open(out_html_file_name, "w")
out_file.write(filtered_html_string)
out_file.close()
...@@ -68,7 +68,6 @@ ...@@ -68,7 +68,6 @@
#define GS_IS_FILE 1 #define GS_IS_FILE 1
#define GS_IS_DIR 2 #define GS_IS_DIR 2
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
char *g_openair_dir = NULL;
Enb_properties_array_t g_enb_properties; Enb_properties_array_t g_enb_properties;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
extern et_scenario_t *g_scenario; extern et_scenario_t *g_scenario;
...@@ -936,11 +935,6 @@ int main( int argc, char **argv ) ...@@ -936,11 +935,6 @@ int main( int argc, char **argv )
char play_scenario_filename[NAME_MAX]; char play_scenario_filename[NAME_MAX];
memset(play_scenario_filename, 0, sizeof(play_scenario_filename)); memset(play_scenario_filename, 0, sizeof(play_scenario_filename));
g_openair_dir = getenv("OPENAIR_DIR");
if (NULL == g_openair_dir) {
fprintf(stderr, "ERROR: Could not get OPENAIR_DIR environment variable\n");
exit(1);
}
// logging // logging
logInit(); logInit();
......
...@@ -252,6 +252,7 @@ typedef struct et_s1ap_s { ...@@ -252,6 +252,7 @@ typedef struct et_s1ap_s {
uint16_t binary_stream_allocated_size; uint16_t binary_stream_allocated_size;
uint8_t *binary_stream; uint8_t *binary_stream;
s1ap_message message; // decoded message: information elements s1ap_message message; // decoded message: information elements
xmlNodePtr xml_node; // XML representation of the S1AP PDU
} et_s1ap_t; } et_s1ap_t;
...@@ -418,7 +419,7 @@ void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p); ...@@ -418,7 +419,7 @@ void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p);
struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(s1ap_eNB_instance_t *instance_p,int32_t assoc_id, uint16_t cnx_id); struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(s1ap_eNB_instance_t *instance_p,int32_t assoc_id, uint16_t cnx_id);
s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance); s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance);
void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,uint32_t buffer_length, uint16_t stream); void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,uint32_t buffer_length, uint16_t stream);
int et_handle_s1ap_mismatch(et_packet_t * const spacket, et_packet_t * const rx_packet); int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet);
asn_comp_rval_t* et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints); asn_comp_rval_t* et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints);
et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const s1ap_data_ind); et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const s1ap_data_ind);
int et_scenario_set_packet_received(et_packet_t * const packet); int et_scenario_set_packet_received(et_packet_t * const packet);
......
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:output
method="xml"
indent="yes"
encoding="iso-8859-1"
/>
<!-- Ugly but no time to find a better way in XSLT 1.0 (map/list)-->
<xsl:param name="enb0_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb1_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb2_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb3_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb4_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb5_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb6_s1c" select="'0.0.0.0'"/>
<xsl:param name="enb7_s1c" select="'0.0.0.0'"/>
<xsl:param name="mme0_s1c_0" select="'0.0.0.0'"/>
<xsl:param name="mme0_s1c_1" select="'0.0.0.0'"/>
<xsl:param name="mme0_s1c_2" select="'0.0.0.0'"/>
<xsl:param name="mme0_s1c_3" select="'0.0.0.0'"/>
<xsl:param name="mme1_s1c_0" select="'0.0.0.0'"/>
<xsl:param name="mme1_s1c_1" select="'0.0.0.0'"/>
<xsl:param name="mme1_s1c_2" select="'0.0.0.0'"/>
<xsl:param name="mme1_s1c_3" select="'0.0.0.0'"/>
<xsl:param name="mme2_s1c_0" select="'0.0.0.0'"/>
<xsl:param name="mme2_s1c_1" select="'0.0.0.0'"/>
<xsl:param name="mme2_s1c_2" select="'0.0.0.0'"/>
<xsl:param name="mme2_s1c_3" select="'0.0.0.0'"/>
<xsl:param name="mme3_s1c_0" select="'0.0.0.0'"/>
<xsl:param name="mme3_s1c_1" select="'0.0.0.0'"/>
<xsl:param name="mme3_s1c_2" select="'0.0.0.0'"/>
<xsl:param name="mme3_s1c_3" select="'0.0.0.0'"/>
<xsl:template match="ip.src[parent::packet]/@value">
<xsl:choose>
<xsl:when test=".='enb0_s1c'"><xsl:value-of select="$enb0_s1c"/></xsl:when>
<xsl:when test=".='enb1_s1c'"><xsl:value-of select="$enb1_s1c"/></xsl:when>
<xsl:when test=".='enb2_s1c'"><xsl:value-of select="$enb2_s1c"/></xsl:when>
<xsl:when test=".='enb3_s1c'"><xsl:value-of select="$enb3_s1c"/></xsl:when>
<xsl:when test=".='enb4_s1c'"><xsl:value-of select="$enb4_s1c"/></xsl:when>
<xsl:when test=".='enb5_s1c'"><xsl:value-of select="$enb5_s1c"/></xsl:when>
<xsl:when test=".='enb6_s1c'"><xsl:value-of select="$enb6_s1c"/></xsl:when>
<xsl:when test=".='enb7_s1c'"><xsl:value-of select="$enb7_s1c"/></xsl:when>
<xsl:when test=".='mme0_s1c_0'"><xsl:value-of select="$mme0_s1c_0"/></xsl:when>
<xsl:when test=".='mme0_s1c_1'"><xsl:value-of select="$mme0_s1c_1"/></xsl:when>
<xsl:when test=".='mme0_s1c_2'"><xsl:value-of select="$mme0_s1c_2"/></xsl:when>
<xsl:when test=".='mme0_s1c_3'"><xsl:value-of select="$mme0_s1c_3"/></xsl:when>
<xsl:when test=".='mme1_s1c_0'"><xsl:value-of select="$mme1_s1c_0"/></xsl:when>
<xsl:when test=".='mme1_s1c_1'"><xsl:value-of select="$mme1_s1c_1"/></xsl:when>
<xsl:when test=".='mme1_s1c_2'"><xsl:value-of select="$mme1_s1c_2"/></xsl:when>
<xsl:when test=".='mme1_s1c_3'"><xsl:value-of select="$mme1_s1c_3"/></xsl:when>
<xsl:when test=".='mme2_s1c_0'"><xsl:value-of select="$mme2_s1c_0"/></xsl:when>
<xsl:when test=".='mme2_s1c_1'"><xsl:value-of select="$mme2_s1c_1"/></xsl:when>
<xsl:when test=".='mme2_s1c_2'"><xsl:value-of select="$mme2_s1c_2"/></xsl:when>
<xsl:when test=".='mme2_s1c_3'"><xsl:value-of select="$mme2_s1c_3"/></xsl:when>
<xsl:when test=".='mme3_s1c_0'"><xsl:value-of select="$mme3_s1c_0"/></xsl:when>
<xsl:when test=".='mme3_s1c_1'"><xsl:value-of select="$mme3_s1c_1"/></xsl:when>
<xsl:when test=".='mme3_s1c_2'"><xsl:value-of select="$mme3_s1c_2"/></xsl:when>
<xsl:when test=".='mme3_s1c_3'"><xsl:value-of select="$mme3_s1c_3"/></xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">ERROR: Cannot resolv IP <xsl:value-of select="."/> !
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="ip.dst[parent::packet]/@value">
<xsl:choose>
<xsl:when test=".='enb0_s1c'"><xsl:value-of select="$enb0_s1c"/></xsl:when>
<xsl:when test=".='enb1_s1c'"><xsl:value-of select="$enb1_s1c"/></xsl:when>
<xsl:when test=".='enb2_s1c'"><xsl:value-of select="$enb2_s1c"/></xsl:when>
<xsl:when test=".='enb3_s1c'"><xsl:value-of select="$enb3_s1c"/></xsl:when>
<xsl:when test=".='enb4_s1c'"><xsl:value-of select="$enb4_s1c"/></xsl:when>
<xsl:when test=".='enb5_s1c'"><xsl:value-of select="$enb5_s1c"/></xsl:when>
<xsl:when test=".='enb6_s1c'"><xsl:value-of select="$enb6_s1c"/></xsl:when>
<xsl:when test=".='enb7_s1c'"><xsl:value-of select="$enb7_s1c"/></xsl:when>
<xsl:when test=".='mme0_s1c_0'"><xsl:value-of select="$mme0_s1c_0"/></xsl:when>
<xsl:when test=".='mme0_s1c_1'"><xsl:value-of select="$mme0_s1c_1"/></xsl:when>
<xsl:when test=".='mme0_s1c_2'"><xsl:value-of select="$mme0_s1c_2"/></xsl:when>
<xsl:when test=".='mme0_s1c_3'"><xsl:value-of select="$mme0_s1c_3"/></xsl:when>
<xsl:when test=".='mme1_s1c_0'"><xsl:value-of select="$mme1_s1c_0"/></xsl:when>
<xsl:when test=".='mme1_s1c_1'"><xsl:value-of select="$mme1_s1c_1"/></xsl:when>
<xsl:when test=".='mme1_s1c_2'"><xsl:value-of select="$mme1_s1c_2"/></xsl:when>
<xsl:when test=".='mme1_s1c_3'"><xsl:value-of select="$mme1_s1c_3"/></xsl:when>
<xsl:when test=".='mme2_s1c_0'"><xsl:value-of select="$mme2_s1c_0"/></xsl:when>
<xsl:when test=".='mme2_s1c_1'"><xsl:value-of select="$mme2_s1c_1"/></xsl:when>
<xsl:when test=".='mme2_s1c_2'"><xsl:value-of select="$mme2_s1c_2"/></xsl:when>
<xsl:when test=".='mme2_s1c_3'"><xsl:value-of select="$mme2_s1c_3"/></xsl:when>
<xsl:when test=".='mme3_s1c_0'"><xsl:value-of select="$mme3_s1c_0"/></xsl:when>
<xsl:when test=".='mme3_s1c_1'"><xsl:value-of select="$mme3_s1c_1"/></xsl:when>
<xsl:when test=".='mme3_s1c_2'"><xsl:value-of select="$mme3_s1c_2"/></xsl:when>
<xsl:when test=".='mme3_s1c_3'"><xsl:value-of select="$mme3_s1c_3"/></xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">ERROR: Cannot resolv IP <xsl:value-of select="."/> !
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
...@@ -58,7 +58,6 @@ ...@@ -58,7 +58,6 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#define ENB_CONFIG_MAX_XSLT_PARAMS 32 #define ENB_CONFIG_MAX_XSLT_PARAMS 32
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
extern char *g_openair_dir;
extern Enb_properties_array_t g_enb_properties; extern Enb_properties_array_t g_enb_properties;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * const s1ap) void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * const s1ap)
...@@ -71,6 +70,9 @@ void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * co ...@@ -71,6 +70,9 @@ void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * co
unsigned int go_deeper_in_tree = 1; unsigned int go_deeper_in_tree = 1;
if ((NULL != s1ap_node) && (NULL != s1ap)) { if ((NULL != s1ap_node) && (NULL != s1ap)) {
// seee http://www.xmlsoft.org/html/libxml-tree.html#xmlCopyNode
s1ap->xml_node = xmlCopyNode(s1ap_node, 1);
AssertFatal(NULL != s1ap->xml_node, "xmlCopyNode Failed");
for (cur_node = (xmlNode *)s1ap_node; cur_node; cur_node = cur_node->next) { for (cur_node = (xmlNode *)s1ap_node; cur_node; cur_node = cur_node->next) {
go_deeper_in_tree = 1; go_deeper_in_tree = 1;
if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"field"))) { if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"field"))) {
...@@ -497,17 +499,14 @@ int et_generate_xml_scenario( ...@@ -497,17 +499,14 @@ int et_generate_xml_scenario(
exit(1); exit(1);
} }
memset(astring, 0, sizeof(astring));
strcat(astring, g_openair_dir);
strcat(astring, "/openair3/TEST/EPC_TEST/play_scenario.xsl");
xmlSubstituteEntitiesDefault(1); xmlSubstituteEntitiesDefault(1);
xmlLoadExtDtdDefaultValue = 1; xmlLoadExtDtdDefaultValue = 1;
cur = xsltParseStylesheetFile((const xmlChar *)astring); cur = xsltParseStylesheetFile((const xmlChar *)"/usr/share/oai/xsl/play_scenario.xsl");
if (NULL == cur) { if (NULL == cur) {
AssertFatal (0, "Could not parse stylesheet file %s (check OPENAIR_DIR env variable)!\n", astring); AssertFatal (0, "Could not parse stylesheet file /usr/share/oai/xsl/play_scenario.xsl!\n");
} else { } else {
fprintf(stdout, "XSLT style sheet: %s\n", astring); fprintf(stdout, "XSLT style sheet: /usr/share/oai/xsl/play_scenario.xsl\n");
} }
doc = xmlParseFile(xml_in_scenario_filename); doc = xmlParseFile(xml_in_scenario_filename);
......
...@@ -189,7 +189,7 @@ void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, ...@@ -189,7 +189,7 @@ void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id,
itti_send_msg_to_task(TASK_SCTP, instance, message_p); itti_send_msg_to_task(TASK_SCTP, instance, message_p);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int et_handle_s1ap_mismatch(et_packet_t * const spacket, et_packet_t * const rx_packet) int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet)
{ {
S1ap_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0; S1ap_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0;
S1ap_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id = 0; S1ap_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id = 0;
...@@ -512,7 +512,15 @@ int et_handle_s1ap_mismatch(et_packet_t * const spacket, et_packet_t * const rx_ ...@@ -512,7 +512,15 @@ int et_handle_s1ap_mismatch(et_packet_t * const spacket, et_packet_t * const rx_
default: default:
AssertFatal(0, "Unknown procedure code %ld", rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode); AssertFatal(0, "Unknown procedure code %ld", rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode);
} }
return 0; if (scenario_mme_ue_s1ap_id != rx_mme_ue_s1ap_id) {
et_packet_t * p = spacket;
while (p) {
et_s1ap_update_mme_ue_s1ap_id(p, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
p = p->next;
}
return 0;
}
return 1;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
asn_comp_rval_t * et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints) asn_comp_rval_t * et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints)
...@@ -669,7 +677,7 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind) ...@@ -669,7 +677,7 @@ int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
//TODO MME_UE_S1AP_ID, etc. //TODO MME_UE_S1AP_ID, etc.
// get latest error code // get latest error code
if (strcmp(comp_results->name, "S1ap-MME-UE-S1AP-ID") == 0) { if (strcmp(comp_results->name, "S1ap-MME-UE-S1AP-ID") == 0) {
if (0 == et_handle_s1ap_mismatch((et_packet_t *const)packet, (et_packet_t *const)rx_packet)) { if (0 == et_handle_s1ap_mismatch_mme_ue_s1ap_id((et_packet_t *const)packet, (et_packet_t *const)rx_packet)) {
packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec; packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec;
packet->timestamp_packet.tv_usec = rx_packet->timestamp_packet.tv_usec; packet->timestamp_packet.tv_usec = rx_packet->timestamp_packet.tv_usec;
return et_scenario_set_packet_received(packet); return et_scenario_set_packet_received(packet);
......
...@@ -131,7 +131,7 @@ eNBs = ...@@ -131,7 +131,7 @@ eNBs =
////////// MME parameters: ////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.188.2.2"; mme_ip_address = ( { ipv4 = "192.170.0.1";
ipv6 = "192:168:30::17"; ipv6 = "192:168:30::17";
active = "yes"; active = "yes";
preference = "ipv4"; preference = "ipv4";
...@@ -140,12 +140,12 @@ eNBs = ...@@ -140,12 +140,12 @@ eNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
ENB_INTERFACE_NAME_FOR_S1_MME = "tun2"; ENB_INTERFACE_NAME_FOR_S1_MME = "eth0:3";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.188.2.2/24"; ENB_IPV4_ADDRESS_FOR_S1_MME = "192.170.0.2/24";
ENB_INTERFACE_NAME_FOR_S1U = "lo"; ENB_INTERFACE_NAME_FOR_S1U = "eth0:4";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.1/24"; ENB_IPV4_ADDRESS_FOR_S1U = "192.170.1.2/24";
ENB_PORT_FOR_S1U = 2153; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
log_config : log_config :
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment