File: ClntCfgPD.cpp

package info (click to toggle)
dibbler 1.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 13,352 kB
  • sloc: cpp: 60,323; ansic: 12,235; sh: 11,951; yacc: 3,418; lex: 969; makefile: 940; perl: 319; xml: 116; python: 74
file content (92 lines) | stat: -rw-r--r-- 2,028 bytes parent folder | download | duplicates (3)
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;
}