Skip to content
GitLab
Menu
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
a8dfa35d
Commit
a8dfa35d
authored
Aug 16, 2013
by
Marcin Siodelski
Browse files
[3036] Test creating on-wire data from an option with empty domain name.
parent
ef9de155
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcp/option6_client_fqdn.cc
View file @
a8dfa35d
...
...
@@ -437,11 +437,14 @@ Option6ClientFqdn::toText(int indent) {
uint16_t
Option6ClientFqdn
::
len
()
{
// If domain name is partial, the NULL terminating character
// is not included and the option length have to be adjusted.
uint16_t
domain_name_length
=
impl_
->
domain_name_type_
==
FULL
?
impl_
->
domain_name_
->
getLength
()
:
impl_
->
domain_name_
->
getLength
()
-
1
;
uint16_t
domain_name_length
=
0
;
if
(
impl_
->
domain_name_
)
{
// If domain name is partial, the NULL terminating character
// is not included and the option. Length has to be adjusted.
domain_name_length
=
impl_
->
domain_name_type_
==
FULL
?
impl_
->
domain_name_
->
getLength
()
:
impl_
->
domain_name_
->
getLength
()
-
1
;
}
return
(
getHeaderLen
()
+
FLAG_FIELD_LEN
+
domain_name_length
);
}
...
...
src/lib/dhcp/tests/option6_client_fqdn_unittest.cc
View file @
a8dfa35d
...
...
@@ -622,6 +622,34 @@ TEST(Option6ClientFqdnTest, packPartial) {
EXPECT_EQ
(
0
,
memcmp
(
ref_data
,
buf
.
getData
(),
buf
.
getLength
()));
}
// This test verifies that it is possible to encode the option which carries
// empty domain-name in the wire format.
TEST
(
Option6ClientFqdnTest
,
packEmpty
)
{
// Create option instance. Check that constructor doesn't throw.
const
uint8_t
flags
=
Option6ClientFqdn
::
FLAG_S
;
boost
::
scoped_ptr
<
Option6ClientFqdn
>
option
;
ASSERT_NO_THROW
(
option
.
reset
(
new
Option6ClientFqdn
(
flags
))
);
ASSERT_TRUE
(
option
);
// Prepare on-wire format of the option.
isc
::
util
::
OutputBuffer
buf
(
5
);
ASSERT_NO_THROW
(
option
->
pack
(
buf
));
// Prepare reference data.
const
uint8_t
ref_data
[]
=
{
0
,
39
,
0
,
1
,
// header
Option6ClientFqdn
::
FLAG_S
// flags
};
size_t
ref_data_size
=
sizeof
(
ref_data
)
/
sizeof
(
ref_data
[
0
]);
// Check if the buffer has the same length as the reference data,
// so as they can be compared directly.
ASSERT_EQ
(
ref_data_size
,
buf
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
ref_data
,
buf
.
getData
(),
buf
.
getLength
()));
}
// This test verifies that on-wire option data holding fully qualified domain
// name is parsed correctly.
TEST
(
Option6ClientFqdnTest
,
unpack
)
{
...
...
Write
Preview
Supports
Markdown
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