Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
c2e9d347
Commit
c2e9d347
authored
Dec 27, 2012
by
Tomek Mrugalski
🛰
Browse files
[2320] Missing unittests for hwaddr implemented.
parent
90f997d7
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/bin/dhcp4/dhcp4_srv.cc
View file @
c2e9d347
...
...
@@ -188,9 +188,7 @@ void Dhcpv4Srv::copyDefaultFields(const Pkt4Ptr& question, Pkt4Ptr& answer) {
answer
->
setHops
(
question
->
getHops
());
// copy MAC address
vector
<
uint8_t
>
mac
(
question
->
getChaddr
(),
question
->
getChaddr
()
+
Pkt4
::
MAX_CHADDR_LEN
);
answer
->
setHWAddr
(
question
->
getHtype
(),
question
->
getHlen
(),
mac
);
answer
->
setHWAddr
(
question
->
getHWAddr
());
// relay address
answer
->
setGiaddr
(
question
->
getGiaddr
());
...
...
src/lib/dhcp/pkt4.cc
View file @
c2e9d347
...
...
@@ -268,6 +268,14 @@ Pkt4::setHWAddr(uint8_t hType, uint8_t hlen,
hwaddr_
=
HWAddrPtr
(
new
HWAddr
(
mac_addr
,
hType
));
}
void
Pkt4
::
setHWAddr
(
const
HWAddrPtr
&
addr
)
{
if
(
!
addr
)
{
isc_throw
(
BadValue
,
"Setting hw address to NULL is forbidden"
);
}
hwaddr_
=
addr
;
}
void
Pkt4
::
setSname
(
const
uint8_t
*
sname
,
size_t
snameLen
/*= MAX_SNAME_LEN*/
)
{
if
(
snameLen
>
MAX_SNAME_LEN
)
{
...
...
src/lib/dhcp/pkt4.h
View file @
c2e9d347
...
...
@@ -274,6 +274,13 @@ public:
void
setHWAddr
(
uint8_t
hType
,
uint8_t
hlen
,
const
std
::
vector
<
uint8_t
>&
mac_addr
);
/// @brief Sets hardware address
///
/// Sets hardware address, based on existing HWAddr structure
/// @param addr already filled in HWAddr structure
/// @throw BadValue if addr is null
void
setHWAddr
(
const
HWAddrPtr
&
addr
);
/// Returns htype field
///
/// @return hardware type
...
...
src/lib/dhcp/tests/hwaddr_unittest.cc
0 → 100644
View file @
c2e9d347
// 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.
#include
<config.h>
#include
<asiolink/io_address.h>
#include
<dhcp/hwaddr.h>
#include
<dhcp/dhcp4.h>
#include
<exceptions/exceptions.h>
#include
<boost/scoped_ptr.hpp>
#include
<gtest/gtest.h>
#include
<iostream>
#include
<sstream>
using
namespace
std
;
using
namespace
isc
;
using
namespace
isc
::
dhcp
;
using
namespace
isc
::
asiolink
;
using
boost
::
scoped_ptr
;
namespace
{
// This test verifies if the constructors are working as expected
// and process passed parameters.
TEST
(
HWAddrTest
,
constructor
)
{
const
uint8_t
data1
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
};
const
uint8_t
htype
=
HTYPE_ETHER
;
vector
<
uint8_t
>
data2
(
data1
,
data1
+
sizeof
(
data1
));
scoped_ptr
<
HWAddr
>
hwaddr1
(
new
HWAddr
(
data1
,
sizeof
(
data1
),
htype
));
scoped_ptr
<
HWAddr
>
hwaddr2
(
new
HWAddr
(
data2
,
htype
));
scoped_ptr
<
HWAddr
>
hwaddr3
(
new
HWAddr
());
EXPECT_TRUE
(
data2
==
hwaddr1
->
hwaddr_
);
EXPECT_EQ
(
htype
,
hwaddr1
->
htype_
);
EXPECT_TRUE
(
data2
==
hwaddr2
->
hwaddr_
);
EXPECT_EQ
(
htype
,
hwaddr2
->
htype_
);
EXPECT_EQ
(
0
,
hwaddr3
->
hwaddr_
.
size
());
EXPECT_EQ
(
htype
,
hwaddr3
->
htype_
);
}
// This test checks if the comparison operators are sane.
TEST
(
HWAddrTest
,
operators
)
{
uint8_t
data1
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
};
uint8_t
data2
[]
=
{
0
,
1
,
2
,
3
,
4
};
uint8_t
data3
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
7
};
// last digit different
uint8_t
data4
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
};
// the same as 1
uint8_t
htype1
=
HTYPE_ETHER
;
uint8_t
htype2
=
HTYPE_FDDI
;
scoped_ptr
<
HWAddr
>
hw1
(
new
HWAddr
(
data1
,
sizeof
(
data1
),
htype1
));
scoped_ptr
<
HWAddr
>
hw2
(
new
HWAddr
(
data2
,
sizeof
(
data2
),
htype1
));
scoped_ptr
<
HWAddr
>
hw3
(
new
HWAddr
(
data3
,
sizeof
(
data3
),
htype1
));
scoped_ptr
<
HWAddr
>
hw4
(
new
HWAddr
(
data4
,
sizeof
(
data4
),
htype1
));
// MAC address the same as data1 and data4, but different hardware type
scoped_ptr
<
HWAddr
>
hw5
(
new
HWAddr
(
data4
,
sizeof
(
data4
),
htype2
));
EXPECT_TRUE
(
*
hw1
==
*
hw4
);
EXPECT_FALSE
(
*
hw1
==
*
hw2
);
EXPECT_FALSE
(
*
hw1
==
*
hw3
);
EXPECT_FALSE
(
*
hw1
!=
*
hw4
);
EXPECT_TRUE
(
*
hw1
!=
*
hw2
);
EXPECT_TRUE
(
*
hw1
!=
*
hw3
);
EXPECT_FALSE
(
*
hw1
==
*
hw5
);
EXPECT_FALSE
(
*
hw4
==
*
hw5
);
EXPECT_TRUE
(
*
hw1
!=
*
hw5
);
EXPECT_TRUE
(
*
hw4
!=
*
hw5
);
}
}
// end of anonymous namespace
src/lib/dhcp/tests/pkt4_unittest.cc
View file @
c2e9d347
...
...
@@ -643,6 +643,23 @@ TEST(Pkt4Test, Timestamp) {
EXPECT_TRUE
(
ts_period
.
length
().
total_microseconds
()
>=
0
);
}
TEST
(
Pkt4Test
,
hwaddr
)
{
scoped_ptr
<
Pkt4
>
pkt
(
new
Pkt4
(
DHCPOFFER
,
1234
));
const
uint8_t
hw
[]
=
{
2
,
4
,
6
,
8
,
10
,
12
};
// MAC
const
uint8_t
hw_type
=
123
;
// hardware type
HWAddrPtr
hwaddr
(
new
HWAddr
(
hw
,
sizeof
(
hw
),
hw_type
));
// setting NULL hardware address is not allowed
EXPECT_THROW
(
pkt
->
setHWAddr
(
HWAddrPtr
()),
BadValue
);
pkt
->
setHWAddr
(
hwaddr
);
EXPECT_EQ
(
hw_type
,
pkt
->
getHtype
());
EXPECT_EQ
(
sizeof
(
hw
),
pkt
->
getHlen
());
EXPECT_TRUE
(
hwaddr
==
pkt
->
getHWAddr
());
}
}
// end of anonymous namespace
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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