Compability with it2s-asn

This commit is contained in:
emanuel 2022-07-26 13:33:25 +01:00
parent 8ae273cafe
commit ded1ae5c9e
4 changed files with 25 additions and 13 deletions

View File

@ -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_t *cam = calloc(1, sizeof(CAM_t));
cam->header.protocolVersion = 2; cam->header.protocolVersion = 2;
cam->header.messageID = ItsPduHeader__messageID_cam; cam->header.messageID = messageID_cam;
pthread_mutex_lock(&facilities->id.lock); pthread_mutex_lock(&facilities->id.lock);
cam->header.stationID = facilities->id.station_id; cam->header.stationID = facilities->id.station_id;
pthread_mutex_unlock(&facilities->id.lock); pthread_mutex_unlock(&facilities->id.lock);
@ -785,7 +785,7 @@ void *ca_service(void *fc) {
pthread_mutex_lock(&facilities->id.lock); pthread_mutex_lock(&facilities->id.lock);
uint64_t station_id = facilities->id.station_id; uint64_t station_id = facilities->id.station_id;
pthread_mutex_unlock(&facilities->id.lock); 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) { if (facilities->logging.recorder) {

View File

@ -100,21 +100,21 @@ static int transport_indication(facilities_t *facilities, void* responder, void*
case Port_cam: case Port_cam:
its_msg_descriptor = &asn_DEF_CAM; its_msg_descriptor = &asn_DEF_CAM;
its_msg = calloc(1, sizeof(CAM_t)); its_msg = calloc(1, sizeof(CAM_t));
its_msg_type = ItsPduHeader__messageID_cam; its_msg_type = messageID_cam;
handled_msg = true; handled_msg = true;
break; break;
case Port_denm: case Port_denm:
its_msg_descriptor = &asn_DEF_DENM; its_msg_descriptor = &asn_DEF_DENM;
its_msg = calloc(1, sizeof(DENM_t)); its_msg = calloc(1, sizeof(DENM_t));
its_msg_type = ItsPduHeader__messageID_denm; its_msg_type = messageID_denm;
handled_msg = true; handled_msg = true;
break; break;
case Port_ivim: case Port_ivim:
its_msg_descriptor = &asn_DEF_IVIM; its_msg_descriptor = &asn_DEF_IVIM;
its_msg = calloc(1, sizeof(IVIM_t)); its_msg = calloc(1, sizeof(IVIM_t));
its_msg_type = ItsPduHeader__messageID_ivim; its_msg_type = messageID_ivim;
handled_msg = true; handled_msg = true;
break; break;
@ -128,7 +128,7 @@ static int transport_indication(facilities_t *facilities, void* responder, void*
case Port_saem: case Port_saem:
its_msg_descriptor = &asn_DEF_SAEM; its_msg_descriptor = &asn_DEF_SAEM;
its_msg = calloc(1, sizeof(SAEM_t)); its_msg = calloc(1, sizeof(SAEM_t));
its_msg_type = ItsPduHeader__messageID_saem; its_msg_type = messageID_saem;
handled_msg = true; handled_msg = true;
break; break;
@ -297,6 +297,17 @@ static int transport_indication(facilities_t *facilities, void* responder, void*
if (srep->returnCode == SecurityReplyReturnCode_rejected) { if (srep->returnCode == SecurityReplyReturnCode_rejected) {
syslog_err("[facilities] SecurityReply.tlsRecv 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; rv = 1;
goto cleanup; goto cleanup;
} }

View File

@ -8,8 +8,7 @@
#include <it2s-tender/time.h> #include <it2s-tender/time.h>
#include <it2s-tender/syslog.h> #include <it2s-tender/syslog.h>
#include <ivim/Pictogram-trafficSign.h> #include <ivim/ISO14823Code.h>
#include <ivim/Pictogram-conditionsSign.h>
const ivi_diid_ssp_bm_t DIID_SSP_BM_MAP[] = { const ivi_diid_ssp_bm_t DIID_SSP_BM_MAP[] = {
{"Vienna Convention Code for road sign", IVI_DIID_ViennaCodeConvention, 0x800000}, {"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) { switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.present) {
case ISO14823Code__pictogramCode__serviceCategoryCode_PR_trafficSignPictogram: case ISO14823Code__pictogramCode__serviceCategoryCode_PR_trafficSignPictogram:
switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.choice.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;} if (!permissions_check(IVI_DIID_TrafficSignPictogramDangerWarning, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;}
break; break;
case Pictogram_trafficSign_regulatory: case ISO14823Code__pictogramCode__serviceCategoryCode__trafficSignPictogram_regulatory:
if (!permissions_check(IVI_DIID_TrafficSignPictogramRegulatory, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} if (!permissions_check(IVI_DIID_TrafficSignPictogramRegulatory, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;}
break; break;
case Pictogram_trafficSign_informative: case ISO14823Code__pictogramCode__serviceCategoryCode__trafficSignPictogram_informative:
if (!permissions_check(IVI_DIID_TrafficSignPictogramInformative, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} if (!permissions_check(IVI_DIID_TrafficSignPictogramInformative, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;}
break; break;
} }
@ -140,10 +139,10 @@ static enum SERVICE_EVAL_R service_check(infrastructure_t* infrastructure, enum
case ISO14823Code__pictogramCode__serviceCategoryCode_PR_ambientOrRoadConditionPictogram: case ISO14823Code__pictogramCode__serviceCategoryCode_PR_ambientOrRoadConditionPictogram:
switch (code->choice.iso14823.pictogramCode.serviceCategoryCode.choice.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;} if (!permissions_check(IVI_DIID_ServiceCategoryCodeAmbientOrRoadConditionPictogramAmbientCondition, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;}
break; break;
case Pictogram_conditionsSign_roadCondition: case ISO14823Code__pictogramCode__serviceCategoryCode__ambientOrRoadConditionPictogram_roadCondition:
if (!permissions_check(IVI_DIID_ServiceCategoryCodeAmbientOrRoadConditionPictogramRoadCondition, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;} if (!permissions_check(IVI_DIID_ServiceCategoryCodeAmbientOrRoadConditionPictogramRoadCondition, ssp, ssp_len)) {return SERVICE_BAD_PERMISSIONS;}
break; break;
} }

View File

@ -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) { 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) { if (tolling->protocol.c.tls.n_tlsc >= TOLLING_MAX_CONNS - 1) {
return NULL; 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) { 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; tlsc_t* tlsc = NULL;
for (int i = 0; i < tolling->protocol.c.tls.n_tlsc; ++i) { for (int i = 0; i < tolling->protocol.c.tls.n_tlsc; ++i) {
if (!memcmp(tolling->protocol.c.tls.tls_conns[i]->ipv6, ipv6, 16) && if (!memcmp(tolling->protocol.c.tls.tls_conns[i]->ipv6, ipv6, 16) &&