Browse Source

[2364] Remove V6 code from Option::pack4()

Stephen Morris 12 years ago
parent
commit
b6203bf733
1 changed files with 17 additions and 19 deletions
  1. 17 19
      src/lib/dhcp/option.cc

+ 17 - 19
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,