|
@@ -0,0 +1,41 @@
|
|
|
+// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
|
|
|
+//
|
|
|
+// Permission to use, copy, modify, and/or distribute this software for any
|
|
|
+// purpose with or without fee is hereby granted, provided that the above
|
|
|
+// copyright notice and this permission notice appear in all copies.
|
|
|
+//
|
|
|
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
|
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
|
+// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
|
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
+// PERFORMANCE OF THIS SOFTWARE.
|
|
|
+
|
|
|
+#include <dhcp/classify.h>
|
|
|
+#include <util/strutil.h>
|
|
|
+#include <boost/algorithm/string/classification.hpp>
|
|
|
+#include <boost/algorithm/string/constants.hpp>
|
|
|
+#include <boost/algorithm/string/split.hpp>
|
|
|
+#include <vector>
|
|
|
+
|
|
|
+namespace isc {
|
|
|
+namespace dhcp {
|
|
|
+
|
|
|
+ClientClasses::ClientClasses(const std::string& class_names)
|
|
|
+ : std::set<ClientClass>() {
|
|
|
+ std::vector<std::string> split_text;
|
|
|
+ boost::split(split_text, class_names, boost::is_any_of(","),
|
|
|
+ boost::algorithm::token_compress_off);
|
|
|
+ for (int i = 0; i < split_text.size(); ++i) {
|
|
|
+ std::string trimmed = util::str::trim(split_text[i]);
|
|
|
+ // Ignore empty class names.
|
|
|
+ if (!trimmed.empty()) {
|
|
|
+ insert(ClientClass(trimmed));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+} // end of namespace isc::dhcp
|
|
|
+} // end of namespace isc
|
|
|
+
|