From 474a48276604944db7b09894c8f35ad9b2498dcf Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Sat, 2 Jan 2021 12:16:27 +0100 Subject: [PATCH] IED server: fixed problem with CONFIG_IEC61850_RCB_ALLOW_ONLY_PRECONFIGURED_CLIENT configuration option enabled --- src/iec61850/server/mms_mapping/reporting.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 67ad543e..637f0503 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -1666,6 +1666,10 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme rc->reserved = true; rc->clientConnection = connection; } + else { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: client IP not matching with pre-assigned owner\n"); + } #else rc->reserved = true; rc->clientConnection = connection; @@ -1701,6 +1705,18 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme goto exit_function; } +#if (CONFIG_IEC61850_RCB_ALLOW_ONLY_PRECONFIGURED_CLIENT == 1) + if (isIpAddressMatchingWithOwner(rc, MmsServerConnection_getClientAddress(connection)) == false) { + retVal = DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED; + + if (DEBUG_IED_SERVER) + printf("IED_SERVER: client IP not matching with pre-assigned owner --> write access denied!\n"); + + goto exit_function; + } +#endif + + if (strcmp(elementName, "RptEna") == 0) { if (value->value.boolean == true) {