/* Copyright 2015-2016 Jason A. Donenfeld . All Rights Reserved. */ #ifndef KERNEL_H #define KERNEL_H #include struct wgdevice; int kernel_set_device(struct wgdevice *dev); int kernel_get_device(struct wgdevice **dev, const char *interface); char *kernel_get_wireguard_interfaces(void); bool kernel_has_wireguard_interface(const char *interface); #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