1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
* Dibbler - a portable DHCPv6
*
* author: Krzysztof Wnuk <keczi@poczta.onet.pl>
*
* released under GNU GPL v2 only licence
*/
#include <iostream>
#include <iomanip>
#include "ClntCfgPD.h"
#include "DHCPDefaults.h"
#include "Logger.h"
using namespace std;
TClntCfgPD::TClntCfgPD()
:T1_(CLIENT_DEFAULT_T1), T2_(CLIENT_DEFAULT_T2),
PrefixLength_(64), State_(STATE_NOTCONFIGURED)
{
static unsigned long nextIAID=1;
IAID_ = nextIAID++;
}
long TClntCfgPD::countPrefixes() {
return ClntCfgPrefixLst_.count();
}
unsigned long TClntCfgPD::getT1() {
return T1_;
}
char TClntCfgPD::getPrefixLength() {
return PrefixLength_;
}
unsigned long TClntCfgPD::getT2() {
return T2_;
}
void TClntCfgPD::setState(enum EState state) {
State_ = state;
}
enum EState TClntCfgPD::getState() {
return State_;
}
long TClntCfgPD::getIAID() {
return IAID_;
}
void TClntCfgPD::setIAID(long iaid) {
IAID_ = iaid;
}
void TClntCfgPD::setOptions(SPtr<TClntParsGlobalOpt> opt) {
T1_ = opt->getT1();
T2_ = opt->getT2();
}
void TClntCfgPD::firstPrefix() {
ClntCfgPrefixLst_.first();
}
SPtr<TClntCfgPrefix> TClntCfgPD::getPrefix() {
return ClntCfgPrefixLst_.get();
}
TClntCfgPD::TClntCfgPD(SPtr<TClntCfgPD> right, long iaid)
:ClntCfgPrefixLst_(right->ClntCfgPrefixLst_), IAID_(iaid), T1_(right->getT1()),
T2_(right->getT2()), PrefixLength_(right->getPrefixLength()) {
}
void TClntCfgPD::addPrefix(SPtr<TClntCfgPrefix> prefix) {
ClntCfgPrefixLst_.append(prefix);
}
ostream& operator<<(ostream& out,TClntCfgPD& pd)
{
out << " <pd iaid=\"" << pd.IAID_ << "\" state=\"" << StateToString(pd.State_) << "\" t1=\""
<< pd.T1_ << "\" t2=\"" << pd.T2_ << "\" prefixes=\"" << pd.ClntCfgPrefixLst_.count() << "\">" << std::endl;
SPtr<TClntCfgPrefix> prefix;
pd.ClntCfgPrefixLst_.first();
while(prefix = pd.ClntCfgPrefixLst_.get())
{
out << " " << *prefix;
}
out << " </pd>" << std::endl;
return out;
}
|