summaryrefslogtreecommitdiff
path: root/java/src/com/zerotier/sdk/PathChecker.java
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2018-04-25 06:39:02 -0700
committerGitHub <noreply@github.com>2018-04-25 06:39:02 -0700
commit42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0 (patch)
tree7bf86c4d92d6a0f77eced79bfc33313c62c7b6dd /java/src/com/zerotier/sdk/PathChecker.java
parent18c9dc8a0649c866eff9f299f20fa5b19c502e52 (diff)
parent4608880fb06700822d01e9e5d6729fcdeb82b64b (diff)
downloadinfinitytier-42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0.tar.gz
infinitytier-42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0.zip
Merge branch 'dev' into netbsd-support
Diffstat (limited to 'java/src/com/zerotier/sdk/PathChecker.java')
-rw-r--r--java/src/com/zerotier/sdk/PathChecker.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/java/src/com/zerotier/sdk/PathChecker.java b/java/src/com/zerotier/sdk/PathChecker.java
new file mode 100644
index 00000000..6bf31df2
--- /dev/null
+++ b/java/src/com/zerotier/sdk/PathChecker.java
@@ -0,0 +1,45 @@
+/*
+ * ZeroTier One - Network Virtualization Everywhere
+ * Copyright (C) 2011-2017 ZeroTier, Inc. https://www.zerotier.com/
+ */
+
+package com.zerotier.sdk;
+
+import java.net.InetSocketAddress;
+
+public interface PathChecker {
+ /**
+ * Callback to check whether a path should be used for ZeroTier traffic
+ *
+ * This function must return true if the path should be used.
+ *
+ * If no path check function is specified, ZeroTier will still exclude paths
+ * that overlap with ZeroTier-assigned and managed IP address blocks. But the
+ * use of a path check function is recommended to ensure that recursion does
+ * not occur in cases where addresses are assigned by the OS or managed by
+ * an out of band mechanism like DHCP. The path check function should examine
+ * all configured ZeroTier interfaces and check to ensure that the supplied
+ * addresses will not result in ZeroTier traffic being sent over a ZeroTier
+ * interface (recursion).
+ *
+ * Obviously this is not required in configurations where this can't happen,
+ * such as network containers or embedded.
+ *
+ * @param ztAddress ZeroTier address or 0 for none/any
+ * @param localSocket Local interface socket. -1 if unspecified
+ * @param remoteAddress remote address
+ */
+ boolean onPathCheck(long ztAddress, long localSocket, InetSocketAddress remoteAddress);
+
+ /**
+ * Function to get physical addresses for ZeroTier peers
+ *
+ * If provided this function will be occasionally called to get physical
+ * addresses that might be tried to reach a ZeroTier address.
+ *
+ * @param ztAddress ZeroTier address (least significant 40 bits)
+ * @param ss_family desired address family or -1 for any
+ * @return address and port of ztAddress or null
+ */
+ InetSocketAddress onPathLookup(long ztAddress, int ss_family);
+}