2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-23 02:17:33 +00:00
kea/src/lib/dhcp/classify.h

68 lines
2.3 KiB
C
Raw Normal View History

2014-02-03 18:50:24 +01:00
// 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 <config.h>
#ifndef CLASSIFY_H
#define CLASSIFY_H
2014-02-03 18:50:24 +01:00
#include <set>
#include <string>
/// @file classify.h
///
/// @brief Defines basic elements of client classification.
///
/// This file defines common elements used for client classification.
/// It is simple for now, but the complexity involved in client
/// classification is expected to grow significantly.
///
/// @todo This file should be moved to dhcpsrv eventually as the classification
/// is server side concept. That is not possible yet, as the Pkt4 and Pkt6
/// classes have server-side implementation, even though they reside in the
/// dhcp directory.
namespace isc {
namespace dhcp {
/// Definition of a single class.
typedef std::string ClientClass;
2014-02-03 18:50:24 +01:00
/// Container for storing client classes
///
/// Depending on how you look at it, this is either a little more than just
/// a set of strings or a client classifier that performs access control.
/// For now, it is a simple access list that may contain zero or more
/// class names. It is expected to grow in complexity once support for
/// client classes becomes more feature rich.
class ClientClasses : public std::set<ClientClass> {
public:
/// @brief returns if class X belongs to the defined classes
///
/// @param x client class to be checked
/// @return true if X belongs to the classes
bool
contains(const ClientClass& x) const {
const_iterator it = find(x);
return (it != end());
}
};
2014-02-03 18:50:24 +01:00
};
};
#endif /* CLASSIFY_H */