diff options
author | 2009-06-04 17:51:38 +0000 | |
---|---|---|
committer | 2009-06-04 17:51:38 +0000 | |
commit | 977663ad4507440d2e918058550ce37d50e61195 (patch) | |
tree | 1986df91c757d0fcc8c242b5bd322d94785fd5c1 | |
parent | the POOL_DEBUG checks needed to be more friendly with DIAGNOSTIC (diff) | |
download | wireguard-openbsd-977663ad4507440d2e918058550ce37d50e61195.tar.xz wireguard-openbsd-977663ad4507440d2e918058550ce37d50e61195.zip |
make the imsg framework endian-safe so that it can also be used
for network message passing.
ok pyr@
-rw-r--r-- | usr.sbin/relayd/imsg.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/usr.sbin/relayd/imsg.c b/usr.sbin/relayd/imsg.c index 0346651a3f2..a0a915c6f36 100644 --- a/usr.sbin/relayd/imsg.c +++ b/usr.sbin/relayd/imsg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: imsg.c,v 1.16 2009/06/04 07:16:38 eric Exp $ */ +/* $OpenBSD: imsg.c,v 1.17 2009/06/04 17:51:38 eric Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -103,6 +103,9 @@ imsg_get(struct imsgbuf *ibuf, struct imsg *imsg) return (0); memcpy(&imsg->hdr, ibuf->r.buf, sizeof(imsg->hdr)); + imsg->hdr.type = ntohs(imsg->hdr.type); + imsg->hdr.len = ntohs(imsg->hdr.len); + imsg->hdr.peerid = ntohl(imsg->hdr.peerid); if (imsg->hdr.len < IMSG_HEADER_SIZE || imsg->hdr.len > MAX_IMSGSIZE) { log_warnx("imsg_get: imsg hdr len %u out of bounds, type=%u", @@ -224,7 +227,9 @@ imsg_close(struct imsgbuf *ibuf, struct buf *msg) struct imsg_hdr *hdr; hdr = (struct imsg_hdr *)msg->buf; - hdr->len = (u_int16_t)msg->wpos; + hdr->type = htons(hdr->type); + hdr->len = htons(msg->wpos); + hdr->peerid = htonl(hdr->peerid); buf_close(&ibuf->w, msg); imsg_event_add(ibuf); |