|
@@ -1411,12 +1411,16 @@ configureDhcp6Server(Dhcpv6Srv& , ConstElementPtr config_set) {
|
|
|
// rollback informs whether error occured and original data
|
|
|
// have to be restored to global storages.
|
|
|
bool rollback = false;
|
|
|
+ string current_parser; // For error messages
|
|
|
try {
|
|
|
// Iterate over all independent parsers first (all but subnet6)
|
|
|
// and try to parse the data.
|
|
|
BOOST_FOREACH(ConfigPair config_pair, config_set->mapValue()) {
|
|
|
if (config_pair.first != "subnet6") {
|
|
|
+ current_parser = config_pair.first;
|
|
|
ParserPtr parser(createGlobalDhcpConfigParser(config_pair.first));
|
|
|
+ LOG_DEBUG(dhcp6_logger, DBG_DHCP6_DETAIL, DHCP6_PARSER_CREATED1)
|
|
|
+ .arg(current_parser);
|
|
|
independent_parsers.push_back(parser);
|
|
|
parser->build(config_pair.second);
|
|
|
// The commit operation here may modify the global storage
|
|
@@ -1429,13 +1433,18 @@ configureDhcp6Server(Dhcpv6Srv& , ConstElementPtr config_set) {
|
|
|
// Process dependent configuration data.
|
|
|
BOOST_FOREACH(ConfigPair config_pair, config_set->mapValue()) {
|
|
|
if (config_pair.first == "subnet6") {
|
|
|
+ current_parser = config_pair.first;
|
|
|
ParserPtr parser(createGlobalDhcpConfigParser(config_pair.first));
|
|
|
+ LOG_DEBUG(dhcp6_logger, DBG_DHCP6_DETAIL, DHCP6_PARSER_CREATED2)
|
|
|
+ .arg(current_parser);
|
|
|
dependent_parsers.push_back(parser);
|
|
|
parser->build(config_pair.second);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} catch (const isc::Exception& ex) {
|
|
|
+ LOG_ERROR(dhcp6_logger, DHCP6_PARSER_CREATE_FAIL).arg(current_parser)
|
|
|
+ .arg(ex.what());
|
|
|
answer =
|
|
|
isc::config::createAnswer(1, string("Configuration parsing failed: ") + ex.what());
|
|
|
// An error occured, so make sure that we restore original data.
|
|
@@ -1443,6 +1452,8 @@ configureDhcp6Server(Dhcpv6Srv& , ConstElementPtr config_set) {
|
|
|
|
|
|
} catch (...) {
|
|
|
// for things like bad_cast in boost::lexical_cast
|
|
|
+ LOG_ERROR(dhcp6_logger, DHCP6_PARSER_CREATE_EXCEPTION)
|
|
|
+ .arg(current_parser);
|
|
|
answer =
|
|
|
isc::config::createAnswer(1, string("Configuration parsing failed"));
|
|
|
// An error occured, so make sure that we restore original data.
|
|
@@ -1460,6 +1471,7 @@ configureDhcp6Server(Dhcpv6Srv& , ConstElementPtr config_set) {
|
|
|
}
|
|
|
}
|
|
|
catch (const isc::Exception& ex) {
|
|
|
+ LOG_ERROR(dhcp6_logger, DHCP6_PARSER_COMMIT_FAIL).arg(ex.what());
|
|
|
answer =
|
|
|
isc::config::createAnswer(2, string("Configuration commit failed:")
|
|
|
+ ex.what());
|
|
@@ -1467,6 +1479,7 @@ configureDhcp6Server(Dhcpv6Srv& , ConstElementPtr config_set) {
|
|
|
rollback = true;
|
|
|
} catch (...) {
|
|
|
// for things like bad_cast in boost::lexical_cast
|
|
|
+ LOG_ERROR(dhcp6_logger, DHCP6_PARSER_COMMIT_EXCEPTION);
|
|
|
answer =
|
|
|
isc::config::createAnswer(2, string("Configuration commit failed"));
|
|
|
// An error occured, so make sure to restore the original data.
|