wg_peer
struct wg_peer_io *wg_peer = NULL;
peer_offset = (void *)wg_peer - (void *)wg_interface;
if (wg_peer != NULL)
wg_peer = (void *)wg_interface + peer_offset;
growwgdata(sizeof(*wg_peer));
wg_peer = (struct wg_peer_io *)wg_aip;
wg_peer = &wg_interface->i_peers[0];
wg_aip = &wg_peer->p_aips[0];
wg_peer->p_flags |= WG_PEER_HAS_PUBLIC;
WG_LOAD_KEY(wg_peer->p_public, peerkey_b64, "wgpeer");
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_SET_DESCRIPTION;
strlcpy(wg_peer->p_description, descr, IFDESCRSIZE);
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_REPLACE_AIPS;
wg_peer->p_aips_count++;
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_HAS_ENDPOINT;
memcpy(&wg_peer->p_sa, ai->ai_addr, ai->ai_addrlen);
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_HAS_PSK;
WG_LOAD_KEY(wg_peer->p_psk, psk_b64, "wgpsk");
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_HAS_PKA;
wg_peer->p_pka = strtonum(pka, 0, 43200, &errmsg);
wg_peer->p_flags |= WG_PEER_REMOVE;
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_SET_DESCRIPTION;
strlcpy(wg_peer->p_description, "", IFDESCRSIZE);
if (wg_peer == NULL)
wg_peer->p_flags |= WG_PEER_HAS_PSK;
bzero(wg_peer->p_psk, WG_KEY_LEN);
wg_peer = &wg_interface->i_peers[0];
b64_ntop(wg_peer->p_public, WG_KEY_LEN,
if (strlen(wg_peer->p_description))
wg_peer->p_description);
if (wg_peer->p_flags & WG_PEER_HAS_PSK)
if (wg_peer->p_flags & WG_PEER_HAS_PKA && wg_peer->p_pka)
printf("\t\twgpka %u (sec)\n", wg_peer->p_pka);
if (wg_peer->p_flags & WG_PEER_HAS_ENDPOINT) {
if (getnameinfo(&wg_peer->p_sa, wg_peer->p_sa.sa_len,
wg_peer->p_txbytes, wg_peer->p_rxbytes);
if (wg_peer->p_last_handshake.tv_sec != 0) {
now.tv_sec - wg_peer->p_last_handshake.tv_sec);
wg_aip = &wg_peer->p_aips[0];
for (j = 0; j < wg_peer->p_aips_count; j++) {
wg_peer = (struct wg_peer_io *)wg_aip;
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
struct wg_peer *peer = CONTAINER_OF(t, struct wg_peer, p_timers);
wg_peer_send_buf(struct wg_peer *peer, uint8_t *buf, size_t len)
struct wg_peer *peer = _peer;
wg_send_response(struct wg_peer *peer)
struct wg_peer *peer = _peer;
struct wg_peer *peer = _peer;
struct wg_peer *peer;
peer = CONTAINER_OF(remote, struct wg_peer, p_remote);
peer = CONTAINER_OF(remote, struct wg_peer, p_remote);
struct wg_peer *t_peer;
peer = CONTAINER_OF(remote, struct wg_peer, p_remote);
struct wg_peer *peer;
struct wg_peer *peer, *allowed_peer;
struct wg_peer *peer = _peer;
struct wg_peer *peer = _peer;
struct wg_peer *a_peer;
wg_queue_in(struct wg_softc *sc, struct wg_peer *peer, struct mbuf *m)
wg_queue_out(struct wg_softc *sc, struct wg_peer *peer)
struct wg_peer *peer;
struct wg_peer *peer;
LIST_ENTRY(wg_peer) p_pubkey_entry;
peer = CONTAINER_OF(remote, struct wg_peer, p_remote);
TAILQ_ENTRY(wg_peer) p_seq_entry;
struct wg_peer *peer = NULL;
peer = CONTAINER_OF(iter->i_value, struct wg_peer, p_remote);
t->t_peer = CONTAINER_OF(remote, struct wg_peer,
struct wg_peer *peer;
SLIST_HEAD(,wg_peer) start_list;
struct wg_peer *peer;
struct wg_peer *peer, *tpeer;
SLIST_ENTRY(wg_peer) p_start_list;
struct wg_peer *peer;
struct wg_peer *peer;
LIST_HEAD(,wg_peer) *sc_peer;
struct wg_peer *peer;
TAILQ_HEAD(,wg_peer) sc_peer_seq;
struct wg_peer *
struct wg_peer *peer, *tpeer;
struct wg_peer *
void wg_peer_destroy(struct wg_peer *);
pool_init(&wg_peer_pool, sizeof(struct wg_peer), 0,
void wg_peer_set_endpoint_from_tag(struct wg_peer *, struct wg_tag *);
void wg_peer_set_sockaddr(struct wg_peer *, struct sockaddr *);
int wg_peer_get_sockaddr(struct wg_peer *, struct sockaddr *);
void wg_peer_clear_src(struct wg_peer *);
void wg_peer_get_endpoint(struct wg_peer *, struct wg_endpoint *);
void wg_peer_counters_add(struct wg_peer *, uint64_t, uint64_t);
int wg_aip_add(struct wg_softc *, struct wg_peer *, struct wg_aip_io *);
struct wg_peer *
int wg_aip_remove(struct wg_softc *, struct wg_peer *,
void wg_peer_send_buf(struct wg_peer *, uint8_t *, size_t);
void wg_send_response(struct wg_peer *);
int wg_queue_in(struct wg_softc *, struct wg_peer *, struct mbuf *);
void wg_queue_out(struct wg_softc *, struct wg_peer *);
struct wg_peer *
struct wg_peer *peer;
struct wg_peer *
struct wg_peer *peer;
wg_peer_destroy(struct wg_peer *peer)
wg_peer_set_endpoint_from_tag(struct wg_peer *peer, struct wg_tag *t)
wg_peer_set_sockaddr(struct wg_peer *peer, struct sockaddr *remote)
wg_peer_get_sockaddr(struct wg_peer *peer, struct sockaddr *remote)
wg_peer_clear_src(struct wg_peer *peer)
wg_peer_get_endpoint(struct wg_peer *peer, struct wg_endpoint *endpoint)
wg_peer_counters_add(struct wg_peer *peer, uint64_t tx, uint64_t rx)
wg_aip_add(struct wg_softc *sc, struct wg_peer *peer, struct wg_aip_io *d)
struct wg_peer *
wg_aip_remove(struct wg_softc *sc, struct wg_peer *peer, struct wg_aip_io *d)