/* * ZeroTier One - Network Virtualization Everywhere * Copyright (C) 2011-2015 ZeroTier, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * -- * * ZeroTier may be used and distributed under the terms of the GPLv3, which * are available at: http://www.gnu.org/licenses/gpl-3.0.html * * If you would like to embed ZeroTier into a commercial application or * redistribute it in a modified binary form, please contact ZeroTier Networks * LLC. Start here: http://www.zerotier.com/ */ package com.zerotierone.sdk; import java.lang.String; import java.util.ArrayList; import java.net.InetSocketAddress; public final class VirtualNetworkConfig { public static final int MAX_MULTICAST_SUBSCRIPTIONS = 4096; public static final int ZT1_MAX_ZT_ASSIGNED_ADDRESSES = 16; private long nwid; private long mac; private String name; private VirtualNetworkStatus status; private VirtualNetworkType type; private int mtu; private boolean dhcp; private boolean bridge; private boolean broadcastEnabled; private int portError; private boolean enabled; private long netconfRevision; private ArrayList multicastSubscriptions; private ArrayList assignedAddresses; private VirtualNetworkConfig() { } /** * 64-bit ZeroTier network ID */ public final long networkId() { return nwid; } /** * Ethernet MAC (40 bits) that should be assigned to port */ public final long macAddress() { return mac; } /** * Network name (from network configuration master) */ public final String name() { return name; } /** * Network configuration request status */ public final VirtualNetworkStatus networkStatus() { return status; } /** * Network type */ public final VirtualNetworkType networkType() { return type; } /** * Maximum interface MTU */ public final int mtu() { return mtu; } /** * If the network this port belongs to indicates DHCP availability * *

This is a suggestion. The underlying implementation is free to ignore it * for security or other reasons. This is simply a netconf parameter that * means 'DHCP is available on this network.'

*/ public final boolean isDhcpAvailable() { return dhcp; } /** * If this port is allowed to bridge to other networks * *

This is informational. If this is false, bridged packets will simply * be dropped and bridging won't work.

*/ public final boolean isBridgeEnabled() { return bridge; } /** * If true, this network supports and allows broadcast (ff:ff:ff:ff:ff:ff) traffic */ public final boolean broadcastEnabled() { return broadcastEnabled; } /** * If the network is in PORT_ERROR state, this is the error most recently returned by the port config callback */ public final int portError() { return portError; } /** * Is this network enabled? If not, all frames to/from are dropped. */ public final boolean isEnabled() { return enabled; } /** * Network config revision as reported by netconf master * *

If this is zero, it means we're still waiting for our netconf.

*/ public final long netconfRevision() { return netconfRevision; } /** * Multicast group subscriptions */ public final ArrayList multicastSubscriptions() { return multicastSubscriptions; } /** * ZeroTier-assigned addresses (in {@link java.net.InetSocketAddress} objects) * * For IP, the port number of the sockaddr_XX structure contains the number * of bits in the address netmask. Only the IP address and port are used. * Other fields like interface number can be ignored. * * This is only used for ZeroTier-managed address assignments sent by the * virtual network's configuration master. */ public final ArrayList assignedAddresses() { return assignedAddresses; } }