diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h
index 7cbebb328..cf6b21fdd 100644
--- a/include/ZeroTierOne.h
+++ b/include/ZeroTierOne.h
@@ -803,6 +803,21 @@ typedef struct
 			uint8_t mask;
 		} ipv4;
 
+		/**
+		 * Integer range match in packet payload
+		 *
+		 * This allows matching of ranges of integers up to 64 bits wide where
+		 * the range is +/- INT32_MAX. It's packed this way so it fits in 16
+		 * bytes and doesn't enlarge the overall size of this union.
+		 */
+		struct {
+			uint64_t start; // integer range start
+			int32_t delta; // +/- offset from start of integer range end
+			uint16_t idx; // index in packet of integer
+			uint8_t bits; // number of bits in integer (range: 1-64)
+			uint8_t endian; // endianness of integer in packet (0 == big, 1 == little)
+		} intRange;
+
 		/**
 		 * Packet characteristic flags being matched
 		 */
diff --git a/node/Node.cpp b/node/Node.cpp
index 871fb21b8..cc076e4d4 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -563,6 +563,7 @@ uint64_t Node::prng()
 
 ZT_ResultCode Node::setPhysicalPathConfiguration(const struct sockaddr_storage *pathNetwork, const ZT_PhysicalPathConfiguration *pathConfig)
 {
+	RR->topology->setPhysicalPathConfiguration(pathNetwork,pathConfig);
 	return ZT_RESULT_OK;
 }