package org.libvirt; import org.libvirt.jna.InterfacePointer; import org.libvirt.jna.Libvirt; /** * A device which is attached to a node */ public class Interface { /** * Get XML Flag: dump inactive interface information */ public static int VIR_INTERFACE_XML_INACTIVE = 1; /** * the native virInterfacePtr. */ InterfacePointer VIP; /** * The Connect Object that represents the Hypervisor of this Interface */ private Connect virConnect; /** * The libvirt connection from the hypervisor */ protected Libvirt libvirt; /** * Constructs an Interface object from an InterfacePointer, and a Connect * object. * * @param virConnect * the Interfaces hypervisor * @param VIP * the native virInterfacePtr */ Interface(Connect virConnect, InterfacePointer VIP) { this.virConnect = virConnect; this.VIP = VIP; libvirt = virConnect.libvirt; } /** * Create and start a defined network. If the call succeed the network moves * from the defined to the running networks pools. * * @throws LibvirtException */ public int create() throws LibvirtException { int returnValue = libvirt.virInterfaceCreate(VIP); processError(); return returnValue; } /** * Destroy the network object. The running instance is shutdown if not down * already and all resources used by it are given back to the hypervisor. * * @throws LibvirtException */ public int destroy() throws LibvirtException { int returnValue = libvirt.virInterfaceDestroy(VIP); processError(); return returnValue; } @Override public void finalize() throws LibvirtException { free(); } /** * Frees this interface object. The running instance is kept alive. The data * structure is freed and should not be used thereafter. * * @throws LibvirtException * @return number of references left (>= 0) for success, -1 for failure. */ public int free() throws LibvirtException { int success = 0; if (VIP != null) { success = libvirt.virInterfaceFree(VIP); processError(); VIP = null; } return success; } /** * Returns the mac string of the interface * * @throws LibvirtException */ public String getMACString() throws LibvirtException { String name = libvirt.virInterfaceGetMACString(VIP); processError(); return name; } /** * Returns the name of the interface * * @throws LibvirtException */ public String getName() throws LibvirtException { String name = libvirt.virInterfaceGetName(VIP); processError(); return name; } /** * Returns the XML description for theinterface * * @throws LibvirtException */ public String getXMLDescription(int flags) throws LibvirtException { String xml = libvirt.virInterfaceGetXMLDesc(VIP, flags); processError(); return xml; } /** * Determine if the interface is currently running * * @see <a * href="http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceIsActive">Libvirt * Documentation</a> * @return 1 if running, 0 if inactive, -1 on error * @throws LibvirtException */ public int isActive() throws LibvirtException { int returnValue = libvirt.virInterfaceIsActive(VIP); processError(); return returnValue; } /** * Error handling logic to throw errors. Must be called after every libvirt * call. */ protected void processError() throws LibvirtException { virConnect.processError(); } /** * Undefine an interface, ie remove it from the config. This does not free * the associated virInterfacePtr object. * * @throws LibvirtException */ public int undefine() throws LibvirtException { int returnValue = libvirt.virInterfaceUndefine(VIP); processError(); return returnValue; } }