From a1d086c116834f65d2204d5c53091b619fb4ee1e Mon Sep 17 00:00:00 2001 From: Christoph Weitkamp Date: Mon, 26 Apr 2021 12:11:04 +0200 Subject: [PATCH] Filter duplicate broadcast addresses for service configuration if multiple network interfaces are available (#2307) Signed-off-by: Christoph Weitkamp --- .../net/NetworkConfigOptionProvider.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/internal/net/NetworkConfigOptionProvider.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/internal/net/NetworkConfigOptionProvider.java index f09f012be2..d960418510 100644 --- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/internal/net/NetworkConfigOptionProvider.java +++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/internal/net/NetworkConfigOptionProvider.java @@ -48,17 +48,19 @@ public class NetworkConfigOptionProvider implements ConfigOptionProvider { return null; } - if (PARAM_PRIMARY_ADDRESS.equals(param)) { - Stream ipv4Addresses = NetUtil.getAllInterfaceAddresses().stream() - .filter(a -> a.getAddress() instanceof Inet4Address); - return ipv4Addresses.map(a -> new ParameterOption(a.toString(), a.toString())).collect(Collectors.toList()); + switch (param) { + case PARAM_PRIMARY_ADDRESS: + Stream ipv4Addresses = NetUtil.getAllInterfaceAddresses().stream() + .filter(a -> a.getAddress() instanceof Inet4Address); + return ipv4Addresses.map(a -> new ParameterOption(a.toString(), a.toString())) + .collect(Collectors.toList()); + case PARAM_BROADCAST_ADDRESS: + List broadcastAddrList = new ArrayList<>(NetUtil.getAllBroadcastAddresses()); + broadcastAddrList.add("255.255.255.255"); + return broadcastAddrList.stream().distinct().map(a -> new ParameterOption(a, a)) + .collect(Collectors.toList()); + default: + return null; } - - if (PARAM_BROADCAST_ADDRESS.equals(param)) { - List broadcastAddrList = new ArrayList<>(NetUtil.getAllBroadcastAddresses()); - broadcastAddrList.add("255.255.255.255"); - return broadcastAddrList.stream().map(a -> new ParameterOption(a, a)).collect(Collectors.toList()); - } - return null; } }