From 34f5774db694829dfad4d31c5d5036ebf357eada Mon Sep 17 00:00:00 2001 From: Massimo Candela Date: Mon, 16 Oct 2023 04:14:55 +0200 Subject: [PATCH] improved skipPrefixMatch and renamed skipPrefixMatchOnDifferentGroups --- config.yml.example | 2 +- src/config/config.js | 2 +- src/monitors/monitorAS.js | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/config.yml.example b/config.yml.example index b879d2d..3efcd34 100644 --- a/config.yml.example +++ b/config.yml.example @@ -46,7 +46,7 @@ monitors: channel: misconfiguration name: asn-monitor params: - skipPrefixMatch: false + skipPrefixMatchOnDifferentGroups: false thresholdMinPeers: 3 - file: monitorRPKI diff --git a/src/config/config.js b/src/config/config.js index 8b59550..e34bce4 100644 --- a/src/config/config.js +++ b/src/config/config.js @@ -68,7 +68,7 @@ export default class Config { channel: "misconfiguration", name: "asn-monitor", params: { - skipPrefixMatch: false, + skipPrefixMatchOnDifferentGroups: false, thresholdMinPeers: 3 } }, diff --git a/src/monitors/monitorAS.js b/src/monitors/monitorAS.js index 919f3a4..40dd725 100644 --- a/src/monitors/monitorAS.js +++ b/src/monitors/monitorAS.js @@ -37,7 +37,7 @@ export default class MonitorAS extends Monitor { constructor(name, channel, params, env, input){ super(name, channel, params, env, input); this.thresholdMinPeers = (params && params.thresholdMinPeers != null) ? params.thresholdMinPeers : 3; - this.skipPrefixMatch = !!params?.skipPrefixMatch; + this.skipPrefixMatchOnDifferentGroups = !!params?.skipPrefixMatchOnDifferentGroups; this.updateMonitoredResources(); }; @@ -69,7 +69,7 @@ export default class MonitorAS extends Monitor { if (prefixesOut.length > 1) { return `${matchedMessages[0].originAS} is announcing some prefixes which are not in the configured list of announced prefixes: ${prefixesOut}` } else if (prefixesOut.length === 1) { - return `${matchedMessages[0].originAS} is announcing ${matchedMessages[0].prefix} but this prefix is not in the configured list of announced prefixes`; + return `${matchedMessages[0].originAS} is announcing ${matchedMessages[0].prefix} but this prefix is not in the configured list of announced prefixes`; } return false; @@ -86,7 +86,11 @@ export default class MonitorAS extends Monitor { const matchedPrefixRule = this.getMoreSpecificMatch(messagePrefix, true); - if (this.skipPrefixMatch || !matchedPrefixRule) { + const groupsUnion = [...new Set([...matchedRule.group, ...matchedPrefixRule.group])]; + const differentGroups = this.skipPrefixMatchOnDifferentGroups + && (groupsUnion.length !== matchedRule.group.length || groupsUnion.length !== matchedPrefixRule.group); + + if (differentGroups || !matchedPrefixRule) { this.publishAlert(messageOrigin.getId().toString() + "-" + messagePrefix, messageOrigin.getId(), matchedRule,