summaryrefslogtreecommitdiff
path: root/node/Packet.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Packet.hpp')
-rw-r--r--node/Packet.hpp64
1 files changed, 60 insertions, 4 deletions
diff --git a/node/Packet.hpp b/node/Packet.hpp
index ddafe4ee..7bcbb821 100644
--- a/node/Packet.hpp
+++ b/node/Packet.hpp
@@ -527,7 +527,7 @@ public:
*/
VERB_EXT_FRAME = 7,
- /* A multicast frame:
+ /* A multicast frame [old multicast protocol, deprecated]:
* <[2] 16-bit propagation depth or 0xffff for "do not forward">
* <[320] propagation FIFO>
* <[1024] propagation bloom filter>
@@ -593,7 +593,7 @@ public:
* ERROR may be generated if a membership certificate is needed for a
* closed network. Payload will be network ID.
*/
- VERB_MULTICAST_FRAME = 8,
+ VERB_P5_MULTICAST_FRAME = 8,
/* Announce interest in multicast group(s):
* <[8] 64-bit network ID>
@@ -657,7 +657,60 @@ public:
* It does not generate an OK or ERROR message, and is treated only as
* a hint to refresh now.
*/
- VERB_NETWORK_CONFIG_REFRESH = 12
+ VERB_NETWORK_CONFIG_REFRESH = 12,
+
+ /* Request endpoints for multicast distribution:
+ * <[1] flags>
+ * <[8] 64-bit network ID>
+ * <[6] MAC address of multicast group being queried>
+ * <[4] 32-bit ADI for multicast group being queried>
+ * <[2] 16-bit (suggested) max number of multicast peers desired>
+ * [<[...] network membership certificate (optional)>]
+ *
+ * Flags are:
+ * 0x01 - network membership certificate is included
+ *
+ * This message asks a peer for additional known endpoints that have
+ * LIKEd a given multicast group. It's sent when the sender wishes
+ * to send multicast but does not have the desired number of recipient
+ * peers. (Hence it is "lonely." :)
+ *
+ * OK response payload:
+ * <[8] 64-bit network ID>
+ * <[6] MAC address of multicast group being queried>
+ * <[4] 32-bit ADI for multicast group being queried>
+ * <[2] 16-bit total number of known members in this multicast group>
+ * <[2] 16-bit number of members enumerated in this packet>
+ * <[...] series of 5-byte ZeroTier addresses of enumerated members>
+ *
+ * ERROR response payload:
+ * <[8] 64-bit network ID>
+ * <[6] MAC address of multicast group being queried>
+ * <[4] 32-bit ADI for multicast group being queried>
+ *
+ * ERRORs are optional and are only generated if permission is denied,
+ * certificate of membership is out of date, etc.
+ */
+ VERB_MULTICAST_LONELY = 13,
+
+ /* Multicast frame:
+ * <[1] flags (currently unused, must be 0)>
+ * <[4] 32-bit multicast ADI (note that this is out of order here -- it precedes MAC)>
+ * <[6] destination MAC or all zero for destination node>
+ * <[6] source MAC or all zero for node of origin>
+ * <[2] 16-bit ethertype>
+ * <[...] ethernet payload>
+ *
+ * This is similar to EXT_FRAME but carries a multicast, and is sent
+ * out to recipients on a multicast list.
+ *
+ * OK is not generated.
+ *
+ * ERROR response payload:
+ * <[6] multicast group MAC>
+ * <[4] 32-bit multicast group ADI>
+ */
+ VERB_MULTICAST_FRAME = 14
};
/**
@@ -687,7 +740,10 @@ public:
ERROR_NEED_MEMBERSHIP_CERTIFICATE = 6,
/* Tried to join network, but you're not a member */
- ERROR_NETWORK_ACCESS_DENIED_ = 7 /* extra _ to avoid Windows name conflict */
+ ERROR_NETWORK_ACCESS_DENIED_ = 7, /* extra _ to avoid Windows name conflict */
+
+ /* Multicasts to this group are not wanted */
+ ERROR_UNWANTED_MULTICAST = 8
};
/**