aboutsummaryrefslogtreecommitdiff
path: root/sys/net/rndis.h
diff options
context:
space:
mode:
authorSepherosa Ziehau <sephe@FreeBSD.org>2016-09-06 03:20:06 +0000
committerSepherosa Ziehau <sephe@FreeBSD.org>2016-09-06 03:20:06 +0000
commitb3493578195208152dfbeaa5f41cc0648aa2f17d (patch)
treed6eeb20b36d3f36037358d27e0fde591c6f5f582 /sys/net/rndis.h
parent7be8de4271d5cb5d441e2757912c1824f6c3dc3b (diff)
downloadsrc-b3493578195208152dfbeaa5f41cc0648aa2f17d.tar.gz
src-b3493578195208152dfbeaa5f41cc0648aa2f17d.zip
hyperv/hn: Stringent RNDIS packet message length/offset check.
While I'm here, use definition in net/rndis.h MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D7782
Notes
Notes: svn path=/head/; revision=305453
Diffstat (limited to 'sys/net/rndis.h')
-rw-r--r--sys/net/rndis.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/net/rndis.h b/sys/net/rndis.h
index fd0f22595732..2cd1a0d7158c 100644
--- a/sys/net/rndis.h
+++ b/sys/net/rndis.h
@@ -127,6 +127,14 @@ struct rndis_packet_msg {
(sizeof(struct rndis_packet_msg) - \
__offsetof(struct rndis_packet_msg, rm_dataoffset))
+/* Offset from the beginning of rndis_packet_msg. */
+#define RNDIS_PACKET_MSG_OFFSET_ABS(ofs) \
+ ((ofs) + __offsetof(struct rndis_packet_msg, rm_dataoffset))
+
+#define RNDIS_PACKET_MSG_OFFSET_ALIGN 4
+#define RNDIS_PACKET_MSG_OFFSET_ALIGNMASK \
+ (RNDIS_PACKET_MSG_OFFSET_ALIGN - 1)
+
/* Per-packet-info for RNDIS data message */
struct rndis_pktinfo {
uint32_t rm_size;
@@ -137,7 +145,8 @@ struct rndis_pktinfo {
#define RNDIS_PKTINFO_OFFSET \
__offsetof(struct rndis_pktinfo, rm_data[0])
-#define RNDIS_PKTINFO_ALIGN 4
+#define RNDIS_PKTINFO_SIZE_ALIGN 4
+#define RNDIS_PKTINFO_SIZE_ALIGNMASK (RNDIS_PKTINFO_SIZE_ALIGN - 1)
#define NDIS_PKTINFO_TYPE_CSUM 0
#define NDIS_PKTINFO_TYPE_IPSEC 1
@@ -236,7 +245,8 @@ struct rndis_query_comp {
uint32_t rm_infobufoffset;
};
-#define RNDIS_QUERY_COMP_INFOBUFABS(ofs) \
+/* infobuf offset from the beginning of rndis_query_comp. */
+#define RNDIS_QUERY_COMP_INFOBUFOFFSET_ABS(ofs) \
((ofs) + __offsetof(struct rndis_query_req, rm_rid))
/* Send a set object request. */