Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Kea
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
451
Issues
451
List
Boards
Labels
Service Desk
Milestones
Merge Requests
74
Merge Requests
74
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
ISC Open Source Projects
Kea
Commits
8f6903dc
Commit
8f6903dc
authored
Dec 04, 2012
by
Stephen Morris
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2404] Updated comments etc.
parent
b6c480a5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
57 additions
and
60 deletions
+57
-60
src/lib/dhcp/duid.h
src/lib/dhcp/duid.h
+19
-14
src/lib/dhcpsrv/lease_mgr.h
src/lib/dhcpsrv/lease_mgr.h
+3
-3
src/lib/dhcpsrv/mysql_lease_mgr.cc
src/lib/dhcpsrv/mysql_lease_mgr.cc
+5
-13
src/lib/dhcpsrv/tests/lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/lease_mgr_unittest.cc
+30
-30
No files found.
src/lib/dhcp/duid.h
View file @
8f6903dc
...
...
@@ -45,13 +45,13 @@ class DUID {
DUID_MAX
///< not a real type, just maximum defined value + 1
}
DUIDType
;
/// @brief
creates a DUID
/// @brief
Constructor from vector
DUID
(
const
std
::
vector
<
uint8_t
>&
duid
);
/// @brief
creates a DUID
/// @brief
Constructor from array and array size
DUID
(
const
uint8_t
*
duid
,
size_t
len
);
/// @brief
r
eturns a const reference to the actual DUID value
/// @brief
R
eturns a const reference to the actual DUID value
///
/// Note: For safety reasons, this method returns a copy of data as
/// otherwise the reference would be only valid as long as the object that
...
...
@@ -60,47 +60,52 @@ class DUID {
/// (e.g. storeSelf()) that will avoid data copying.
const
std
::
vector
<
uint8_t
>
getDuid
()
const
;
/// @brief
returns
DUID type
/// @brief
Returns the
DUID type
DUIDType
getType
()
const
;
///
returns textual prepresentation
(e.g. 00:01:02:03:ff)
///
@brief Returns textual representation of a DUID
(e.g. 00:01:02:03:ff)
std
::
string
toText
()
const
;
///
compares two DUIDs
///
@brief Compares two DUIDs for equality
bool
operator
==
(
const
DUID
&
other
)
const
;
///
compares two DUIDs
///
@brief Compares two DUIDs for inequality
bool
operator
!=
(
const
DUID
&
other
)
const
;
protected:
///
t
he actual content of the DUID
///
T
he actual content of the DUID
std
::
vector
<
uint8_t
>
duid_
;
};
/// @brief Shared pointer to a DUID
typedef
boost
::
shared_ptr
<
DUID
>
DuidPtr
;
/// @brief Holds Client identifier or client IPv4 address
///
/// This class is intended to be a generic IPv4 client identifier. It can hold
/// a client-id
class
ClientId
:
DUID
{
public:
/// @brief Maximum size of a client ID
///
/// This is the same as the maximum size of the underlying DUID.
static
const
size_t
MAX_CLIENT_ID_LEN
=
DUID
::
MAX_DUID_LEN
;
///
c
onstructor based on vector<uint8_t>
///
@brief C
onstructor based on vector<uint8_t>
ClientId
(
const
std
::
vector
<
uint8_t
>&
clientid
);
///
constructor based on C-style data
///
@brief Constructor based on array and array size
ClientId
(
const
uint8_t
*
clientid
,
size_t
len
);
/// @brief returns reference to the client-id data
///
/// @brief Returns reference to the client-id data
const
std
::
vector
<
uint8_t
>
getClientId
()
const
;
//
compares two client-ids
//
/ @brief Compares two client-ids for equality
bool
operator
==
(
const
ClientId
&
other
)
const
;
//
compares two client-ids
//
/ @brief Compares two client-ids for inequality
bool
operator
!=
(
const
ClientId
&
other
)
const
;
};
...
...
src/lib/dhcpsrv/lease_mgr.h
View file @
8f6903dc
...
...
@@ -115,8 +115,8 @@ public:
/// would be required. As this is a critical part of the code that will be used
/// extensively, direct access is warranted.
struct
Lease4
{
//
The following constants definine the size of fields in the database
static
const
size_t
HWADDR_MAX
=
20
;
// Maximum size of hardware address
//
/ @brief Maximum size of a hardware address
static
const
size_t
HWADDR_MAX
=
20
;
/// @brief Constructor
///
...
...
@@ -392,7 +392,7 @@ struct Lease6 {
/// @brief Pointer to a Lease6 structure.
typedef
boost
::
shared_ptr
<
Lease6
>
Lease6Ptr
;
/// @brief
Const pointer to a
Lease6 structure.
/// @brief
Pointer to a const
Lease6 structure.
typedef
boost
::
shared_ptr
<
const
Lease6
>
ConstLease6Ptr
;
/// @brief A collection of IPv6 leases.
...
...
src/lib/dhcpsrv/mysql_lease_mgr.cc
View file @
8f6903dc
...
...
@@ -15,6 +15,7 @@
#include <config.h>
#include <asiolink/io_address.h>
#include <dhcp/duid.h>
#include <dhcpsrv/mysql_lease_mgr.h>
#include <boost/static_assert.hpp>
...
...
@@ -91,18 +92,9 @@ namespace {
/// colon separators.
const
size_t
ADDRESS6_TEXT_MAX_LEN
=
39
;
/// @brief Maximum size of a DUID.
const
size_t
DUID_MAX_LEN
=
128
;
/// @brief Maximum size of a hardware address.
const
size_t
HWADDR_MAX_LEN
=
20
;
/// @brief Maximum size of a client identification.
///
/// Note that the value is arbitrarily chosen: RFC 2131 does not specify an
/// upper limit, but this seems long enough.
const
size_t
CLIENT_ID_MAX_LEN
=
128
;
/// @brief Number of columns in Lease4 table
const
size_t
LEASE4_COLUMNS
=
6
;
...
...
@@ -156,7 +148,6 @@ TaggedStatement tagged_statements[] = {
"valid_lifetime, expire, subnet_id "
"FROM lease4 "
"WHERE hwaddr = ?"
},
{
MySqlLeaseMgr
::
GET_LEASE4_HWADDR_SUBID
,
"SELECT address, hwaddr, client_id, "
"valid_lifetime, expire, subnet_id "
...
...
@@ -496,7 +487,7 @@ private:
///< Hardware address buffer
unsigned
long
hwaddr_length_
;
///< Hardware address length
std
::
vector
<
uint8_t
>
client_id_
;
///< Client identification
uint8_t
client_id_buffer_
[
C
LIENT_ID_MAX
_LEN
];
uint8_t
client_id_buffer_
[
C
lientId
::
MAX_CLIENT_ID
_LEN
];
///< Client ID buffer
unsigned
long
client_id_length_
;
///< Client ID address length
MYSQL_TIME
expire_
;
///< Lease expiry time
...
...
@@ -812,7 +803,7 @@ private:
MYSQL_BIND
bind_
[
LEASE_COLUMNS
];
///< Bind array
std
::
string
columns_
[
LEASE_COLUMNS
];
///< Column names
std
::
vector
<
uint8_t
>
duid_
;
///< Client identification
uint8_t
duid_buffer_
[
DUID
_MAX
_LEN
];
///< Buffer form of DUID
uint8_t
duid_buffer_
[
DUID
::
MAX_DUID
_LEN
];
///< Buffer form of DUID
unsigned
long
duid_length_
;
///< Length of the DUID
my_bool
error_
[
LEASE_COLUMNS
];
///< Error indicators
MYSQL_TIME
expire_
;
///< Lease expiry time
...
...
@@ -1222,7 +1213,8 @@ void MySqlLeaseMgr::getLeaseCollection(StatementIndex stindex,
checkError
(
status
,
stindex
,
"unable to fetch results"
);
}
else
if
(
status
==
MYSQL_DATA_TRUNCATED
)
{
// Data truncated - throw an exception indicating what was at fault
isc_throw
(
DataTruncated
,
"returned data truncated column affected: "
isc_throw
(
DataTruncated
,
text_statements_
[
stindex
]
<<
" returned truncated data: columns affected are "
<<
exchange
->
getErrorColumns
());
}
}
...
...
src/lib/dhcpsrv/tests/lease_mgr_unittest.cc
View file @
8f6903dc
...
...
@@ -345,21 +345,21 @@ TEST(Lease4, OperatorEquals) {
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
addr_
=
lease2
.
addr_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
ext_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
ext_
=
lease2
.
ext_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
hwaddr_
[
0
];
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
hwaddr_
=
lease2
.
hwaddr_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
clientid_vec
[
0
];
lease1
.
client_id_
.
reset
(
new
ClientId
(
clientid_vec
));
...
...
@@ -368,77 +368,77 @@ TEST(Lease4, OperatorEquals) {
--
clientid_vec
[
0
];
lease1
.
client_id_
.
reset
(
new
ClientId
(
clientid_vec
));
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
t1_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
t1_
=
lease2
.
t1_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
t2_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
t2_
=
lease2
.
t2_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
valid_lft_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
valid_lft_
=
lease2
.
valid_lft_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
cltt_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
cltt_
=
lease2
.
cltt_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
subnet_id_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
subnet_id_
=
lease2
.
subnet_id_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fixed_
=
!
lease1
.
fixed_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fixed_
=
lease2
.
fixed_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
hostname_
+=
string
(
"Something random"
);
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
hostname_
=
lease2
.
hostname_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fqdn_fwd_
=
!
lease1
.
fqdn_fwd_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fqdn_fwd_
=
lease2
.
fqdn_fwd_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fqdn_rev_
=
!
lease1
.
fqdn_rev_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fqdn_rev_
=
lease2
.
fqdn_rev_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
comments_
+=
string
(
"Something random"
);
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
comments_
=
lease2
.
comments_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
}
...
...
@@ -514,28 +514,28 @@ TEST(Lease6, OperatorEquals) {
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
addr_
=
lease2
.
addr_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
type_
=
Lease6
::
LEASE_IA_PD
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
type_
=
lease2
.
type_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
prefixlen_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
prefixlen_
=
lease2
.
prefixlen_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
iaid_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
iaid_
=
lease2
.
iaid_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
duid_array
[
0
];
lease1
.
duid_
.
reset
(
new
DUID
(
duid_array
,
sizeof
(
duid_array
)));
...
...
@@ -544,83 +544,83 @@ TEST(Lease6, OperatorEquals) {
--
duid_array
[
0
];
lease1
.
duid_
.
reset
(
new
DUID
(
duid_array
,
sizeof
(
duid_array
)));
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
preferred_lft_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
preferred_lft_
=
lease2
.
preferred_lft_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
valid_lft_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
valid_lft_
=
lease2
.
valid_lft_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
t1_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
t1_
=
lease2
.
t1_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
t2_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
t2_
=
lease2
.
t2_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
cltt_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
cltt_
=
lease2
.
cltt_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
++
lease1
.
subnet_id_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
subnet_id_
=
lease2
.
subnet_id_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fixed_
=
!
lease1
.
fixed_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fixed_
=
lease2
.
fixed_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
hostname_
+=
string
(
"Something random"
);
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
hostname_
=
lease2
.
hostname_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fqdn_fwd_
=
!
lease1
.
fqdn_fwd_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fqdn_fwd_
=
lease2
.
fqdn_fwd_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
fqdn_rev_
=
!
lease1
.
fqdn_rev_
;
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
fqdn_rev_
=
lease2
.
fqdn_rev_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
lease1
.
comments_
+=
string
(
"Something random"
);
EXPECT_FALSE
(
lease1
==
lease2
);
EXPECT_TRUE
(
lease1
!=
lease2
);
lease1
.
comments_
=
lease2
.
comments_
;
EXPECT_TRUE
(
lease1
==
lease2
);
// Check that the reversion has made the
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease equal
EXPECT_FALSE
(
lease1
!=
lease2
);
// ... lease
s
equal
}
};
// end of anonymous namespace
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment