aboutsummaryrefslogtreecommitdiffstats
path: root/src/if_wg.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-04-28 19:39:33 -0400
committerJason A. Donenfeld <Jason@zx2c4.com>2021-04-28 19:39:33 -0400
commita3e01095e2ea09cf19d8282cc02b85b4829d4be9 (patch)
treefdc7ee9f25d9dc88a87facf0020b0d7cfb5907c5 /src/if_wg.c
parentif_wg: do not block for memory when sending buffer (diff)
downloadwireguard-freebsd-a3e01095e2ea09cf19d8282cc02b85b4829d4be9.tar.xz
wireguard-freebsd-a3e01095e2ea09cf19d8282cc02b85b4829d4be9.zip
if_wg: write data header directly
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/if_wg.c')
-rw-r--r--src/if_wg.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/if_wg.c b/src/if_wg.c
index 71b8a2c..13a6b66 100644
--- a/src/if_wg.c
+++ b/src/if_wg.c
@@ -1488,7 +1488,7 @@ wg_mbuf_reset(struct mbuf *m)
static void
wg_encrypt(struct wg_softc *sc, struct wg_packet *pkt)
{
- struct wg_pkt_data data;
+ struct wg_pkt_data *data;
struct wg_peer *peer;
struct noise_remote *remote;
struct mbuf *m;
@@ -1520,11 +1520,10 @@ wg_encrypt(struct wg_softc *sc, struct wg_packet *pkt)
M_PREPEND(m, sizeof(struct wg_pkt_data), M_NOWAIT);
if (m == NULL)
goto out;
-
- data.t = WG_PKT_DATA;
- data.r_idx = idx;
- data.nonce = htole64(pkt->p_nonce);
- memcpy(mtod(m, void *), &data, sizeof(struct wg_pkt_data));
+ data = mtod(m, struct wg_pkt_data *);
+ data->t = WG_PKT_DATA;
+ data->r_idx = idx;
+ data->nonce = htole64(pkt->p_nonce);
wg_mbuf_reset(m);
state = WG_PACKET_CRYPTED;