aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/uapi.h
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-07-22 20:30:34 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2016-07-22 20:30:34 +0200
commitd877ccf5e86dd4506086cb4fd7e1cfb3952ff705 (patch)
tree8ed9e3ffe5edc8e5104ae1258fc9a80d41bea03c /src/uapi.h
parentindex hashtable: run random indices through siphash (diff)
downloadwireguard-monolithic-historical-d877ccf5e86dd4506086cb4fd7e1cfb3952ff705.tar.xz
wireguard-monolithic-historical-d877ccf5e86dd4506086cb4fd7e1cfb3952ff705.zip
tools: Use seqpacket instead of dgram
Diffstat (limited to 'src/uapi.h')
-rw-r--r--src/uapi.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/uapi.h b/src/uapi.h
index c701de3..01dba48 100644
--- a/src/uapi.h
+++ b/src/uapi.h
@@ -129,4 +129,20 @@ struct wgdevice {
};
};
+/* These are simply for convenience in iterating. It allows you to write something like:
+ *
+ * for_each_wgpeer(device, peer, i) {
+ * for_each_wgipmask(peer, ipmask, j) {
+ * do_something_with_ipmask(ipmask);
+ * }
+ * }
+ */
+#define for_each_wgpeer(__dev, __peer, __i) for ((__i) = 0, (__peer) = (typeof(__peer))((uint8_t *)(__dev) + sizeof(struct wgdevice)); \
+ (__i) < (__dev)->num_peers; \
+ ++(__i), (__peer) = (typeof(__peer))((uint8_t *)(__peer) + sizeof(struct wgpeer) + (sizeof(struct wgipmask) * (__peer)->num_ipmasks)))
+
+#define for_each_wgipmask(__peer, __ipmask, __i) for ((__i) = 0, (__ipmask) = (typeof(__ipmask))((uint8_t *)(__peer) + sizeof(struct wgpeer)); \
+ (__i) < (__peer)->num_ipmasks; \
+ ++(__i), (__ipmask) = (typeof(__ipmask))((uint8_t *)(__ipmask) + sizeof(struct wgipmask)))
+
#endif