/******************************************************************************* * Copyright (c) 2011, 2016 Eurotech and/or its affiliates * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eurotech *******************************************************************************/ package org.eclipse.kura.net; import java.util.List; import java.util.Map; import org.eclipse.kura.KuraException; import org.eclipse.kura.net.firewall.FirewallNatConfig; import org.eclipse.kura.net.firewall.FirewallOpenPortConfigIP; import org.eclipse.kura.net.firewall.FirewallPortForwardConfigIP; import org.eclipse.kura.net.wifi.WifiAccessPoint; import org.eclipse.kura.net.wifi.WifiConfig; import org.eclipse.kura.net.wifi.WifiHotspotInfo; /** * Service API for getting and setting network interface configurations. * * @author eurotech * */ public interface NetworkAdminService { /** * Returns a list of all of the configurations associated with all of the interfaces on * the system. * * @return list of NetInterfaceConfigs on the system * @throws KuraException */ public List<? extends NetInterfaceConfig<? extends NetInterfaceAddressConfig>> getNetworkInterfaceConfigs() throws KuraException; /** * Returns the configuration information for the specified NetworkInterface name. * The returned NetConfig captured how the interface was configured; the returned * list will have a NetConfig4 instance for IPv4 and an NetConfig6 instance for IPv6. * This should not be confused with the currently active NetInterfaceAddress associated * with the NetInterface. * * @param interfaceName * @return list of NetConfig for this interface. */ public List<NetConfig> getNetworkInterfaceConfigs(String interfaceName) throws KuraException; /** * Updates the configuration of the specified EthernetInterface. * * @param interfaceName * - name of the Ethernet interface * @param autoConnect * - specifies the auto-connect value for the interface * @param mtu * - required MTU for the interface, -1 to keep the automatic default * @throws KuraException */ public void updateEthernetInterfaceConfig(String interfaceName, boolean autoConnect, int mtu, List<NetConfig> netConfigs) throws KuraException; /** * Updates the configuration of the specified WifiInterface. * * @param interfaceName * - name of the wifi interface * @param autoConnect * - specifies the auto-connect value for the interface * @throws KuraException */ public void updateWifiInterfaceConfig(String interfaceName, boolean autoConnect, WifiAccessPoint accessPoint, List<NetConfig> netConfigs) throws KuraException; /** * Updates the configuration of the specified ModemInterface. * * @param interfaceName * - name of the Modem interface * @param serialNum * - the modem's serial number * @param modemId * - user string to identify the modem * @param pppNumber * - ppp number to use for this interface * @param autoConnect * - specifies the auto-connect value for the interface * @param mtu * - required MTU for the interface, -1 to keep the automatic default * @param netConfigs * - list of NetConfigs for this interface * @throws KuraException */ public void updateModemInterfaceConfig(String interfaceName, String serialNum, String modemId, int pppNumber, boolean autoConnect, int mtu, List<NetConfig> netConfigs) throws KuraException; /** * Enables the specified interface. * * @param interfaceName * - name of the interface to be enabled. */ public void enableInterface(String interfaceName, boolean dhcp) throws KuraException; /** * Disables the specified interface. * * @param interfaceName * - name of the interface to be disabled. */ public void disableInterface(String interfaceName) throws KuraException; /** * Used to control DHCP clients on specified interfaces. * * @param interfaceName * The interface of the DHCP server to modify the state * @param enable * Whether to enable or disable the DHCP client * @throws KuraException */ public void manageDhcpClient(String interfaceName, boolean enable) throws KuraException; /** * Used to control DHCP servers on specified interfaces. * * @param interfaceName * The interface of the DHCP server to modify the state * @param enable * Whether to enable or disable the DHCP server * @throws KuraException */ public void manageDhcpServer(String interfaceName, boolean enable) throws KuraException; /** * Releases current IP address and acquires a new lease for the provided interface. * * @param interfaceName * The interface on which to renew the lease * @throws KuraException */ public void renewDhcpLease(String interfaceName) throws KuraException; /** * Gets the firewall configuration of the system as currently specified * * @return A list of NetConfigs representing the firewall configuration * @throws KuraException */ public List<NetConfig> getFirewallConfiguration() throws KuraException; /** * Sets the 'open port' portion of the firewall configuration * * @param firewallConfiguration * A list of FirewallOpenPortConfigIP Objects representing the configuration to set * @throws KuraException */ public void setFirewallOpenPortConfiguration( List<FirewallOpenPortConfigIP<? extends IPAddress>> firewallConfiguration) throws KuraException; /** * Sets the 'port forwarding' portion of the firewall configuration * * @param firewallConfiguration * A list of FirewallPortForwardConfigIP Objects representing the configuration to set * @throws KuraException */ public void setFirewallPortForwardingConfiguration( List<FirewallPortForwardConfigIP<? extends IPAddress>> firewallConfiguration) throws KuraException; // public List<FirewallReverseNatConfig> getFirewallNatConfiguration(String sourceIface) throws KuraException; public void setFirewallNatConfiguration(List<FirewallNatConfig> natConfigs) throws KuraException; /** * Updates the Firewall configuration based on current environmental conditions. This is * used to update the firewall in events where NAT rules need to change based on a new WAN * interface coming up or going down. This ensures all downstream clients utilizing NAT * on the gateway can and will maintain active Internet connections through the gateway. * * @param gatewayIface * The new gateway interface that is now active as the WAN interface * @throws KuraException */ public void manageFirewall(String gatewayIface) throws KuraException; /** * Obtains information for WiFi hotspots in range. * * @param ifaceName * - name of WiFi interface * @return map of SSIDs with respective hotspot information. * @throws KuraException */ public Map<String, WifiHotspotInfo> getWifiHotspots(String ifaceName) throws KuraException; /** * Verifies WiFi credentials by trying to establish connection with access point. * * @param ifaceName * - name of WiFi interface * @param wifiConfig * WiFi configuration * @param tout * - timeout (in seconds) * @return status - <i>true</i> if credentials are correct, <i>false</i> otherwise */ public boolean verifyWifiCredentials(String ifaceName, WifiConfig wifiConfig, int tout); /** * Rolls back to default network configuration. * * @return status * @throws KuraException */ @Deprecated public boolean rollbackDefaultConfiguration() throws KuraException; /** * Rolls back to default firewall configuration. * * @return status * @throws KuraException */ @Deprecated public boolean rollbackDefaultFirewallConfiguration() throws KuraException; }