memfile_lease_mgr.cc 3.82 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Copyright (C) 2012 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.

15
#include <dhcpsrv/memfile_lease_mgr.h>
16

17
#include <iostream>
18
19
20

using namespace isc::dhcp;

21
22
Memfile_LeaseMgr::Memfile_LeaseMgr(const ParameterMap& parameters)
    : LeaseMgr(parameters) {
23
24
25
    std::cout << "Warning: Using memfile database backend. It is usable for" << std::endl;
    std::cout << "Warning: limited testing only. File support not implemented yet." << std::endl;
    std::cout << "Warning: Leases will be lost after restart." << std::endl;
26
27
28
29
30
}

Memfile_LeaseMgr::~Memfile_LeaseMgr() {
}

Tomek Mrugalski's avatar
Tomek Mrugalski committed
31
bool Memfile_LeaseMgr::addLease(const Lease4Ptr&) {
32
33
34
    return (false);
}

Tomek Mrugalski's avatar
Tomek Mrugalski committed
35
bool Memfile_LeaseMgr::addLease(const Lease6Ptr& lease) {
36
37
38
39
40
41
42
43
    if (getLease6(lease->addr_)) {
        // there is a lease with specified address already
        return (false);
    }
    storage6_.insert(lease);
    return (true);
}

44
Lease4Ptr Memfile_LeaseMgr::getLease4(const isc::asiolink::IOAddress&) const {
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
    return (Lease4Ptr());
}

Lease4Collection Memfile_LeaseMgr::getLease4(const HWAddr& ) const {
    return (Lease4Collection());
}

Lease4Ptr Memfile_LeaseMgr::getLease4(const HWAddr&,
                                      SubnetID) const {
    return (Lease4Ptr());
}


Lease4Ptr Memfile_LeaseMgr::getLease4(const ClientId&,
                                      SubnetID) const {
    return (Lease4Ptr());
}

Lease4Collection Memfile_LeaseMgr::getLease4(const ClientId& ) const {
    return (Lease4Collection());
}

67
Lease6Ptr Memfile_LeaseMgr::getLease6(const isc::asiolink::IOAddress& addr) const {
68
69
70
71
72
73
74
75
76
77
78
79
    Lease6Storage::iterator l = storage6_.find(addr);
    if (l == storage6_.end()) {
        return (Lease6Ptr());
    } else {
        return (*l);
    }
}

Lease6Collection Memfile_LeaseMgr::getLease6(const DUID& , uint32_t ) const {
    return (Lease6Collection());
}

80
81
82
83
84
85
86
87
88
89
Lease6Ptr Memfile_LeaseMgr::getLease6(const DUID& duid, uint32_t iaid,
                                      SubnetID subnet_id) const {
    /// @todo: Slow, naive implementation. Write it using additional indexes
    for (Lease6Storage::iterator l = storage6_.begin(); l != storage6_.end(); ++l) {
        if ( (*((*l)->duid_) == duid) &&
             ( (*l)->iaid_ == iaid) &&
             ( (*l)->subnet_id_ == subnet_id)) {
            return (*l);
        }
    }
90
91
92
    return (Lease6Ptr());
}

Tomek Mrugalski's avatar
Tomek Mrugalski committed
93
void Memfile_LeaseMgr::updateLease4(const Lease4Ptr& ) {
94
95
}

Tomek Mrugalski's avatar
Tomek Mrugalski committed
96
void Memfile_LeaseMgr::updateLease6(const Lease6Ptr& ) {
97
98
99

}

100
bool Memfile_LeaseMgr::deleteLease4(const isc::asiolink::IOAddress&) {
101
102
103
    return (false);
}

104
bool Memfile_LeaseMgr::deleteLease6(const isc::asiolink::IOAddress& addr) {
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
    Lease6Storage::iterator l = storage6_.find(addr);
    if (l == storage6_.end()) {
        // no such lease
        return (false);
    } else {
        storage6_.erase(l);
        return (true);
    }
}

std::string Memfile_LeaseMgr::getDescription() const {
    return (std::string("This is a dummy memfile backend implementation.\n"
                        "It does not offer any useful lease management and its only\n"
                        "purpose is to test abstract lease manager API."));
}
120
121
122
123
124
125
126
127

void
Memfile_LeaseMgr::commit() {
}

void
Memfile_LeaseMgr::rollback() {
}