Option::check() {
if ( (universe_ != V4) && (universe_ != V6) ) {
isc_throw(BadValue, "Invalid universe type specified. "
- "Only V4 and V6 are allowed.");
+ << "Only V4 and V6 are allowed.");
}
if (universe_ == V4) {
switch (universe_) {
case V6:
return (pack6(buf));
+
case V4:
return (pack4(buf));
+
default:
- isc_throw(BadValue, "Failed to pack " << type_ << " option. Do not "
- << "use this method for options other than DHCPv6.");
+ isc_throw(BadValue, "Failed to pack " << type_ << " option as the "
+ << "universe type is unknown.");
}
}
LibDHCP::packOptions(buf, options_);
} else {
- isc_throw(OutOfRange, "Invalid universe type " << universe_);
+ isc_throw(BadValue, "Invalid universe type " << universe_);
}
return;
LibDHCP::packOptions6(buf, options_);
} else {
- isc_throw(OutOfRange, "Invalid universe type " << universe_);
+ isc_throw(BadValue, "Invalid universe type " << universe_);
}
return;
}
/// This constructor takes vector<uint8_t>& which is used in cases
/// when content of the option will be copied and stored within
/// option object. V4 Options follow that approach already.
- /// TODO Migrate V6 options to that approach.
+ /// @todo Migrate V6 options to that approach.
///
/// @param u specifies universe (V4 or V6)
/// @param type option type (0-255 for V4 and 0-65535 for V6)
/// This contructor is similar to the previous one, but it does not take
/// the whole vector<uint8_t>, but rather subset of it.
///
- /// TODO: This can be templated to use different containers, not just
+ /// @todo This can be templated to use different containers, not just
/// vector. Prototype should look like this:
/// template<typename InputIterator> Option(Universe u, uint16_t type,
/// InputIterator first, InputIterator last);
/// byte after stored option (that is useful for writing options one after
/// another). Used in DHCPv6 options.
///
- /// TODO: Migrate DHCPv6 code to pack(OutputBuffer& buf) version
+ /// @todo Migrate DHCPv6 code to pack(OutputBuffer& buf) version
///
/// @param buf pointer to a buffer
+ ///
+ /// @throw BadValid Universe of the option is neither V4 nor V6.
virtual void pack(isc::util::OutputBuffer& buf);
/// @brief Writes option in a wire-format to a buffer.
///
/// Method will throw if option storing fails for some reason.
///
- /// TODO Once old (DHCPv6) implementation is rewritten,
+ /// @todo Once old (DHCPv6) implementation is rewritten,
/// unify pack4() and pack6() and rename them to just pack().
///
/// @param buf output buffer (option will be stored there)
+ ///
+ /// @throw OutOfRange Option type is greater than 255.
+ /// @throw BadValid Universe is not V4.
virtual void pack4(isc::util::OutputBuffer& buf);
/// @brief Parses received buffer.
/// defined suboptions. Version for building DHCPv4 options.
///
/// @param buf output buffer (built options will be stored here)
+ ///
+ /// @throw BadValid Universe is not V6.
virtual void pack6(isc::util::OutputBuffer& buf);
/// @brief A private method used for option correctness.
/// collection for storing suboptions
OptionCollection options_;
- /// TODO: probably 2 different containers have to be used for v4 (unique
+ /// @todo probably 2 different containers have to be used for v4 (unique
/// options) and v6 (options with the same type can repeat)
};