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
ISC Open Source Projects
Kea
Commits
db9aaee9
Commit
db9aaee9
authored
Apr 28, 2014
by
Marcin Siodelski
Browse files
[3409] Append line number when adding duplicated option definition.
parent
c49d5606
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcpsrv/dhcp_parsers.cc
View file @
db9aaee9
...
...
@@ -847,17 +847,13 @@ OptionDefListParser::build(ConstElementPtr option_def_list) {
parser
->
build
(
option_def
);
parser
->
commit
();
}
}
void
OptionDefListParser
::
commit
()
{
CfgMgr
&
cfg_mgr
=
CfgMgr
::
instance
();
cfg_mgr
.
deleteOptionDefs
();
// We need to move option definitions from the temporary
// storage to the storage.
std
::
list
<
std
::
string
>
space_names
=
storage_
->
getOptionSpaceNames
();
std
::
list
<
std
::
string
>
space_names
=
storage_
->
getOptionSpaceNames
();
BOOST_FOREACH
(
std
::
string
space_name
,
space_names
)
{
BOOST_FOREACH
(
OptionDefinitionPtr
def
,
...
...
@@ -866,11 +862,24 @@ OptionDefListParser::commit() {
// values. The validation is expected to be made by the
// OptionDefParser when creating an option definition.
assert
(
def
);
cfg_mgr
.
addOptionDef
(
def
,
space_name
);
// The Config Manager may thrown an exception if the duplicated
// definition is being added. Catch the exceptions here to and
// append the position in the config.
try
{
cfg_mgr
.
addOptionDef
(
def
,
space_name
);
}
catch
(
const
std
::
exception
&
ex
)
{
isc_throw
(
DhcpConfigError
,
ex
.
what
()
<<
" ("
<<
option_def_list
->
getPosition
()
<<
")"
);
}
}
}
}
void
OptionDefListParser
::
commit
()
{
// Do nothing.
}
//****************************** RelayInfoParser ********************************
RelayInfoParser
::
RelayInfoParser
(
const
std
::
string
&
,
const
isc
::
dhcp
::
Subnet
::
RelayInfoPtr
&
relay_info
,
...
...
src/lib/dhcpsrv/dhcp_parsers.h
View file @
db9aaee9
...
...
@@ -760,18 +760,21 @@ public:
/// @brief Parse configuration entries.
///
/// This function parses configuration entries and creates instances
/// of option definitions.
/// This function parses configuration entries, creates instances
/// of option definitions and tries to add them to the Configuration
/// Manager.
///
/// @param option_def_list pointer to an element that holds entries
/// that define option definitions.
/// @throw DhcpConfigError if configuration parsing fails.
void
build
(
isc
::
data
::
ConstElementPtr
option_def_list
);
/// @brief Stores option definitions in the CfgMgr.
/// @brief Commits option definitions.
///
/// Currently this function is no-op, because option definitions are
/// added to the Configuration Manager in the @c build method.
void
commit
();
private:
/// @brief storage for option definitions.
OptionDefStoragePtr
storage_
;
...
...
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