Filter duplicate broadcast addresses for service configuration if multiple network interfaces are available (#2307)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
pull/2320/head
Christoph Weitkamp 2021-04-26 12:11:04 +02:00 committed by GitHub
parent 6258268031
commit a1d086c116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 11 deletions

View File

@ -48,17 +48,19 @@ public class NetworkConfigOptionProvider implements ConfigOptionProvider {
return null;
}
if (PARAM_PRIMARY_ADDRESS.equals(param)) {
Stream<CidrAddress> 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<CidrAddress> 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<String> 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<String> 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;
}
}