BIND 10 trac1540, updated. 795efe06b737662b662ad549b1afa881537790df [1540] Updates after review.
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Mar 12 21:59:23 UTC 2012
The branch, trac1540 has been updated
via 795efe06b737662b662ad549b1afa881537790df (commit)
from b8ccce76cae1fd13b07b0c4ce155a5d95d76de12 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 795efe06b737662b662ad549b1afa881537790df
Author: Tomek Mrugalski <tomasz at isc.org>
Date: Mon Mar 12 22:58:58 2012 +0100
[1540] Updates after review.
-----------------------------------------------------------------------
Summary of changes:
src/bin/dhcp6/dhcp6_srv.cc | 2 +-
src/lib/dhcp/iface_mgr.cc | 30 ++++++++++++++++--------------
2 files changed, 17 insertions(+), 15 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc
index a4b0783..0b1b577 100644
--- a/src/bin/dhcp6/dhcp6_srv.cc
+++ b/src/bin/dhcp6/dhcp6_srv.cc
@@ -189,7 +189,7 @@ void Dhcpv6Srv::setServerID() {
// some interfaces (like lo on Linux) report 6-bytes long
// MAC adress 00:00:00:00:00:00. Let's not use such weird interfaces
// to generate DUID.
- if (!memcmp(iface->mac_, zeros, iface->mac_len_)) {
+ if (isRangeZero(iface->mac_, iface->mac_ + iface->mac_len_)) {
continue;
}
diff --git a/src/lib/dhcp/iface_mgr.cc b/src/lib/dhcp/iface_mgr.cc
index b09d76d..be9e188 100644
--- a/src/lib/dhcp/iface_mgr.cc
+++ b/src/lib/dhcp/iface_mgr.cc
@@ -533,11 +533,7 @@ const std::string & mcast) {
bool
IfaceMgr::send(const Pkt6Ptr& pkt) {
- struct msghdr m;
- struct iovec v;
int result;
- struct in6_pktinfo *pktinfo;
- struct cmsghdr *cmsg;
Iface* iface = getIface(pkt->getIface());
if (!iface) {
@@ -547,8 +543,6 @@ IfaceMgr::send(const Pkt6Ptr& pkt) {
memset(&control_buf_[0], 0, control_buf_len_);
- // Initialize our message header structure.
- memset(&m, 0, sizeof(m));
// Set the target address we're sending to.
sockaddr_in6 to;
@@ -560,6 +554,9 @@ IfaceMgr::send(const Pkt6Ptr& pkt) {
16);
to.sin6_scope_id = pkt->getIndex();
+ // Initialize our message header structure.
+ struct msghdr m;
+ memset(&m, 0, sizeof(m));
m.msg_name = &to;
m.msg_namelen = sizeof(to);
@@ -574,6 +571,8 @@ IfaceMgr::send(const Pkt6Ptr& pkt) {
// (defined as void*) we must use const cast from void *.
// Otherwise C++ compiler would complain that we are trying
// to assign const void* to void*.
+ struct iovec v;
+ memset(&v, 0, sizeof(v));
v.iov_base = const_cast<void *>(pkt->getBuffer().getData());
v.iov_len = pkt->getBuffer().getLength();
m.msg_iov = &v;
@@ -587,11 +586,11 @@ IfaceMgr::send(const Pkt6Ptr& pkt) {
// kernel decide what that should be.
m.msg_control = &control_buf_[0];
m.msg_controllen = control_buf_len_;
- cmsg = CMSG_FIRSTHDR(&m);
+ struct cmsghdr *cmsg = CMSG_FIRSTHDR(&m);
cmsg->cmsg_level = IPPROTO_IPV6;
cmsg->cmsg_type = IPV6_PKTINFO;
- cmsg->cmsg_len = CMSG_LEN(sizeof(*pktinfo));
- pktinfo = convertPktInfo6(CMSG_DATA(cmsg));
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
+ struct in6_pktinfo *pktinfo = convertPktInfo6(CMSG_DATA(cmsg));
memset(pktinfo, 0, sizeof(*pktinfo));
pktinfo->ipi6_ifindex = pkt->getIndex();
m.msg_controllen = cmsg->cmsg_len;
@@ -612,8 +611,6 @@ IfaceMgr::send(const Pkt6Ptr& pkt) {
bool
IfaceMgr::send(const Pkt4Ptr& pkt)
{
- struct msghdr m;
- struct iovec v;
Iface* iface = getIface(pkt->getIface());
if (!iface) {
@@ -623,8 +620,6 @@ IfaceMgr::send(const Pkt4Ptr& pkt)
memset(&control_buf_[0], 0, control_buf_len_);
- // Initialize our message header structure.
- memset(&m, 0, sizeof(m));
// Set the target address we're sending to.
sockaddr_in to;
@@ -633,13 +628,20 @@ IfaceMgr::send(const Pkt4Ptr& pkt)
to.sin_port = htons(pkt->getRemotePort());
to.sin_addr.s_addr = htonl(pkt->getRemoteAddr());
+ struct msghdr m;
+ // Initialize our message header structure.
+ memset(&m, 0, sizeof(m));
m.msg_name = &to;
m.msg_namelen = sizeof(to);
// Set the data buffer we're sending. (Using this wacky
// "scatter-gather" stuff... we only have a single chunk
// of data to send, so we declare a single vector entry.)
- v.iov_base = (char *) pkt->getBuffer().getData();
+ struct iovec v;
+ memset(&v, 0, sizeof(v));
+ // iov_base field is of void * type. We use it for packet
+ // transmission, so this buffer will not be modified.
+ v.iov_base = const_cast<void *>(pkt->getBuffer().getData());
v.iov_len = pkt->getBuffer().getLength();
m.msg_iov = &v;
m.msg_iovlen = 1;
More information about the bind10-changes
mailing list