diff options
author | Sepherosa Ziehau <sephe@FreeBSD.org> | 2016-09-06 03:20:06 +0000 |
---|---|---|
committer | Sepherosa Ziehau <sephe@FreeBSD.org> | 2016-09-06 03:20:06 +0000 |
commit | b3493578195208152dfbeaa5f41cc0648aa2f17d (patch) | |
tree | d6eeb20b36d3f36037358d27e0fde591c6f5f582 /sys/net/rndis.h | |
parent | 7be8de4271d5cb5d441e2757912c1824f6c3dc3b (diff) | |
download | src-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.h | 14 |
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. */ |