diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 6b5c51870c3663afda4c39eeec290856b4cb58d3..6b9dae6b0447aae3551035e2c7f54cfd8b6005ff 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1332,6 +1332,9 @@ include(FindPkgConfig) pkg_search_module(LIBXML2 libxml-2.0 REQUIRED) include_directories(${LIBXML2_INCLUDE_DIRS}) +pkg_search_module(LIBXSLT libxslt REQUIRED) +include_directories(${LIBXSLT_INCLUDE_DIRS}) + pkg_search_module(OPENSSL openssl REQUIRED) include_directories(${OPENSSL_INCLUDE_DIRS}) @@ -1620,7 +1623,7 @@ add_executable(test_epc_generate_scenario ${OPENAIR_BIN_DIR}/messages_xml.h ) target_link_libraries (test_epc_generate_scenario - -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} + -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} ) diff --git a/openair3/TEST/EPC_TEST/generate_scenario.c b/openair3/TEST/EPC_TEST/generate_scenario.c index 913533218e0a189e9e93405b2032cfefc394d0f1..6843766f95450f622ed39fd136ddd75f56adb4d9 100644 --- a/openair3/TEST/EPC_TEST/generate_scenario.c +++ b/openair3/TEST/EPC_TEST/generate_scenario.c @@ -43,15 +43,22 @@ #include <unistd.h> #include <errno.h> #include <fcntl.h> - +#include <libxml/xmlmemory.h> +#include <libxml/debugXML.h> +#include <libxml/HTMLtree.h> +#include <libxml/xmlIO.h> +#include <libxml/DOCBparser.h> +#include <libxml/xinclude.h> +#include <libxml/catalog.h> +#include <libxslt/xslt.h> +#include <libxslt/xsltInternals.h> +#include <libxslt/transform.h> +#include <libxslt/xsltutils.h> #include "assertions.h" #include "generate_scenario.h" #include "s1ap_eNB.h" -#if defined(ENABLE_ITTI) -# include "intertask_interface.h" -#endif - +#include "intertask_interface.h" #define ENB_CONFIG_STRING_ACTIVE_ENBS "Active_eNBs" @@ -85,23 +92,44 @@ #define ENB_CONFIG_PROPERTIES_INDEX_OLD 0 #define ENB_CONFIG_PROPERTIES_INDEX_NEW 1 +#define ENB_CONFIG_MAX_XSLT_PARAMS 64 + Enb_properties_array_t g_enb_properties[2]; char *g_test_dir = "."; // default value char *g_pdml_in_basename = "trace.pdml"; // default value - +extern int xmlLoadExtDtdDefaultValue; //------------------------------------------------------------------------------ void generate_scenario(const char const * pdml_in_basenameP) //------------------------------------------------------------------------------ { - int fd_pdml_in; + //int fd_pdml_in; + xsltStylesheetPtr cur = NULL; + xmlDocPtr doc, res; + const char *params[ENB_CONFIG_MAX_XSLT_PARAMS]; + int nb_params = 0; + if (chdir(g_test_dir) == 0) { printf( "working in %s directory\n", g_test_dir); - fd_pdml_in = open(pdml_in_basenameP, O_RDONLY); + /*fd_pdml_in = open(pdml_in_basenameP, O_RDONLY); AssertFatal (fd_pdml_in > 0, "Error while opening %s file in directory %s\n", pdml_in_basenameP, - g_test_dir); - + g_test_dir);*/ + + params[nb_params] = NULL; + xmlSubstituteEntitiesDefault(1); + xmlLoadExtDtdDefaultValue = 1; + cur = xsltParseStylesheetFile("enb_config.xsl"); + doc = xmlParseFile(pdml_in_basenameP); + res = xsltApplyStylesheet(cur, doc, params); + xsltSaveResultToFile(stdout, res, cur); + + xsltFreeStylesheet(cur); + xmlFreeDoc(res); + xmlFreeDoc(doc); + + xsltCleanupGlobals(); + xmlCleanupParser(); } else { printf("Error: chdir %s returned %s\n", g_test_dir, strerror(errno)); exit(-1);