From ded1ae5c9e157748382087cba7a089f773437951 Mon Sep 17 00:00:00 2001 From: emanuel Date: Tue, 26 Jul 2022 13:33:25 +0100 Subject: [PATCH] Compability with it2s-asn --- src/cam.c | 4 ++-- src/facilities.c | 19 +++++++++++++++---- src/infrastructure.c | 13 ++++++------- src/tpm.c | 2 ++ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/cam.c b/src/cam.c index e6f77bc..23fe774 100644 --- a/src/cam.c +++ b/src/cam.c @@ -102,7 +102,7 @@ static int mk_cam(facilities_t* facilities, uint8_t *cam_oer, uint32_t *cam_len) CAM_t *cam = calloc(1, sizeof(CAM_t)); cam->header.protocolVersion = 2; - cam->header.messageID = ItsPduHeader__messageID_cam; + cam->header.messageID = messageID_cam; pthread_mutex_lock(&facilities->id.lock); cam->header.stationID = facilities->id.station_id; pthread_mutex_unlock(&facilities->id.lock); @@ -785,7 +785,7 @@ void *ca_service(void *fc) { pthread_mutex_lock(&facilities->id.lock); uint64_t station_id = facilities->id.station_id; pthread_mutex_unlock(&facilities->id.lock); - itss_db_add(facilities->logging.dbms, station_id, bpr->id, &facilities->epv, true, ItsPduHeader__messageID_cam, NULL, bpr->data.buf, bpr->data.size); + itss_db_add(facilities->logging.dbms, station_id, bpr->id, &facilities->epv, true, messageID_cam, NULL, bpr->data.buf, bpr->data.size); } if (facilities->logging.recorder) { diff --git a/src/facilities.c b/src/facilities.c index e5d42dc..4418407 100644 --- a/src/facilities.c +++ b/src/facilities.c @@ -100,21 +100,21 @@ static int transport_indication(facilities_t *facilities, void* responder, void* case Port_cam: its_msg_descriptor = &asn_DEF_CAM; its_msg = calloc(1, sizeof(CAM_t)); - its_msg_type = ItsPduHeader__messageID_cam; + its_msg_type = messageID_cam; handled_msg = true; break; case Port_denm: its_msg_descriptor = &asn_DEF_DENM; its_msg = calloc(1, sizeof(DENM_t)); - its_msg_type = ItsPduHeader__messageID_denm; + its_msg_type = messageID_denm; handled_msg = true; break; case Port_ivim: its_msg_descriptor = &asn_DEF_IVIM; its_msg = calloc(1, sizeof(IVIM_t)); - its_msg_type = ItsPduHeader__messageID_ivim; + its_msg_type = messageID_ivim; handled_msg = true; break; @@ -128,7 +128,7 @@ static int transport_indication(facilities_t *facilities, void* responder, void* case Port_saem: its_msg_descriptor = &asn_DEF_SAEM; its_msg = calloc(1, sizeof(SAEM_t)); - its_msg_type = ItsPduHeader__messageID_saem; + its_msg_type = messageID_saem; handled_msg = true; break; @@ -297,6 +297,17 @@ static int transport_indication(facilities_t *facilities, void* responder, void* if (srep->returnCode == SecurityReplyReturnCode_rejected) { syslog_err("[facilities] SecurityReply.tlsRecv rejected"); + + SecurityRequest_t* sREQ = calloc(1, sizeof(SecurityRequest_t)); + sREQ->present = SecurityRequest_PR_tlsShutdown; + sREQ->choice.tlsShutdown.connId = id; + b_sdu[0] = 4; + asn_enc_rval_t enc = oer_encode_to_buffer(&asn_DEF_SecurityRequest, NULL, sREQ, b_sdu+1, 2047); + syslog_debug("[facilities]->[security] SecurityRequest.tlsShutdown (%ldB)", enc.encoded+1); + zmq_send(security_socket, b_sdu, enc.encoded+1, 0); + int32_t rl = zmq_recv(security_socket, b_sdu, 2048, 0); + syslog_debug("[facilities]<-[security] SecurityReply.tlsShutdown (%dB)", rl); + rv = 1; goto cleanup; } diff --git a/src/infrastructure.c b/src/infrastructure.c index ee09113..0880ab9 100644 --- a/src/infrastructure.c +++ b/src/infrastructure.c @@ -8,8 +8,7 @@ #include #include -#include -#include +#include const ivi_diid_ssp_bm_t DIID_SSP_BM_MAP[] = { {"Vienna Convention Code for road sign", IVI_DIID_ViennaCodeConvention, 0x800000}, @@ -123,13 +122,13 @@ static enum SERVICE_EVAL_R service_check(infrastructure_t* infrastructure, enum switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.present) { case ISO14823Code__pictogramCode__serviceCategoryCode_PR_trafficSignPictogram: switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.choice.trafficSignPictogram) { - case Pictogram_trafficSign_dangerWarning: + case ISO14823Code__pictogramCode__serviceCategoryCode__trafficSignPictogram_dangerWarning: if (!permissions_check(IVI_DIID_TrafficSignPictogramDangerWarning, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} break; - case Pictogram_trafficSign_regulatory: + case ISO14823Code__pictogramCode__serviceCategoryCode__trafficSignPictogram_regulatory: if (!permissions_check(IVI_DIID_TrafficSignPictogramRegulatory, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} break; - case Pictogram_trafficSign_informative: + case ISO14823Code__pictogramCode__serviceCategoryCode__trafficSignPictogram_informative: if (!permissions_check(IVI_DIID_TrafficSignPictogramInformative, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} break; } @@ -140,10 +139,10 @@ static enum SERVICE_EVAL_R service_check(infrastructure_t* infrastructure, enum case ISO14823Code__pictogramCode__serviceCategoryCode_PR_ambientOrRoadConditionPictogram: switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.choice.ambientOrRoadConditionPictogram) { - case Pictogram_conditionsSign_ambientCondition: + case ISO14823Code__pictogramCode__serviceCategoryCode__ambientOrRoadConditionPictogram_ambientCondition: if (!permissions_check(IVI_DIID_ServiceCategoryCodeAmbientOrRoadConditionPictogramAmbientCondition, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} break; - case Pictogram_conditionsSign_roadCondition: + case ISO14823Code__pictogramCode__serviceCategoryCode__ambientOrRoadConditionPictogram_roadCondition: if (!permissions_check(IVI_DIID_ServiceCategoryCodeAmbientOrRoadConditionPictogramRoadCondition, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} break; } diff --git a/src/tpm.c b/src/tpm.c index 00dd653..362f71e 100644 --- a/src/tpm.c +++ b/src/tpm.c @@ -1277,6 +1277,7 @@ void tolling_info_free(tolling_info_t* ti) { } tlsc_t* tolling_tlsc_new(tolling_t* tolling, itss_epv_t* epv, uint8_t ipv6[16], uint16_t port) { + syslog_debug("[tolling] new tlsc , nconns=%d", tolling->protocol.c.tls.n_tlsc); if (tolling->protocol.c.tls.n_tlsc >= TOLLING_MAX_CONNS - 1) { return NULL; } @@ -1291,6 +1292,7 @@ tlsc_t* tolling_tlsc_new(tolling_t* tolling, itss_epv_t* epv, uint8_t ipv6[16], } tlsc_t* tolling_tlsc_get(tolling_t* tolling, itss_epv_t* epv, uint8_t ipv6[16], uint16_t port) { + syslog_debug("[tolling] new get , nconns=%d", tolling->protocol.c.tls.n_tlsc); tlsc_t* tlsc = NULL; for (int i = 0; i < tolling->protocol.c.tls.n_tlsc; ++i) { if (!memcmp(tolling->protocol.c.tls.tls_conns[i]->ipv6, ipv6, 16) &&