- IEC 61850 server: reporting - support setting owner to IPv6 address

pull/147/head
Michael Zillgith 7 years ago
parent 941d717804
commit 45fd6919a8

@ -1527,8 +1527,21 @@ updateOwner(ReportControl* rc, MmsServerConnection connection)
}
else {
uint8_t ipV6Addr[16];
bool valid = StringUtils_convertIPv6AdddressStringToByteArray(clientAddressString, ipV6Addr);
if (valid) {
if (DEBUG_IED_SERVER)
printf("IED_SERVER: reporting.c: client address is IPv6 address\n");
MmsValue_setOctetString(owner, ipV6Addr, 16);
}
else {
if (DEBUG_IED_SERVER)
printf("IED_SERVER: reporting.c: not a valid IPv6 address\n");
MmsValue_setOctetString(owner, ipV6Addr, 0);
if (DEBUG_IED_SERVER) printf("IED_SERVER: reporting.c: client address is IPv6 address or unknown\n");
}
}
}
else {
@ -1629,18 +1642,24 @@ isIpAddressMatchingWithOwner(ReportControl* rc, const char* ipAddress)
if (owner != NULL) {
if (strchr(ipAddress, '.') != NULL) {
uint8_t ipV4Addr[4];
if (strchr(ipAddress, '.') != NULL) {
if (convertIPv4AddressStringToByteArray(ipAddress, ipV4Addr)) {
if (memcmp(ipV4Addr, MmsValue_getOctetStringBuffer(owner), 4) == 0)
return true;
}
}
else {
/* TODO add support to compare IPv6 addresses */
uint8_t ipV6Addr[16];
if (StringUtils_convertIPv6AdddressStringToByteArray(ipAddress, ipV6Addr)) {
if (memcmp(ipV6Addr, MmsValue_getOctetStringBuffer(owner), 16) == 0)
return true;
}
else
return false;
}
}
return false;

Loading…
Cancel
Save