diff options
author | Shawn Routhier <sar@isc.org> | 2015-04-15 12:46:52 -0700 |
---|---|---|
committer | Shawn Routhier <sar@isc.org> | 2015-04-15 12:46:52 -0700 |
commit | 1c0b7d66b67f85c96f62d94896ad6403fffc79dc (patch) | |
tree | 68a1a1931d1aabf3498c2d476f0e329c9db6a991 /common | |
parent | 20c0fdc783818e264c467995904bcd1156913cdd (diff) | |
download | isc-dhcp-1c0b7d66b67f85c96f62d94896ad6403fffc79dc.tar.gz |
[master] Expand use of #ifdef PACKET_AUXDATA to cover allocating cmsgbuf
Most of the use of tpacket_auxdata was alredy protected by PACKET_AUXDATA
this patch covers trying to find the proper size for the cmsgbuf.
Diffstat (limited to 'common')
-rw-r--r-- | common/lpf.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/common/lpf.c b/common/lpf.c index cd430dd7..7889b6bb 100644 --- a/common/lpf.c +++ b/common/lpf.c @@ -368,17 +368,30 @@ ssize_t receive_packet (interface, buf, len, from, hfrom) unsigned char ibuf [1536]; unsigned bufix = 0; unsigned paylen; - unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))]; struct iovec iov = { .iov_base = ibuf, .iov_len = sizeof ibuf, }; +#ifdef PACKET_AUXDATA + /* + * We only need cmsgbuf if we are getting the aux data and we + * only get the auxdata if it is actually defined + */ + unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))]; struct msghdr msg = { .msg_iov = &iov, .msg_iovlen = 1, .msg_control = cmsgbuf, .msg_controllen = sizeof(cmsgbuf), }; +#else + struct msghdr msg = { + .msg_iov = &iov, + .msg_iovlen = 1, + .msg_control = NULL, + .msg_controllen = 0, + }; +#endif /* PACKET_AUXDATA */ length = recvmsg (interface->rfdesc, &msg, 0); if (length <= 0) @@ -422,7 +435,7 @@ ssize_t receive_packet (interface, buf, len, from, hfrom) } } -#endif +#endif /* PACKET_AUXDATA */ bufix = 0; /* Decode the physical header... */ |