From 699a9a56c4d95e1eaf566ccd1c8d4a67b4379b9f Mon Sep 17 00:00:00 2001 From: Raphael Riebl Date: Thu, 22 Nov 2018 14:27:06 +0100 Subject: [PATCH] networking: fix SecurityEntity setup and add smoke test Change-Id: I05b8ff255e883baa3512917571715878b4031d45 --- scenarios/artery/CMakeLists.txt | 1 + scenarios/artery/omnetpp.ini | 6 ++++++ src/artery/networking/Router.cc | 5 +++++ src/artery/networking/SecurityEntity.cc | 7 ++++++- src/artery/networking/SecurityEntity.h | 1 + src/artery/networking/SecurityEntity.ned | 2 +- 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/scenarios/artery/CMakeLists.txt b/scenarios/artery/CMakeLists.txt index 4daf44672..ff445d58b 100644 --- a/scenarios/artery/CMakeLists.txt +++ b/scenarios/artery/CMakeLists.txt @@ -1,5 +1,6 @@ add_opp_run(example CONFIG omnetpp.ini) add_opp_test(example SUFFIX inet CONFIG inet SIMTIME_LIMIT 20s) +add_opp_test(example SUFFIX security CONFIG inet_security SIMTIME_LIMIT 20s) add_opp_test(example SUFFIX inet-mixed-vehicles CONFIG inet_multiple_vehicle_types SIMTIME_LIMIT 20s) add_opp_test(example SUFFIX inet-rsu CONFIG inet_rsu SIMTIME_LIMIT 20s) add_opp_test(example SUFFIX veins CONFIG veins SIMTIME_LIMIT 20s) diff --git a/scenarios/artery/omnetpp.ini b/scenarios/artery/omnetpp.ini index 24c75a16d..7f9d63c9b 100644 --- a/scenarios/artery/omnetpp.ini +++ b/scenarios/artery/omnetpp.ini @@ -60,6 +60,12 @@ network = artery.inet.World *.node[*].middleware.services = xmldoc("services.xml") +[Config inet_security] +extends = inet + +*.node[*].vanetza.security.typename = "SecurityEntity" + + [Config inet_multiple_vehicle_types] extends = inet # see above for configuration of mapper's random number generator (rng) diff --git a/src/artery/networking/Router.cc b/src/artery/networking/Router.cc index 2f22e963e..442134c7a 100644 --- a/src/artery/networking/Router.cc +++ b/src/artery/networking/Router.cc @@ -43,6 +43,11 @@ void Router::initialize(int stage) mRouter.reset(new vanetza::geonet::Router(*runtime, mMIB)); mRouter->set_address(generateAddress()); // VehicleMiddleware determines station type at first stage + // register security entity if available + if (mSecurityEntity) { + mRouter->set_security_entity(mSecurityEntity); + } + // pass BTP-B messages to middleware which will dispatch them to its services using vanetza::geonet::UpperProtocol; mRouter->set_transport_handler(UpperProtocol::BTP_B, &mMiddleware->getTransportInterface()); diff --git a/src/artery/networking/SecurityEntity.cc b/src/artery/networking/SecurityEntity.cc index 6ef0f6fdf..00022195d 100644 --- a/src/artery/networking/SecurityEntity.cc +++ b/src/artery/networking/SecurityEntity.cc @@ -16,12 +16,17 @@ namespace artery Define_Module(SecurityEntity) +int SecurityEntity::numInitStages() const +{ + return 2; +} + void SecurityEntity::initialize(int stage) { if (stage == 0) { mRuntime = inet::findModuleFromPar(par("runtimeModule"), this); mPositionProvider = inet::findModuleFromPar(par("positionModule"), this); - + } else if (stage == 1){ mBackend = createBackend(par("CryptoBackend")); mCertificateProvider = createCertificateProvider(par("CertificateProvider")); mCertificateValidator = createCertificateValidator(par("CertificateValidator")); diff --git a/src/artery/networking/SecurityEntity.h b/src/artery/networking/SecurityEntity.h index 7c6d72dda..e58de46ae 100644 --- a/src/artery/networking/SecurityEntity.h +++ b/src/artery/networking/SecurityEntity.h @@ -25,6 +25,7 @@ class SecurityEntity : public omnetpp::cSimpleModule, public vanetza::security:: { public: // cSimpleModule + int numInitStages() const override; void initialize(int stage) override; void finish() override; diff --git a/src/artery/networking/SecurityEntity.ned b/src/artery/networking/SecurityEntity.ned index 4d155b7ed..09d2fbb4c 100644 --- a/src/artery/networking/SecurityEntity.ned +++ b/src/artery/networking/SecurityEntity.ned @@ -1,6 +1,6 @@ package artery.networking; -simple SecurityEntity +simple SecurityEntity like ISecurityEntity { parameters: @class(SecurityEntity);