#ifndef _BIRD_WIREGUARD_H #define _BIRD_WIREGUARD_H #include "nest/protocol.h" #include "sysdep/linux/wireguard.h" #ifdef LOCAL_DEBUG #define WG_FORCE_DEBUG 1 #else #define WG_FORCE_DEBUG 0 #endif #define WG_TRACE(flags, msg, args...) do { if ((p->p.debug & flags) || WG_FORCE_DEBUG) \ log(L_TRACE "%s: " msg, p->p.name , ## args ); } while(0) struct wg_allowedips { struct wg_allowedip *first_allowedip; struct wg_allowedip *last_allowedip; }; struct peer_config { node n; const byte *public_key; u16 listen_port; ip_addr endpoint; u16 remote_port; struct wg_allowedips *allowedips; }; struct wg_config { struct proto_config c; const char *ifname; const char *socket_path; const byte *private_key; u16 tunnel_type; u16 listen_port; list peers; }; struct wg_proto { struct proto p; struct iface *iface; wg_key private_key; wg_device *dev; }; struct wg_channel_config { struct channel_config c; }; struct wg_channel { struct channel c; struct fib rtable; }; struct wg_entry { bool is_tunnel_ep; wg_key public_key; struct fib_node n; }; extern struct channel_class channel_wg; struct peer_config *peer_new(struct wg_config *c); #endif /* _BIRD_WIREGUARD_H */