diff --git a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java index 64512dadd..0e1945dfa 100644 --- a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java +++ b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java @@ -32,6 +32,7 @@ import java.lang.Override; import java.lang.String; import java.util.ArrayList; import java.net.InetSocketAddress; +import java.util.Collections; public final class VirtualNetworkConfig implements Comparable { public static final int MAX_MULTICAST_SUBSCRIPTIONS = 4096; @@ -57,39 +58,42 @@ public final class VirtualNetworkConfig implements Comparable current = new ArrayList<>(); + ArrayList newConfig = new ArrayList<>(); + for (InetSocketAddress s : assignedAddresses) { + current.add(s.toString()); } - - boolean routesEqual = true; - if(routes.length == cfg.routes.length) { - for (int i = 0; i < routes.length; ++i) { - if (!routes[i].equals(cfg.routes[i])) { - routesEqual = false; - } - } - } else { - routesEqual = false; + for (InetSocketAddress s : cfg.assignedAddresses) { + newConfig.add(s.toString()); } + Collections.sort(current); + Collections.sort(newConfig); + boolean aaEqual = current.equals(newConfig); - return nwid == cfg.nwid && - mac == cfg.mac && - name.equals(cfg.name) && - status.equals(cfg.status) && - type.equals(cfg.type) && - mtu == cfg.mtu && - dhcp == cfg.dhcp && - bridge == cfg.bridge && - broadcastEnabled == cfg.broadcastEnabled && - portError == cfg.portError && - enabled == cfg.enabled && + current.clear(); + newConfig.clear(); + + for (VirtualNetworkRoute r : routes) { + current.add(r.toString()); + } + for (VirtualNetworkRoute r : cfg.routes) { + newConfig.add(r.toString()); + } + Collections.sort(current); + Collections.sort(newConfig); + boolean routesEqual = current.equals(newConfig); + + return this.nwid == cfg.nwid && + this.mac == cfg.mac && + this.name.equals(cfg.name) && + this.status.equals(cfg.status) && + this.type.equals(cfg.type) && + this.mtu == cfg.mtu && + this.dhcp == cfg.dhcp && + this.bridge == cfg.bridge && + this.broadcastEnabled == cfg.broadcastEnabled && + this.portError == cfg.portError && + this.enabled == cfg.enabled && aaEqual && routesEqual; } diff --git a/java/src/com/zerotier/sdk/VirtualNetworkRoute.java b/java/src/com/zerotier/sdk/VirtualNetworkRoute.java index b89dce7ba..51bdfef33 100644 --- a/java/src/com/zerotier/sdk/VirtualNetworkRoute.java +++ b/java/src/com/zerotier/sdk/VirtualNetworkRoute.java @@ -58,14 +58,23 @@ public final class VirtualNetworkRoute implements Comparable