package com.netifera.platform.net.internal.pcap; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; import com.netifera.platform.net.pcap.IPacketCapture; import com.netifera.platform.net.pcap.IPacketCaptureFactoryService; import com.netifera.platform.net.pcap.IPacketHandler; import com.netifera.platform.net.pcap.ex.ICaptureInterfaceEx; public class PhysicalInterface implements ICaptureInterfaceEx { private final IPacketCaptureFactoryService factory; private final NetworkInterface interfaceInstance; private boolean canCapture; PhysicalInterface(IPacketCaptureFactoryService factory, NetworkInterface iface, boolean canCapture) { this.factory = factory; this.interfaceInstance = iface; this.canCapture = canCapture; } public NetworkInterface getInterface() { return interfaceInstance; } public String getName() { return interfaceInstance.getDisplayName(); } public boolean captureAvailable() { return canCapture; } @Override public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append(getName()); Enumeration<InetAddress> addresses = interfaceInstance.getInetAddresses(); if(addresses.hasMoreElements()) { buffer.append(" ("); while (addresses.hasMoreElements()) { buffer.append(addresses.nextElement().getHostAddress()); if (addresses.hasMoreElements()) buffer.append(", "); } buffer.append(')'); } return buffer.toString(); } public boolean equals(Object other) { if(!(other instanceof PhysicalInterface)) return false; else return interfaceInstance.equals(((PhysicalInterface)other).interfaceInstance); } public int hashCode() { return interfaceInstance.hashCode(); } public IPacketCapture pcapCreate(int snaplen, boolean promiscuous, int timeout, IPacketHandler handler) { return factory.create(this, snaplen, promiscuous, timeout, handler); } }