[freenet-cvs] r14999 - trunk/freenet/src/freenet/pluginmanager

toad at freenetproject.org toad at freenetproject.org
Fri Sep 7 15:34:12 UTC 2007


Author: toad
Date: 2007-09-07 15:34:12 +0000 (Fri, 07 Sep 2007)
New Revision: 14999

Added:
   trunk/freenet/src/freenet/pluginmanager/ForwardPort.java
   trunk/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
   trunk/freenet/src/freenet/pluginmanager/ForwardPortStatus.java
   trunk/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
Log:
Better (heavier, maybe too heavy) port forwarding plugin interfaces

Added: trunk/freenet/src/freenet/pluginmanager/ForwardPort.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/ForwardPort.java	                        (rev 0)
+++ trunk/freenet/src/freenet/pluginmanager/ForwardPort.java	2007-09-07 15:34:12 UTC (rev 14999)
@@ -0,0 +1,30 @@
+package freenet.pluginmanager;
+
+/**
+ * A public Internet Protocol port on the node which needs to be forwarded if the
+ * node is NATed.
+ * @author toad
+ */
+public class ForwardPort {
+
+	/** Name of the interface e.g. "opennet" */
+	public final String name;
+	/** IPv4 vs IPv6? */
+	public final boolean isIP6;
+	/** Protocol number. See constants. */
+	public final int protocol;
+	public static final int PROTOCOL_UDP_IPV4 = 17;
+	public static final int PROTOCOL_TCP_IPV4 = 6;
+	/** Port number to forward */
+	public final int portNumber;
+	// We don't currently support binding to a specific internal interface.
+	// It would be complicated: Different interfaces may be on different LANs,
+	// and an IGD is normally on only one LAN.
+	
+	public ForwardPort(String name, boolean isIP6, int protocol, int portNumber) {
+		this.name = name;
+		this.isIP6 = isIP6;
+		this.protocol = protocol;
+		this.portNumber = portNumber;
+	}
+}

Added: trunk/freenet/src/freenet/pluginmanager/ForwardPortCallback.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/ForwardPortCallback.java	                        (rev 0)
+++ trunk/freenet/src/freenet/pluginmanager/ForwardPortCallback.java	2007-09-07 15:34:12 UTC (rev 14999)
@@ -0,0 +1,14 @@
+package freenet.pluginmanager;
+
+import java.util.Map;
+
+/**
+ * Callback called by port forwarding plugins to indicate success or failure.
+ * @author toad
+ */
+public interface ForwardPortCallback {
+	
+	/** Called to indicate status on one or more forwarded ports. */
+	public void status(Map /*<ForwardPort,ForwardPortStatus>*/ statuses);
+
+}

Added: trunk/freenet/src/freenet/pluginmanager/ForwardPortStatus.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/ForwardPortStatus.java	                        (rev 0)
+++ trunk/freenet/src/freenet/pluginmanager/ForwardPortStatus.java	2007-09-07 15:34:12 UTC (rev 14999)
@@ -0,0 +1,28 @@
+package freenet.pluginmanager;
+
+public class ForwardPortStatus {
+	
+	public final int status;
+	/** The port forward is in progress */
+	public static final int IN_PROGRESS = 0;
+	/** The port forward definitely succeeded. */
+	public static final int DEFINITE_SUCCESS = 1;
+	/** The port forward probably succeeded. I.e. it succeeded unless there was
+	 * for example hostile action on the part of the router. */
+	public static final int PROBABLE_SUCCESS = 2;
+	/** The port forward may have succeeded. Or it may not have. We should 
+	 * definitely try to check out of band. See UP&P: Many routers say they've
+	 * forwarded the port when they haven't. */
+	public static final int MAYBE_SUCCESS = 3;
+	/** The port forward definitely failed. */
+	public static final int DEFINITE_FAILURE = -1;
+	/** The port forward probably failed */
+	public static final int PROBABLE_FAILURE = -2;
+	
+	public final String reasonString;
+	
+	public ForwardPortStatus(int status, String reason) {
+		this.status = status;
+		this.reasonString = reason;
+	}
+}

Added: trunk/freenet/src/freenet/pluginmanager/FredPluginPortForward.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/FredPluginPortForward.java	                        (rev 0)
+++ trunk/freenet/src/freenet/pluginmanager/FredPluginPortForward.java	2007-09-07 15:34:12 UTC (rev 14999)
@@ -0,0 +1,21 @@
+package freenet.pluginmanager;
+
+import java.util.Set;
+
+/**
+ * Interface for port forwarding plugins.
+ * @author toad
+ */
+public interface FredPluginPortForward {
+
+	/**
+	 * Called when Fred's list of public ports changes, and just after loading the
+	 * plugin.
+	 * @param ports The set of ports that need to be forwarded from the outside 
+	 * world through the NAT or firewall.
+	 * @param cb Callback to be called with success/failure of each forward. Some
+	 * plugins may return a probabilistic success e.g. with UP&P.
+	 */
+	public void onChangePublicPorts(Set/*<ForwardPort>*/ ports, ForwardPortCallback cb);
+	
+}




More information about the cvs mailing list