Loading ccsrc/Protocols/CAM/cam_layer.cc +3 −3 Original line number Diff line number Diff line Loading @@ -102,10 +102,10 @@ void cam_layer::receive_data(OCTETSTRING& data, params& params) p.btpInfo().set_to_omit(); } // ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { OCTETSTRING os(it->second.length(), (const unsigned char *)(it->second.c_str())); p.ssp() = oct2bit(os); loggers::get_instance().log("cam_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { p.ssp().set_to_omit(); } Loading ccsrc/Protocols/DENM/denm_layer.cc +3 −3 Original line number Diff line number Diff line Loading @@ -101,10 +101,10 @@ void denm_layer::receive_data(OCTETSTRING& data, params& params) p.btpInfo().set_to_omit(); } // ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { OCTETSTRING os(it->second.length(), (const unsigned char *)(it->second.c_str())); p.ssp() = oct2bit(os); loggers::get_instance().log("denm_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { p.ssp().set_to_omit(); } Loading ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc +24 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ #include "geonetworking_codec.hh" #include "loggers.hh" #include "etsi_ts103097_data_codec.hh" #include "LibItsGeoNetworking_TypesAndValues.hh" template <typename T_type> class OPTIONAL; Loading Loading @@ -66,6 +68,10 @@ int geonetworking_codec::encode_ (const Base_Type& type, const TTCN_Typedescript for(int i = 0; i < r.get_count(); i++) { loggers::get_instance().log("geonetworking_codec::encode_: processing %s/%s/%s - %d (1 ==> use dynamic_cast<const OPTIONAL<...>) - %d", r.fld_name(i), r.fld_descr(i)->name, r.get_at(i)->get_descriptor()->name, r.get_at(i)->is_optional(), r.get_at(i)->is_present()); if (r.get_at(i)->is_present()) { if ((_ec.basic_header == 0x02) && (std::string(r.fld_descr(i)->name).compare("@LibItsGeoNetworking_TypesAndValues.GeoNetworkingPacket.packet") == 0)) { // Encoding secured GeoNetworking packet, unsecured GN message was already encoded using encvalue loggers::get_instance().log("geonetworking_codec::encode_: Skip it"); continue; } if (encode_(*r.get_at(i), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("geonetworking_codec::encode_: -1 result code returned"); return -1; Loading Loading @@ -95,9 +101,25 @@ int geonetworking_codec::encode_ (const Base_Type& type, const TTCN_Typedescript loggers::get_instance().log("geonetworking_codec::encode_: Storing payload length %d for %s", _ec.length, p.get_descriptor()->name); } } } else if (std::string(field_descriptor.name).compare("@EtsiTs103097Module.EtsiTs103097Data") == 0) { const EtsiTs103097Module::EtsiTs103097Data& ieee_1609dot2_data = static_cast<const EtsiTs103097Module::EtsiTs103097Data&>(type); loggers::get_instance().log_msg("geonetworking_codec::encode_: Encode secured message = ", ieee_1609dot2_data); etsi_ts103097_data_codec codec; OCTETSTRING os; codec.encode(ieee_1609dot2_data, os); if (os.lengthof() == 0) { loggers::get_instance().warning("geonetworking_codec::encode_: Failed to encode EtsiTs103097Data"); return -1; } loggers::get_instance().log_msg("geonetworking_codec::encode_: ", os); encoding_buffer.put_string(os); } else { loggers::get_instance().log("geonetworking_codec::encode_ (else): processing type %s/%s", type.get_descriptor()->name, field_descriptor.name); if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.CommonHeader.nextHeader") == 0) { if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.BasicHeader.nextHeader") == 0) { // Store NextHeader field value and continue encoding _ec.basic_header = (unsigned int)dynamic_cast<const Enum_Type &>(type).as_int(); loggers::get_instance().log("geonetworking_codec::encode_: Storing basic_header %d for %s", _ec.next_header, field_descriptor.name); } else if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.CommonHeader.nextHeader") == 0) { // Store NextHeader field value and continue encoding _ec.next_header = (unsigned int)dynamic_cast<const Enum_Type &>(type).as_int(); loggers::get_instance().log("geonetworking_codec::encode_: Storing next_header %d for %s", _ec.next_header, field_descriptor.name); Loading ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh +2 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,13 @@ namespace LibItsSecurity__TypesAndValues { }; struct encoding_context { unsigned char basic_header; unsigned char next_header; unsigned char header_type; unsigned int length_position; unsigned int length; encoding_context() { next_header = 0xff; header_type = 0xff; length_position = -1; length = -1; } encoding_context() { basic_header = 0xff; next_header = 0xff; header_type = 0xff; length_position = -1; length = -1; } }; //typedef struct encoding_context encoding_context; Loading ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc +2 −2 Original line number Diff line number Diff line Loading @@ -362,10 +362,10 @@ void geonetworking_layer::receive_data(OCTETSTRING& data, params& params) { ind.macDestinationAddress() = str2oct(CHARSTRING(_params["mac_bc"].c_str())); } // 2. ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: ssp=%s", it->second.c_str()); ind.ssp() = str2bit(CHARSTRING(it->second.c_str())); ind.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { ind.ssp().set_to_omit(); } Loading Loading
ccsrc/Protocols/CAM/cam_layer.cc +3 −3 Original line number Diff line number Diff line Loading @@ -102,10 +102,10 @@ void cam_layer::receive_data(OCTETSTRING& data, params& params) p.btpInfo().set_to_omit(); } // ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { OCTETSTRING os(it->second.length(), (const unsigned char *)(it->second.c_str())); p.ssp() = oct2bit(os); loggers::get_instance().log("cam_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { p.ssp().set_to_omit(); } Loading
ccsrc/Protocols/DENM/denm_layer.cc +3 −3 Original line number Diff line number Diff line Loading @@ -101,10 +101,10 @@ void denm_layer::receive_data(OCTETSTRING& data, params& params) p.btpInfo().set_to_omit(); } // ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { OCTETSTRING os(it->second.length(), (const unsigned char *)(it->second.c_str())); p.ssp() = oct2bit(os); loggers::get_instance().log("denm_layer::receive_data: ssp=%s", it->second.c_str()); p.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { p.ssp().set_to_omit(); } Loading
ccsrc/Protocols/GeoNetworking/geonetworking_codec.cc +24 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ #include "geonetworking_codec.hh" #include "loggers.hh" #include "etsi_ts103097_data_codec.hh" #include "LibItsGeoNetworking_TypesAndValues.hh" template <typename T_type> class OPTIONAL; Loading Loading @@ -66,6 +68,10 @@ int geonetworking_codec::encode_ (const Base_Type& type, const TTCN_Typedescript for(int i = 0; i < r.get_count(); i++) { loggers::get_instance().log("geonetworking_codec::encode_: processing %s/%s/%s - %d (1 ==> use dynamic_cast<const OPTIONAL<...>) - %d", r.fld_name(i), r.fld_descr(i)->name, r.get_at(i)->get_descriptor()->name, r.get_at(i)->is_optional(), r.get_at(i)->is_present()); if (r.get_at(i)->is_present()) { if ((_ec.basic_header == 0x02) && (std::string(r.fld_descr(i)->name).compare("@LibItsGeoNetworking_TypesAndValues.GeoNetworkingPacket.packet") == 0)) { // Encoding secured GeoNetworking packet, unsecured GN message was already encoded using encvalue loggers::get_instance().log("geonetworking_codec::encode_: Skip it"); continue; } if (encode_(*r.get_at(i), *r.fld_descr(i), encoding_buffer) == -1) { loggers::get_instance().warning("geonetworking_codec::encode_: -1 result code returned"); return -1; Loading Loading @@ -95,9 +101,25 @@ int geonetworking_codec::encode_ (const Base_Type& type, const TTCN_Typedescript loggers::get_instance().log("geonetworking_codec::encode_: Storing payload length %d for %s", _ec.length, p.get_descriptor()->name); } } } else if (std::string(field_descriptor.name).compare("@EtsiTs103097Module.EtsiTs103097Data") == 0) { const EtsiTs103097Module::EtsiTs103097Data& ieee_1609dot2_data = static_cast<const EtsiTs103097Module::EtsiTs103097Data&>(type); loggers::get_instance().log_msg("geonetworking_codec::encode_: Encode secured message = ", ieee_1609dot2_data); etsi_ts103097_data_codec codec; OCTETSTRING os; codec.encode(ieee_1609dot2_data, os); if (os.lengthof() == 0) { loggers::get_instance().warning("geonetworking_codec::encode_: Failed to encode EtsiTs103097Data"); return -1; } loggers::get_instance().log_msg("geonetworking_codec::encode_: ", os); encoding_buffer.put_string(os); } else { loggers::get_instance().log("geonetworking_codec::encode_ (else): processing type %s/%s", type.get_descriptor()->name, field_descriptor.name); if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.CommonHeader.nextHeader") == 0) { if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.BasicHeader.nextHeader") == 0) { // Store NextHeader field value and continue encoding _ec.basic_header = (unsigned int)dynamic_cast<const Enum_Type &>(type).as_int(); loggers::get_instance().log("geonetworking_codec::encode_: Storing basic_header %d for %s", _ec.next_header, field_descriptor.name); } else if (std::string(field_descriptor.name).compare("@LibItsGeoNetworking_TypesAndValues.CommonHeader.nextHeader") == 0) { // Store NextHeader field value and continue encoding _ec.next_header = (unsigned int)dynamic_cast<const Enum_Type &>(type).as_int(); loggers::get_instance().log("geonetworking_codec::encode_: Storing next_header %d for %s", _ec.next_header, field_descriptor.name); Loading
ccsrc/Protocols/GeoNetworking/geonetworking_codec.hh +2 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,13 @@ namespace LibItsSecurity__TypesAndValues { }; struct encoding_context { unsigned char basic_header; unsigned char next_header; unsigned char header_type; unsigned int length_position; unsigned int length; encoding_context() { next_header = 0xff; header_type = 0xff; length_position = -1; length = -1; } encoding_context() { basic_header = 0xff; next_header = 0xff; header_type = 0xff; length_position = -1; length = -1; } }; //typedef struct encoding_context encoding_context; Loading
ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc +2 −2 Original line number Diff line number Diff line Loading @@ -362,10 +362,10 @@ void geonetworking_layer::receive_data(OCTETSTRING& data, params& params) { ind.macDestinationAddress() = str2oct(CHARSTRING(_params["mac_bc"].c_str())); } // 2. ssp it = params.find(params::ssp); it = params.find(_params[params::its_aid]); if (it != params.cend()) { loggers::get_instance().log("geonetworking_layer::receive_data: ssp=%s", it->second.c_str()); ind.ssp() = str2bit(CHARSTRING(it->second.c_str())); ind.ssp() = oct2bit(str2oct(CHARSTRING(it->second.c_str()))); } else { ind.ssp().set_to_omit(); } Loading