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
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
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
Adam Osuchowski
Kea
Commits
e994b57c
Commit
e994b57c
authored
Feb 09, 2015
by
Marcin Siodelski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[3604] Use new interface configuration format where applicable.
Also, renamed interface-config to interfaces-config (plural form).
parent
f783c803
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
292 additions
and
144 deletions
+292
-144
doc/examples/kea4/multiple-options.json
doc/examples/kea4/multiple-options.json
+3
-1
doc/examples/kea4/reservations.json
doc/examples/kea4/reservations.json
+4
-2
doc/examples/kea4/several-subnets.json
doc/examples/kea4/several-subnets.json
+3
-1
doc/examples/kea4/single-subnet.json
doc/examples/kea4/single-subnet.json
+3
-1
doc/examples/kea6/advanced.json
doc/examples/kea6/advanced.json
+3
-1
doc/examples/kea6/multiple-options.json
doc/examples/kea6/multiple-options.json
+3
-1
doc/examples/kea6/several-subnets.json
doc/examples/kea6/several-subnets.json
+3
-1
doc/examples/kea6/simple.json
doc/examples/kea6/simple.json
+3
-1
doc/examples/kea6/stateless.json
doc/examples/kea6/stateless.json
+3
-1
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/json_config_parser.cc
+2
-2
src/bin/dhcp4/tests/config_parser_unittest.cc
src/bin/dhcp4/tests/config_parser_unittest.cc
+63
-47
src/bin/dhcp4/tests/d2_unittest.cc
src/bin/dhcp4/tests/d2_unittest.cc
+7
-3
src/bin/dhcp4/tests/dhcp4_process_tests.sh.in
src/bin/dhcp4/tests/dhcp4_process_tests.sh.in
+7
-3
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc
+34
-12
src/bin/dhcp4/tests/direct_client_unittest.cc
src/bin/dhcp4/tests/direct_client_unittest.cc
+7
-3
src/bin/dhcp4/tests/dora_unittest.cc
src/bin/dhcp4/tests/dora_unittest.cc
+10
-3
src/bin/dhcp4/tests/inform_unittest.cc
src/bin/dhcp4/tests/inform_unittest.cc
+7
-3
src/bin/dhcp4/tests/kea_controller_unittest.cc
src/bin/dhcp4/tests/kea_controller_unittest.cc
+9
-3
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/json_config_parser.cc
+2
-2
src/bin/dhcp6/tests/config_parser_unittest.cc
src/bin/dhcp6/tests/config_parser_unittest.cc
+8
-8
src/bin/dhcp6/tests/confirm_unittest.cc
src/bin/dhcp6/tests/confirm_unittest.cc
+7
-3
src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc
src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc
+4
-2
src/bin/dhcp6/tests/d2_unittest.cc
src/bin/dhcp6/tests/d2_unittest.cc
+7
-3
src/bin/dhcp6/tests/dhcp6_process_tests.sh.in
src/bin/dhcp6/tests/dhcp6_process_tests.sh.in
+4
-3
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc
+19
-7
src/bin/dhcp6/tests/hooks_unittest.cc
src/bin/dhcp6/tests/hooks_unittest.cc
+6
-2
src/bin/dhcp6/tests/infrequest_unittest.cc
src/bin/dhcp6/tests/infrequest_unittest.cc
+12
-4
src/bin/dhcp6/tests/kea_controller_unittest.cc
src/bin/dhcp6/tests/kea_controller_unittest.cc
+9
-3
src/bin/dhcp6/tests/rebind_unittest.cc
src/bin/dhcp6/tests/rebind_unittest.cc
+18
-6
src/bin/dhcp6/tests/sarr_unittest.cc
src/bin/dhcp6/tests/sarr_unittest.cc
+3
-1
src/bin/keactrl/kea.conf.pre
src/bin/keactrl/kea.conf.pre
+6
-2
src/bin/keactrl/tests/keactrl_tests.sh.in
src/bin/keactrl/tests/keactrl_tests.sh.in
+6
-2
src/lib/dhcpsrv/parsers/ifaces_config_parser.h
src/lib/dhcpsrv/parsers/ifaces_config_parser.h
+7
-7
No files found.
doc/examples/kea4/multiple-options.json
View file @
e994b57c
...
...
@@ -5,7 +5,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea4/reservations.json
View file @
e994b57c
...
...
@@ -4,8 +4,10 @@
{
"Dhcp4"
:
{
#
Kea
is
told
to
listen
on
eth
0
interface
only.
"interfaces"
:
[
"eth0"
],
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea4/several-subnets.json
View file @
e994b57c
...
...
@@ -6,7 +6,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea4/single-subnet.json
View file @
e994b57c
...
...
@@ -6,7 +6,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea6/advanced.json
View file @
e994b57c
...
...
@@ -11,7 +11,9 @@
{
#
Kea
is
told
to
listen
on
ethX
network
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea6/multiple-options.json
View file @
e994b57c
...
...
@@ -5,7 +5,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea6/several-subnets.json
View file @
e994b57c
...
...
@@ -6,7 +6,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea6/simple.json
View file @
e994b57c
...
...
@@ -7,7 +7,9 @@
{
#
Kea
is
told
to
listen
on
ethX
interface
only.
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
We
need
to
specify
lease
type.
As
of
May
2014
,
three
backends
are
supported:
#
memfile
,
mysql
and
pgsql.
We'll
just
use
memfile
,
because
it
doesn't
require
...
...
doc/examples/kea6/stateless.json
View file @
e994b57c
...
...
@@ -7,7 +7,9 @@
{
"Dhcp6"
:
{
"interfaces"
:
[
"ethX"
],
"interfaces-config:"
{
"interfaces"
:
[
"ethX"
]
},
#
This
is
the
list
of
options
that
will
be
granted
to
all
clients
that
ask.
"option-data"
:
[
{
...
...
src/bin/dhcp4/json_config_parser.cc
View file @
e994b57c
...
...
@@ -370,7 +370,7 @@ namespace dhcp {
(
config_id
.
compare
(
"rebind-timer"
)
==
0
))
{
parser
=
new
Uint32Parser
(
config_id
,
globalContext
()
->
uint32_values_
);
}
else
if
(
config_id
.
compare
(
"interfaces"
)
==
0
)
{
}
else
if
(
config_id
.
compare
(
"interfaces
-config
"
)
==
0
)
{
parser
=
new
IfacesConfigParser4
();
}
else
if
(
config_id
.
compare
(
"subnet4"
)
==
0
)
{
parser
=
new
Subnets4ListConfigParser
(
config_id
);
...
...
@@ -476,7 +476,7 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) {
subnet_parser
=
parser
;
}
else
if
(
config_pair
.
first
==
"option-data"
)
{
option_parser
=
parser
;
}
else
if
(
config_pair
.
first
==
"interface-config"
)
{
}
else
if
(
config_pair
.
first
==
"interface
s
-config"
)
{
// The interface parser is independent from any other
// parser and can be run here before any other parsers.
iface_parser
=
parser
;
...
...
src/bin/dhcp4/tests/config_parser_unittest.cc
View file @
e994b57c
// Copyright (C) 2012-201
4
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2012-201
5
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
...
...
@@ -124,6 +124,14 @@ public:
unlink
(
UNLOAD_MARKER_FILE
);
};
/// @brief Returns an interface configuration used by the most of the
/// unit tests.
std
::
string
genIfaceConfig
()
const
{
return
(
"
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
*
\"
]"
"}"
);
}
/// @brief Create the simple configuration with single option.
///
/// This function allows to set one of the parameters that configure
...
...
@@ -183,7 +191,7 @@ public:
/// describing an option.
std
::
string
createConfigWithOption
(
const
std
::
map
<
std
::
string
,
std
::
string
>&
params
)
{
std
::
ostringstream
stream
;
stream
<<
"{
\"
interfaces
\"
: [
\"
*
\"
],"
stream
<<
"{
"
<<
genIfaceConfig
()
<<
","
<<
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -446,7 +454,7 @@ public:
/// contents of the database do not affect result of
/// subsequent tests.
void
resetConfiguration
()
{
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
hooks-libraries
\"
: [ ], "
"
\"
valid-lifetime
\"
: 4000, "
"
\"
subnet4
\"
: [ ], "
...
...
@@ -500,7 +508,7 @@ TEST_F(Dhcp4ParserTest, emptySubnet) {
ConstElementPtr
status
;
EXPECT_NO_THROW
(
status
=
configureDhcp4Server
(
*
srv_
,
Element
::
fromJSON
(
"{
\"
interfaces
\"
: [
\"
*
\"
],"
Element
::
fromJSON
(
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ ], "
...
...
@@ -519,7 +527,7 @@ TEST_F(Dhcp4ParserTest, emptySubnet) {
TEST_F
(
Dhcp4ParserTest
,
unspecifiedRenewTimer
)
{
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
subnet4
\"
: [ { "
"
\"
pools
\"
: [ {
\"
pool
\"
:
\"
192.0.2.1 - 192.0.2.100
\"
} ],"
...
...
@@ -553,7 +561,7 @@ TEST_F(Dhcp4ParserTest, unspecifiedRenewTimer) {
TEST_F
(
Dhcp4ParserTest
,
unspecifiedRebindTimer
)
{
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
"
\"
pools
\"
: [ {
\"
pool
\"
:
\"
192.0.2.1 - 192.0.2.100
\"
} ],"
...
...
@@ -587,7 +595,7 @@ TEST_F(Dhcp4ParserTest, subnetGlobalDefaults) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -622,7 +630,7 @@ TEST_F(Dhcp4ParserTest, multipleSubnets) {
ConstElementPtr
x
;
// Collection of four subnets for which subnet ids should be
// autogenerated - ids are unspecified or set to 0.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -676,7 +684,7 @@ TEST_F(Dhcp4ParserTest, multipleSubnets) {
TEST_F
(
Dhcp4ParserTest
,
multipleSubnetsExplicitIDs
)
{
ConstElementPtr
x
;
// Four subnets with arbitrary subnet ids.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -730,7 +738,7 @@ TEST_F(Dhcp4ParserTest, multipleSubnetsExplicitIDs) {
TEST_F
(
Dhcp4ParserTest
,
multipleSubnetsOverlapingIDs
)
{
ConstElementPtr
x
;
// Four subnets, two of them having the same id.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -768,7 +776,7 @@ TEST_F(Dhcp4ParserTest, reconfigureRemoveSubnet) {
ConstElementPtr
x
;
// All four subnets
string
config4
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config4
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -794,7 +802,7 @@ TEST_F(Dhcp4ParserTest, reconfigureRemoveSubnet) {
"
\"
valid-lifetime
\"
: 4000 }"
;
// Three subnets (the last one removed)
string
config_first3
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_first3
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -815,7 +823,7 @@ TEST_F(Dhcp4ParserTest, reconfigureRemoveSubnet) {
"
\"
valid-lifetime
\"
: 4000 }"
;
// Second subnet removed
string
config_second_removed
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_second_removed
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -899,7 +907,7 @@ TEST_F(Dhcp4ParserTest, nextServerGlobal) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
next-server
\"
:
\"
1.2.3.4
\"
, "
...
...
@@ -929,7 +937,7 @@ TEST_F(Dhcp4ParserTest, nextServerSubnet) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -960,7 +968,7 @@ TEST_F(Dhcp4ParserTest, nextServerNegative) {
ConstElementPtr
status
;
// Config with junk instead of next-server address
string
config_bogus1
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_bogus1
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -972,7 +980,7 @@ TEST_F(Dhcp4ParserTest, nextServerNegative) {
"
\"
valid-lifetime
\"
: 4000 }"
;
// Config with IPv6 next server address
string
config_bogus2
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_bogus2
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -984,7 +992,7 @@ TEST_F(Dhcp4ParserTest, nextServerNegative) {
"
\"
valid-lifetime
\"
: 4000 }"
;
// Config with empty next server address
string
config_bogus3
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_bogus3
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -1019,7 +1027,7 @@ TEST_F(Dhcp4ParserTest, nextServerOverride) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
next-server
\"
:
\"
192.0.0.1
\"
, "
...
...
@@ -1049,7 +1057,7 @@ TEST_F(Dhcp4ParserTest, echoClientId) {
ConstElementPtr
status
;
string
config_false
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_false
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
echo-client-id
\"
: false,"
...
...
@@ -1058,7 +1066,7 @@ TEST_F(Dhcp4ParserTest, echoClientId) {
"
\"
subnet
\"
:
\"
192.0.2.0/24
\"
} ],"
"
\"
valid-lifetime
\"
: 4000 }"
;
string
config_true
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_true
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
echo-client-id
\"
: true,"
...
...
@@ -1093,7 +1101,7 @@ TEST_F(Dhcp4ParserTest, subnetLocal) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -1124,7 +1132,7 @@ TEST_F(Dhcp4ParserTest, subnetLocal) {
TEST_F
(
Dhcp4ParserTest
,
multiplePools
)
{
// Collection with two subnets, each with 2 pools.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -1183,7 +1191,7 @@ TEST_F(Dhcp4ParserTest, poolOutOfSubnet) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -1208,7 +1216,7 @@ TEST_F(Dhcp4ParserTest, poolPrefixLen) {
ConstElementPtr
status
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -1785,7 +1793,7 @@ TEST_F(Dhcp4ParserTest, optionStandardDefOverride) {
// configuration does not include options configuration.
TEST_F
(
Dhcp4ParserTest
,
optionDataDefaults
)
{
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
"
\"
option-data
\"
: [ {"
...
...
@@ -1857,7 +1865,7 @@ TEST_F(Dhcp4ParserTest, optionDataTwoSpaces) {
// The definition is not required for the option that
// belongs to the 'dhcp4' option space as it is the
// standard option.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
valid-lifetime
\"
: 4000,"
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
...
...
@@ -1937,7 +1945,7 @@ TEST_F(Dhcp4ParserTest, optionDataEncapsulate) {
// at the very end (when all other parameters are configured).
// Starting stage 1. Configure sub-options and their definitions.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
valid-lifetime
\"
: 4000,"
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
...
...
@@ -1989,7 +1997,7 @@ TEST_F(Dhcp4ParserTest, optionDataEncapsulate) {
// the configuration from the stage 2 is repeated because BIND
// configuration manager sends whole configuration for the lists
// where at least one element is being modified or added.
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
"
\"
option-data
\"
: [ {"
...
...
@@ -2085,7 +2093,7 @@ TEST_F(Dhcp4ParserTest, optionDataEncapsulate) {
// option setting.
TEST_F
(
Dhcp4ParserTest
,
optionDataInSingleSubnet
)
{
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
option-data
\"
: [ {"
...
...
@@ -2239,7 +2247,7 @@ TEST_F(Dhcp4ParserTest, optionDataBoolean) {
// for multiple subnets.
TEST_F
(
Dhcp4ParserTest
,
optionDataInMultipleSubnets
)
{
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -2513,7 +2521,7 @@ TEST_F(Dhcp4ParserTest, stdOptionDataEncapsulate) {
// In the first stage we create definitions of suboptions
// that we will add to the base option.
// Let's create some dummy options: foo and foo2.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
valid-lifetime
\"
: 4000,"
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
...
...
@@ -2569,7 +2577,7 @@ TEST_F(Dhcp4ParserTest, stdOptionDataEncapsulate) {
// We add our dummy options to this option space and thus
// they should be included as sub-options in the 'vendor-opts'
// option.
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
"
\"
option-data
\"
: [ {"
...
...
@@ -2676,7 +2684,7 @@ TEST_F(Dhcp4ParserTest, vendorOptionsHex) {
// This configuration string is to configure two options
// sharing the code 1 and belonging to the different vendor spaces.
// (different vendor-id values).
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
valid-lifetime
\"
: 4000,"
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
...
...
@@ -2735,7 +2743,7 @@ TEST_F(Dhcp4ParserTest, vendorOptionsCsv) {
// This configuration string is to configure two options
// sharing the code 1 and belonging to the different vendor spaces.
// (different vendor-id values).
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
valid-lifetime
\"
: 4000,"
"
\"
rebind-timer
\"
: 2000,"
"
\"
renew-timer
\"
: 1000,"
...
...
@@ -2799,7 +2807,9 @@ buildHooksLibrariesConfig(const std::vector<std::string>& libraries) {
// Create the first part of the configuration string.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
*
\"
]"
"},"
"
\"
hooks-libraries
\"
: ["
;
// Append the libraries (separated by commas if needed)
...
...
@@ -2939,7 +2949,9 @@ TEST_F(Dhcp4ParserTest, selectedInterfaces) {
IfaceMgrTestConfig
test_config
(
true
);
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
eth0
\"
,
\"
eth1
\"
],"
string
config
=
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
eth0
\"
,
\"
eth1
\"
]"
"},"
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
valid-lifetime
\"
: 4000 }"
;
...
...
@@ -2976,7 +2988,9 @@ TEST_F(Dhcp4ParserTest, allInterfaces) {
// but it also includes asterisk. The asterisk switches server into the
// mode when it listens on all interfaces regardless of what interface names
// were specified in the "interfaces" parameter.
string
config
=
"{
\"
interfaces
\"
: [
\"
eth0
\"
,
\"
*
\"
,
\"
eth1
\"
],"
string
config
=
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
eth0
\"
,
\"
*
\"
,
\"
eth1
\"
]"
"},"
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
valid-lifetime
\"
: 4000 }"
;
...
...
@@ -3008,7 +3022,9 @@ TEST_F(Dhcp4ParserTest, selectedInterfacesAndAddresses) {
IfaceMgrTestConfig
test_config
(
true
);
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
eth0/10.0.0.1
\"
,
\"
eth1/192.0.2.3
\"
],"
string
config
=
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
eth0/10.0.0.1
\"
,
\"
eth1/192.0.2.3
\"
]"
"},"
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
valid-lifetime
\"
: 4000 }"
;
...
...
@@ -3053,7 +3069,7 @@ TEST_F(Dhcp4ParserTest, d2ClientConfig) {
// Verify that the convenience method agrees.
ASSERT_FALSE
(
CfgMgr
::
instance
().
ddnsEnabled
());
string
config_str
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_str
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -3118,7 +3134,7 @@ TEST_F(Dhcp4ParserTest, invalidD2ClientConfig) {
// Configuration string with an invalid D2 client config,
// "server-ip" is invalid.
string
config_str
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config_str
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -3164,7 +3180,7 @@ TEST_F(Dhcp4ParserTest, subnetRelayInfo) {
ConstElementPtr
status
;
// A config with relay information.
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -3195,7 +3211,7 @@ TEST_F(Dhcp4ParserTest, subnetRelayInfo) {
// with defined client classes.
TEST_F
(
Dhcp4ParserTest
,
classifySubnets
)
{
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
@@ -3281,7 +3297,7 @@ TEST_F(Dhcp4ParserTest, classifySubnets) {
// respective IPv4 subnets.
TEST_F
(
Dhcp4ParserTest
,
reservations
)
{
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ "
...
...
@@ -3401,7 +3417,7 @@ TEST_F(Dhcp4ParserTest, reservations) {
TEST_F
(
Dhcp4ParserTest
,
reservationBogus
)
{
// Case 1: misspelled hw-address parameter.
ConstElementPtr
x
;
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
string
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ "
...
...
@@ -3427,7 +3443,7 @@ TEST_F(Dhcp4ParserTest, reservationBogus) {
checkResult
(
x
,
1
);
// Case 2: DUID and HW Address both specified.
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ "
...
...
@@ -3455,7 +3471,7 @@ TEST_F(Dhcp4ParserTest, reservationBogus) {
checkResult
(
x
,
1
);
// Case 3: Neither ip address nor hostname specified.
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
config
=
"{
"
+
genIfaceConfig
()
+
","
+
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ "
...
...
src/bin/dhcp4/tests/d2_unittest.cc
View file @
e994b57c
// Copyright (C) 2014
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2014
-2015
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
...
...
@@ -74,7 +74,9 @@ Dhcp4SrvD2Test::buildTestNcr(uint32_t dhcid_id_num) {
void
Dhcp4SrvD2Test
::
reset
()
{
std
::
string
config
=
"{
\"
interfaces
\"
: [
\"
*
\"
],"
std
::
string
config
=
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
*
\"
]"
"},"
"
\"
hooks-libraries
\"
: [ ], "
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
...
...
@@ -95,7 +97,9 @@ Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result,
const
size_t
max_queue_size
)
{
std
::
ostringstream
config
;
config
<<
"{
\"
interfaces
\"
: [
\"
*
\"
],"
"{
\"
interfaces-config
\"
: {"
"
\"
interfaces
\"
: [
\"
*
\"
]"
"},"
"
\"
rebind-timer
\"
: 2000, "
"
\"
renew-timer
\"
: 1000, "
"
\"
subnet4
\"
: [ { "
...
...
src/bin/dhcp4/tests/dhcp4_process_tests.sh.in
View file @
e994b57c
# Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2014
-2015
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
...
...
@@ -22,7 +22,9 @@ EXPECTED_VERSION="@PACKAGE_VERSION@"
CONFIG="{