Config.h revision fc2936cb0bee5f5a4fa2d1aa50d72d9f31d69555
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright (C) 2013 Oracle Corporation
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * available from http://www.virtualbox.org. This file is free software;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * you can redistribute it and/or modify it under the terms of the GNU
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * General Public License (GPL) as published by the Free Software
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "../NetLib/cpp/utils.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncstatic bool operator > (const RTNETADDRIPV4& a, const RTNETADDRIPV4& b)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync return (b < a);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * it's a basic representation of
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * of out undestanding what client is
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * XXX: Client might sends Option 61 (RFC2132 9.14 "Client-identifier") signalling
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * that we may identify it in special way
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * XXX: Client might send Option 60 (RFC2132 9.13 "Vendor class undentifier")
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * in response it's expected server sends Option 43 (RFC2132 8.4. "Vendor Specific Information")
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /** Dumps client query */
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef std::map<uint8_t, RawOption> MapOptionId2RawOption;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapOptionId2RawOption::iterator MapOptionId2RawOptionIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapOptionId2RawOption::const_iterator MapOptionId2RawOptionConstIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapOptionId2RawOption::value_type MapOptionId2RawOptionValue;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync friend bool operator== (const Lease&, const Lease&);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync //friend int ConfigurationManager::loadFromFile(const std::string&);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync bool isExpired() const;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Depending on phase *Expiration and phaseStart initialize different values. */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* returns 0 if in binding state */
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef VecClient::const_iterator VecClientConstIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MacAddressContainer::iterator MacAddressIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef std::vector<RTNETADDRIPV4> Ipv4AddressContainer;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef Ipv4AddressContainer::iterator Ipv4AddressIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef Ipv4AddressContainer::const_iterator Ipv4AddressConstIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef std::map<Lease, RTNETADDRIPV4> MapLease2Ip4Address;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapLease2Ip4Address::iterator MapLease2Ip4AddressIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapLease2Ip4Address::const_iterator MapLease2Ip4AddressConstIterator;
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef MapLease2Ip4Address::value_type MapLease2Ip4AddressPair;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync virtual bool check(const Client&) const {return false;};
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ORClientMatchCriteria(ClientMatchCriteria *left, ClientMatchCriteria *right)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync return (m_left->check(client) || m_right->check(client));
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ANDClientMatchCriteria(ClientMatchCriteria *left, ClientMatchCriteria *right)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync return (m_left->check(client) && m_right->check(client));
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncclass AnyClientMatchCriteria: public ClientMatchCriteria
f0ab104f070bc7f569404826fea1828ed985638cvboxsync return true;
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncclass MACClientMatchCriteria: public ClientMatchCriteria
f0ab104f070bc7f569404826fea1828ed985638cvboxsync MACClientMatchCriteria(const RTMAC& mac):m_mac(mac){}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* XXX: Later */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncclass VmSlotClientMatchCriteria: public ClientMatchCriteria
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* Option 60 */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncclass ClassClientMatchCriteria: ClientMatchCriteria{};
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/* Option 61 */
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncclass ClientIdentifierMatchCriteria: ClientMatchCriteria{};
f0ab104f070bc7f569404826fea1828ed985638cvboxsync BaseConfigEntity(const ClientMatchCriteria *criteria = NULL,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* Should return how strong matching */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync virtual int match(Client& client, BaseConfigEntity **cfg);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync virtual uint32_t expirationPeriod() const {return 0;}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* range */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync /* match conditions */
if (!m_u32ExpirationPeriod)
return m_u32ExpirationPeriod;
int matchlvl,
int saveToFile();
void init();
struct Data;
Data *m;
~NetworkManager();
int processParameterReqList(const Client& client, const uint8_t *pu8ReqList, int cReqList, std::vector<RawOption>& extra);
struct Data;
Data *m;
m_fUsed(0),
m_fOverflowed(false)
bool useBpFile(void)
if ( m_pfOverload
bool overloadMore(void)
if (!m_pfOverload)
if (!overloadMore())
m_fOverflowed = true;
m_fOverflowed = true;
for (size_t i = 0; i < c; i++)
if (!cch)
bool hasOverflowed(void) const
return m_fOverflowed;
bool optEnd(void)
return !hasOverflowed();