]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2364] Remove V6 code from Option::pack4()
authorStephen Morris <stephen@isc.org>
Mon, 19 Nov 2012 15:04:51 +0000 (15:04 +0000)
committerStephen Morris <stephen@isc.org>
Mon, 19 Nov 2012 15:04:51 +0000 (15:04 +0000)
src/lib/dhcp/option.cc

index d2be1d294ec4471ee52d583b666dd8a7c85b07d0..b4f36d9ae7d6f4282eff25ab7e9a4b1921b876b3 100644 (file)
@@ -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,