From: Stephen Morris Date: Mon, 19 Nov 2012 15:04:51 +0000 (+0000) Subject: [2364] Remove V6 code from Option::pack4() X-Git-Tag: bind10-1.0.0-beta-release~46^2~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b6203bf733422707388f45bc0bece9b3fe40e49d;p=thirdparty%2Fkea.git [2364] Remove V6 code from Option::pack4() --- diff --git a/src/lib/dhcp/option.cc b/src/lib/dhcp/option.cc index d2be1d294e..b4f36d9ae7 100644 --- a/src/lib/dhcp/option.cc +++ b/src/lib/dhcp/option.cc @@ -97,8 +97,7 @@ void Option::pack(isc::util::OutputBuffer& buf) { void Option::pack4(isc::util::OutputBuffer& buf) { - switch (universe_) { - case V4: { + if (universe_ == V4) { if (len() > 255) { isc_throw(OutOfRange, "DHCPv4 Option " << type_ << " is too big." << "At most 255 bytes are supported."); @@ -109,33 +108,32 @@ Option::pack4(isc::util::OutputBuffer& buf) { buf.writeUint8(type_); buf.writeUint8(len() - getHeaderLen()); - - buf.writeData(&data_[0], data_.size()); + if (!data_.empty()) { + buf.writeData(&data_[0], data_.size()); + } LibDHCP::packOptions(buf, options_); - return; - } - case V6: - /// TODO: Do we need a sanity check for option size here? - buf.writeUint16(type_); - buf.writeUint16(len() - getHeaderLen()); - LibDHCP::packOptions(buf, options_); - return; - default: + } else { isc_throw(OutOfRange, "Invalid universe type" << universe_); } + + return; } void Option::pack6(isc::util::OutputBuffer& buf) { - buf.writeUint16(type_); - buf.writeUint16(len() - getHeaderLen()); + if (universe_ == V6) { + buf.writeUint16(type_); + buf.writeUint16(len() - getHeaderLen()); + if (!data_.empty()) { + buf.writeData(&data_[0], data_.size()); + } - if (! data_.empty()) { - buf.writeData(&data_[0], data_.size()); + LibDHCP::packOptions6(buf, options_); + } else { + isc_throw(OutOfRange, "Invalid universe type" << universe_); } - - return LibDHCP::packOptions6(buf, options_); + return; } void Option::unpack(OptionBufferConstIter begin,