From db1671587e1d6d0c603b42bd919621c3c183a96a Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 29 Jan 2021 18:44:55 +0100 Subject: [PATCH] - IED server: fixed bug - logs (journals) are added to all logical devices instead of just the parents --- src/iec61850/server/mms_mapping/mms_mapping.c | 31 ++++++++++--------- src/mms/iso_mms/server/mms_domain.c | 1 - 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index c03700e7..ff1a2f1a 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -1811,26 +1811,29 @@ createMmsDomainFromIedDevice(MmsMapping* self, LogicalDevice* logicalDevice) /* add logs (journals) */ Log* log = self->model->logs; - while (log != NULL) { + while (log) { - char journalName[65]; + /* Check if log belongs to this logical device */ + if (log->parent->parent == (ModelNode*)logicalDevice) { + char journalName[65]; - int nameLength = strlen(log->parent->name) + strlen(log->name); + int nameLength = strlen(log->parent->name) + strlen(log->name); - if (nameLength > 63) { - if (DEBUG_IED_SERVER) - printf("IED_SERVER: Log name %s invalid! Resulting journal name too long! Skip log\n", log->name); - } - else { - strcpy(journalName, log->parent->name); - strcat(journalName, "$"); - strcat(journalName, log->name); + if (nameLength > 63) { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: Log name %s invalid! Resulting journal name too long! Skip log\n", log->name); + } + else { + strcpy(journalName, log->parent->name); + strcat(journalName, "$"); + strcat(journalName, log->name); - MmsDomain_addJournal(domain, journalName); + MmsDomain_addJournal(domain, journalName); - LogInstance* logInstance = LogInstance_create(log->parent, log->name); + LogInstance* logInstance = LogInstance_create(log->parent, log->name); - LinkedList_add(self->logInstances, (void*) logInstance); + LinkedList_add(self->logInstances, (void*) logInstance); + } } log = log->sibling; diff --git a/src/mms/iso_mms/server/mms_domain.c b/src/mms/iso_mms/server/mms_domain.c index e0f97b10..f4bdf519 100644 --- a/src/mms/iso_mms/server/mms_domain.c +++ b/src/mms/iso_mms/server/mms_domain.c @@ -84,7 +84,6 @@ MmsDomain_addJournal(MmsDomain* self, const char* name) LinkedList_add(self->journals, (void*) journal); } - MmsJournal MmsDomain_getJournal(MmsDomain* self, const char* name) {