mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-30 05:27:55 +00:00
[#1307] kea-dhcp6 supports parked-packet-limit
src/bin/dhcp6/dhcp6_lexer.ll src/bin/dhcp6/dhcp6_parser.yy src/bin/dhcp6/json_config_parser.cc src/lib/dhcpsrv/parsers/simple_parser6.cc doc/examples/kea6/all-keys.json Added parked-packet-limit src/bin/dhcp6/dhcp6_messages.* DHCP6_HOOK_LEASES6_PARKING_LOT_FULL src/bin/dhcp6/dhcp6_srv.cc Dhcpv6Srv::processDhcp6Query() - drops the packet if the parking lot is full src/bin/dhcp6/tests/get_config_unittest.cc updated
This commit is contained in:
parent
9e3ad66c13
commit
c9f19c5322
@ -505,7 +505,7 @@
|
||||
// DHCPREQUESTs) that may be parked while waiting for hook library
|
||||
// work to complete, prior to a response (e.g. DHCPACK) being sent
|
||||
// back to the client. A typical example is when kea-dhcp4 parks a
|
||||
// DHCPREQUEST while it sends the requesite lease update(s) to its
|
||||
// DHCPREQUEST while it sends the requisite lease update(s) to its
|
||||
// HA peer(s). The packet is unparked once the update(s) have been
|
||||
// acknowledged. This value limits the number of packets that can
|
||||
// be held pending the updates. In times of heavy client traffic,
|
||||
|
@ -503,6 +503,18 @@
|
||||
}
|
||||
],
|
||||
|
||||
// Global value which limits the number of client packets (e.g.
|
||||
// REQUESTs,RENEWs...) that may be parked while waiting for
|
||||
// hook library work to complete, prior to a response (e.g. REPLY)
|
||||
// being sent back to the client. A typical example is when kea-dhcp6
|
||||
// parks a REQUEST while it sends the requisite lease update(s) to its
|
||||
// HA peer(s). The packet is unparked once the update(s) have been
|
||||
// acknowledged. This value limits the number of packets that can
|
||||
// be held pending the updates. In times of heavy client traffic,
|
||||
// this value can keep kea-dhcp6 from building an insurmountable
|
||||
// backlog of updates.
|
||||
"parked-packet-limit": 128,
|
||||
|
||||
// Global (default) value of the preferred lifetime.
|
||||
"preferred-lifetime": 50,
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -939,6 +939,15 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu]
|
||||
}
|
||||
}
|
||||
|
||||
\"parked-packet-limit\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::dhcp::Parser6Context::DHCP6:
|
||||
return isc::dhcp::Dhcp6Parser::make_PARKED_PACKET_LIMIT(driver.loc_);
|
||||
default:
|
||||
return isc::dhcp::Dhcp6Parser::make_STRING("parked-packet-limit", driver.loc_);
|
||||
}
|
||||
}
|
||||
|
||||
\"statistic-default-sample-count\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::dhcp::Parser6Context::DHCP6:
|
||||
|
@ -73,6 +73,7 @@ extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_NA_SKIP = "DHCP6_HOOK
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP = "DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_DROP = "DHCP6_HOOK_LEASES6_COMMITTED_DROP";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_PARK = "DHCP6_HOOK_LEASES6_COMMITTED_PARK";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_PARKING_LOT_FULL = "DHCP6_HOOK_LEASES6_PARKING_LOT_FULL";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_RCVD_SKIP = "DHCP6_HOOK_PACKET_RCVD_SKIP";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_DROP = "DHCP6_HOOK_PACKET_SEND_DROP";
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_SKIP = "DHCP6_HOOK_PACKET_SEND_SKIP";
|
||||
@ -229,6 +230,7 @@ const char* values[] = {
|
||||
"DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP", "%1: prefix lease was not released because a callout set the next step to SKIP",
|
||||
"DHCP6_HOOK_LEASES6_COMMITTED_DROP", "%1: packet is dropped, because a callout set the next step to DROP",
|
||||
"DHCP6_HOOK_LEASES6_COMMITTED_PARK", "%1: packet is parked, because a callout set the next step to PARK",
|
||||
"DHCP6_HOOK_LEASES6_PARKING_LOT_FULL", "The parked-packet-limit %1, has been reached, dropping query: %2",
|
||||
"DHCP6_HOOK_PACKET_RCVD_SKIP", "%1: packet is dropped, because a callout set the next step to SKIP",
|
||||
"DHCP6_HOOK_PACKET_SEND_DROP", "%1: prepared DHCPv6 response was not sent because a callout set the next ste to DROP",
|
||||
"DHCP6_HOOK_PACKET_SEND_SKIP", "%1: prepared DHCPv6 response is not built because a callout set the next step to SKIP",
|
||||
|
@ -74,6 +74,7 @@ extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_NA_SKIP;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASE6_RELEASE_PD_SKIP;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_DROP;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_COMMITTED_PARK;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_LEASES6_PARKING_LOT_FULL;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_RCVD_SKIP;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_DROP;
|
||||
extern const isc::log::MessageID DHCP6_HOOK_PACKET_SEND_SKIP;
|
||||
|
@ -422,6 +422,14 @@ not build the wire data (pack) because it was already done by the
|
||||
book. The argument specifies the client and transaction identification
|
||||
information.
|
||||
|
||||
% DHCP6_HOOK_LEASES6_PARKING_LOT_FULL The parked-packet-limit %1, has been reached, dropping query: %2
|
||||
This debug message occurs when the parking lot used to hold client queries
|
||||
while hook library work for them completes has reached or exceeded the
|
||||
limit set by the parked-packet-limit global parameter. This can occur when
|
||||
kea-dhcp6 is using hook libraries (e.g. HA) that implement the
|
||||
"leases6-committed" callout and client queries are arriving faster than
|
||||
those callouts can fulfill them.
|
||||
|
||||
% DHCP6_HOOK_SUBNET6_SELECT_DROP %1: packet was dropped because a callout set the drop flag
|
||||
This debug message is printed when a callout installed on the
|
||||
subnet6_select hook point set the drop flag. For this particular hook
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -129,6 +129,7 @@ using namespace std;
|
||||
RECORD_TYPES "record-types"
|
||||
ENCAPSULATE "encapsulate"
|
||||
ARRAY "array"
|
||||
PARKED_PACKET_LIMIT "parked-packet-limit"
|
||||
|
||||
SHARED_NETWORKS "shared-networks"
|
||||
|
||||
@ -528,6 +529,7 @@ global_param: data_directory
|
||||
| dhcp_multi_threading
|
||||
| ip_reservations_unique
|
||||
| compatibility
|
||||
| parked_packet_limit
|
||||
| unknown_map_entry
|
||||
;
|
||||
|
||||
@ -744,6 +746,12 @@ server_tag: SERVER_TAG {
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
parked_packet_limit: PARKED_PACKET_LIMIT COLON INTEGER {
|
||||
ctx.unique("parked-packet-limit", ctx.loc2pos(@1));
|
||||
ElementPtr ppl(new IntElement($3, ctx.loc2pos(@3)));
|
||||
ctx.stack_.back()->set("parked-packet-limit", ppl);
|
||||
};
|
||||
|
||||
ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN {
|
||||
ctx.unique("ip-reservations-unique", ctx.loc2pos(@1));
|
||||
ElementPtr unique(new BoolElement($3, ctx.loc2pos(@3)));
|
||||
|
@ -1027,6 +1027,30 @@ Dhcpv6Srv::processDhcp6Query(Pkt6Ptr& query, Pkt6Ptr& rsp) {
|
||||
}
|
||||
callout_handle->setArgument("deleted_leases6", deleted_leases);
|
||||
|
||||
// Get the parking limit. Parsing should ensure the value is present.
|
||||
uint32_t parked_packet_limit = 0;
|
||||
data::ConstElementPtr ppl = CfgMgr::instance().
|
||||
getCurrentCfg()->getConfiguredGlobal("parked-packet-limit");
|
||||
if (ppl) {
|
||||
parked_packet_limit = ppl->intValue();
|
||||
}
|
||||
|
||||
if (parked_packet_limit) {
|
||||
const auto& parking_lot = ServerHooks::getServerHooks().
|
||||
getParkingLotPtr("leases6_committed");
|
||||
if (parking_lot && (parking_lot->size() >= parked_packet_limit)) {
|
||||
// We can't park it so we're going to throw it on the floor.
|
||||
LOG_DEBUG(packet6_logger, DBGLVL_PKT_HANDLING,
|
||||
DHCP6_HOOK_LEASES6_PARKING_LOT_FULL)
|
||||
.arg(parked_packet_limit)
|
||||
.arg(query->getLabel());
|
||||
isc::stats::StatsMgr::instance().addValue("pkt6-receive-drop",
|
||||
static_cast<int64_t>(1));
|
||||
rsp.reset();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// We proactively park the packet. We'll unpark it without invoking
|
||||
// the callback (i.e. drop) unless the callout status is set to
|
||||
// NEXT_STEP_PARK. Otherwise the callback we bind here will be
|
||||
|
@ -802,7 +802,8 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
|
||||
(config_pair.first == "store-extended-info") ||
|
||||
(config_pair.first == "statistic-default-sample-count") ||
|
||||
(config_pair.first == "statistic-default-sample-age") ||
|
||||
(config_pair.first == "ip-reservations-unique")) {
|
||||
(config_pair.first == "ip-reservations-unique") ||
|
||||
(config_pair.first == "parked-packet-limit")) {
|
||||
CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
|
||||
config_pair.second);
|
||||
continue;
|
||||
|
@ -1,8 +1,8 @@
|
||||
// A Bison parser, made by GNU Bison 3.7.6.
|
||||
// A Bison parser, made by GNU Bison 3.3.1.
|
||||
|
||||
// Locations for Bison parsers in C++
|
||||
|
||||
// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
@ -15,7 +15,7 @@
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// As a special exception, you may create a larger work that contains
|
||||
// part or all of the Bison parser skeleton and distribute that work
|
||||
@ -38,6 +38,7 @@
|
||||
#ifndef YY_PARSER6_LOCATION_HH_INCLUDED
|
||||
# define YY_PARSER6_LOCATION_HH_INCLUDED
|
||||
|
||||
# include <algorithm> // std::max
|
||||
# include <iostream>
|
||||
# include <string>
|
||||
|
||||
@ -53,23 +54,17 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#line 14 "dhcp6_parser.yy"
|
||||
#line 14 "dhcp6_parser.yy" // location.cc:339
|
||||
namespace isc { namespace dhcp {
|
||||
#line 59 "location.hh"
|
||||
|
||||
#line 60 "location.hh" // location.cc:339
|
||||
/// A point in a source file.
|
||||
class position
|
||||
{
|
||||
public:
|
||||
/// Type for file name.
|
||||
typedef const std::string filename_type;
|
||||
/// Type for line and column numbers.
|
||||
typedef int counter_type;
|
||||
|
||||
/// Construct a position.
|
||||
explicit position (filename_type* f = YY_NULLPTR,
|
||||
counter_type l = 1,
|
||||
counter_type c = 1)
|
||||
explicit position (std::string* f = YY_NULLPTR,
|
||||
unsigned l = 1u,
|
||||
unsigned c = 1u)
|
||||
: filename (f)
|
||||
, line (l)
|
||||
, column (c)
|
||||
@ -77,9 +72,9 @@ namespace isc { namespace dhcp {
|
||||
|
||||
|
||||
/// Initialization.
|
||||
void initialize (filename_type* fn = YY_NULLPTR,
|
||||
counter_type l = 1,
|
||||
counter_type c = 1)
|
||||
void initialize (std::string* fn = YY_NULLPTR,
|
||||
unsigned l = 1u,
|
||||
unsigned c = 1u)
|
||||
{
|
||||
filename = fn;
|
||||
line = l;
|
||||
@ -89,40 +84,41 @@ namespace isc { namespace dhcp {
|
||||
/** \name Line and Column related manipulators
|
||||
** \{ */
|
||||
/// (line related) Advance to the COUNT next lines.
|
||||
void lines (counter_type count = 1)
|
||||
void lines (int count = 1)
|
||||
{
|
||||
if (count)
|
||||
{
|
||||
column = 1;
|
||||
column = 1u;
|
||||
line = add_ (line, count, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/// (column related) Advance to the COUNT next columns.
|
||||
void columns (counter_type count = 1)
|
||||
void columns (int count = 1)
|
||||
{
|
||||
column = add_ (column, count, 1);
|
||||
}
|
||||
/** \} */
|
||||
|
||||
/// File name to which this position refers.
|
||||
filename_type* filename;
|
||||
std::string* filename;
|
||||
/// Current line number.
|
||||
counter_type line;
|
||||
unsigned line;
|
||||
/// Current column number.
|
||||
counter_type column;
|
||||
unsigned column;
|
||||
|
||||
private:
|
||||
/// Compute max (min, lhs+rhs).
|
||||
static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
|
||||
static unsigned add_ (unsigned lhs, int rhs, int min)
|
||||
{
|
||||
return lhs + rhs < min ? min : lhs + rhs;
|
||||
return static_cast<unsigned> (std::max (min,
|
||||
static_cast<int> (lhs) + rhs));
|
||||
}
|
||||
};
|
||||
|
||||
/// Add \a width columns, in place.
|
||||
inline position&
|
||||
operator+= (position& res, position::counter_type width)
|
||||
operator+= (position& res, int width)
|
||||
{
|
||||
res.columns (width);
|
||||
return res;
|
||||
@ -130,25 +126,43 @@ namespace isc { namespace dhcp {
|
||||
|
||||
/// Add \a width columns.
|
||||
inline position
|
||||
operator+ (position res, position::counter_type width)
|
||||
operator+ (position res, int width)
|
||||
{
|
||||
return res += width;
|
||||
}
|
||||
|
||||
/// Subtract \a width columns, in place.
|
||||
inline position&
|
||||
operator-= (position& res, position::counter_type width)
|
||||
operator-= (position& res, int width)
|
||||
{
|
||||
return res += -width;
|
||||
}
|
||||
|
||||
/// Subtract \a width columns.
|
||||
inline position
|
||||
operator- (position res, position::counter_type width)
|
||||
operator- (position res, int width)
|
||||
{
|
||||
return res -= width;
|
||||
}
|
||||
|
||||
/// Compare two position objects.
|
||||
inline bool
|
||||
operator== (const position& pos1, const position& pos2)
|
||||
{
|
||||
return (pos1.line == pos2.line
|
||||
&& pos1.column == pos2.column
|
||||
&& (pos1.filename == pos2.filename
|
||||
|| (pos1.filename && pos2.filename
|
||||
&& *pos1.filename == *pos2.filename)));
|
||||
}
|
||||
|
||||
/// Compare two position objects.
|
||||
inline bool
|
||||
operator!= (const position& pos1, const position& pos2)
|
||||
{
|
||||
return !(pos1 == pos2);
|
||||
}
|
||||
|
||||
/** \brief Intercept output stream redirection.
|
||||
** \param ostr the destination output stream
|
||||
** \param pos a reference to the position to redirect
|
||||
@ -166,10 +180,6 @@ namespace isc { namespace dhcp {
|
||||
class location
|
||||
{
|
||||
public:
|
||||
/// Type for file name.
|
||||
typedef position::filename_type filename_type;
|
||||
/// Type for line and column numbers.
|
||||
typedef position::counter_type counter_type;
|
||||
|
||||
/// Construct a location from \a b to \a e.
|
||||
location (const position& b, const position& e)
|
||||
@ -184,18 +194,18 @@ namespace isc { namespace dhcp {
|
||||
{}
|
||||
|
||||
/// Construct a 0-width location in \a f, \a l, \a c.
|
||||
explicit location (filename_type* f,
|
||||
counter_type l = 1,
|
||||
counter_type c = 1)
|
||||
explicit location (std::string* f,
|
||||
unsigned l = 1u,
|
||||
unsigned c = 1u)
|
||||
: begin (f, l, c)
|
||||
, end (f, l, c)
|
||||
{}
|
||||
|
||||
|
||||
/// Initialization.
|
||||
void initialize (filename_type* f = YY_NULLPTR,
|
||||
counter_type l = 1,
|
||||
counter_type c = 1)
|
||||
void initialize (std::string* f = YY_NULLPTR,
|
||||
unsigned l = 1u,
|
||||
unsigned c = 1u)
|
||||
{
|
||||
begin.initialize (f, l, c);
|
||||
end = begin;
|
||||
@ -211,13 +221,13 @@ namespace isc { namespace dhcp {
|
||||
}
|
||||
|
||||
/// Extend the current location to the COUNT next columns.
|
||||
void columns (counter_type count = 1)
|
||||
void columns (int count = 1)
|
||||
{
|
||||
end += count;
|
||||
}
|
||||
|
||||
/// Extend the current location to the COUNT next lines.
|
||||
void lines (counter_type count = 1)
|
||||
void lines (int count = 1)
|
||||
{
|
||||
end.lines (count);
|
||||
}
|
||||
@ -232,49 +242,57 @@ namespace isc { namespace dhcp {
|
||||
};
|
||||
|
||||
/// Join two locations, in place.
|
||||
inline location&
|
||||
operator+= (location& res, const location& end)
|
||||
inline location& operator+= (location& res, const location& end)
|
||||
{
|
||||
res.end = end.end;
|
||||
return res;
|
||||
}
|
||||
|
||||
/// Join two locations.
|
||||
inline location
|
||||
operator+ (location res, const location& end)
|
||||
inline location operator+ (location res, const location& end)
|
||||
{
|
||||
return res += end;
|
||||
}
|
||||
|
||||
/// Add \a width columns to the end position, in place.
|
||||
inline location&
|
||||
operator+= (location& res, location::counter_type width)
|
||||
inline location& operator+= (location& res, int width)
|
||||
{
|
||||
res.columns (width);
|
||||
return res;
|
||||
}
|
||||
|
||||
/// Add \a width columns to the end position.
|
||||
inline location
|
||||
operator+ (location res, location::counter_type width)
|
||||
inline location operator+ (location res, int width)
|
||||
{
|
||||
return res += width;
|
||||
}
|
||||
|
||||
/// Subtract \a width columns to the end position, in place.
|
||||
inline location&
|
||||
operator-= (location& res, location::counter_type width)
|
||||
inline location& operator-= (location& res, int width)
|
||||
{
|
||||
return res += -width;
|
||||
}
|
||||
|
||||
/// Subtract \a width columns to the end position.
|
||||
inline location
|
||||
operator- (location res, location::counter_type width)
|
||||
inline location operator- (location res, int width)
|
||||
{
|
||||
return res -= width;
|
||||
}
|
||||
|
||||
/// Compare two location objects.
|
||||
inline bool
|
||||
operator== (const location& loc1, const location& loc2)
|
||||
{
|
||||
return loc1.begin == loc2.begin && loc1.end == loc2.end;
|
||||
}
|
||||
|
||||
/// Compare two location objects.
|
||||
inline bool
|
||||
operator!= (const location& loc1, const location& loc2)
|
||||
{
|
||||
return !(loc1 == loc2);
|
||||
}
|
||||
|
||||
/** \brief Intercept output stream redirection.
|
||||
** \param ostr the destination output stream
|
||||
** \param loc a reference to the location to redirect
|
||||
@ -285,8 +303,7 @@ namespace isc { namespace dhcp {
|
||||
std::basic_ostream<YYChar>&
|
||||
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
|
||||
{
|
||||
location::counter_type end_col
|
||||
= 0 < loc.end.column ? loc.end.column - 1 : 0;
|
||||
unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
|
||||
ostr << loc.begin;
|
||||
if (loc.end.filename
|
||||
&& (!loc.begin.filename
|
||||
@ -299,8 +316,7 @@ namespace isc { namespace dhcp {
|
||||
return ostr;
|
||||
}
|
||||
|
||||
#line 14 "dhcp6_parser.yy"
|
||||
#line 14 "dhcp6_parser.yy" // location.cc:339
|
||||
} } // isc::dhcp
|
||||
#line 305 "location.hh"
|
||||
|
||||
#line 322 "location.hh" // location.cc:339
|
||||
#endif // !YY_PARSER6_LOCATION_HH_INCLUDED
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <cc/simple_parser.h>
|
||||
#include <cc/cfg_to_element.h>
|
||||
#include <testutils/user_context_utils.h>
|
||||
#include <testutils/user_context_utils.h>
|
||||
#include <dhcp/tests/iface_mgr_test_config.h>
|
||||
#include <dhcpsrv/cfgmgr.h>
|
||||
#include <dhcpsrv/parsers/simple_parser6.h>
|
||||
@ -69,6 +70,7 @@ namespace {
|
||||
///@{
|
||||
/// @brief extracted configurations
|
||||
const char* EXTRACTED_CONFIGS[] = {
|
||||
/// put this after const char* EXTRACTED_CONFIGS[] = {
|
||||
// CONFIGURATION 0
|
||||
"{\n"
|
||||
" \"interfaces-config\": {\n"
|
||||
@ -2012,11 +2014,43 @@ const char* EXTRACTED_CONFIGS[] = {
|
||||
" \"thread-pool-size\": 48\n"
|
||||
" },\n"
|
||||
" \"subnet6\": [ ]\n"
|
||||
" }\n",
|
||||
// CONFIGURATION 63
|
||||
"{\n"
|
||||
" \"client-classes\": [\n"
|
||||
" {\n"
|
||||
" \"max-preferred-lifetime\": 6000,\n"
|
||||
" \"max-valid-lifetime\": 3000,\n"
|
||||
" \"min-preferred-lifetime\": 4000,\n"
|
||||
" \"min-valid-lifetime\": 1000,\n"
|
||||
" \"name\": \"one\",\n"
|
||||
" \"preferred-lifetime\": 5000,\n"
|
||||
" \"valid-lifetime\": 2000\n"
|
||||
" },\n"
|
||||
" {\n"
|
||||
" \"name\": \"two\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"interfaces-config\": {\n"
|
||||
" \"interfaces\": [ \"*\" ],\n"
|
||||
" \"re-detect\": false\n"
|
||||
" },\n"
|
||||
" \"subnet6\": [\n"
|
||||
" {\n"
|
||||
" \"pools\": [\n"
|
||||
" {\n"
|
||||
" \"pool\": \"2001:db8:1::1 - 2001:db8:1::ffff\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"subnet\": \"2001:db8:1::/64\"\n"
|
||||
" }\n"
|
||||
" ]\n"
|
||||
" }\n"
|
||||
};
|
||||
|
||||
/// @brief unparsed configurations
|
||||
const char* UNPARSED_CONFIGS[] = {
|
||||
///put this after const char* UNPARSED_CONFIGS[] = {
|
||||
// CONFIGURATION 0
|
||||
"{\n"
|
||||
" \"calculate-tee-times\": true,\n"
|
||||
@ -2073,6 +2107,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2161,6 +2196,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2275,6 +2311,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2460,6 +2497,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2645,6 +2683,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2834,6 +2873,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -2948,6 +2988,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3059,6 +3100,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3170,6 +3212,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3313,6 +3356,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3423,6 +3467,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3535,6 +3580,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3649,6 +3695,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3778,6 +3825,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -3900,6 +3948,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"ipv6-address\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -3992,6 +4041,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"record\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -4093,6 +4143,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"ipv4-address\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -4185,6 +4236,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"uint32\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -4277,6 +4329,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"uint32\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -4376,6 +4429,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -4486,6 +4540,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -4640,6 +4695,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"uint32\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -4786,6 +4842,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"ipv4-address\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -4923,6 +4980,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"ipv4-address\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5033,6 +5091,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5186,6 +5245,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5364,6 +5424,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5493,6 +5554,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"string\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5603,6 +5665,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5687,6 +5750,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5771,6 +5835,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5881,6 +5946,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -5991,6 +6057,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6179,6 +6246,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6304,6 +6372,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6437,6 +6506,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6547,6 +6617,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6657,6 +6728,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -6767,6 +6839,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7012,6 +7085,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"type\": \"uint32\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7135,6 +7209,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7219,6 +7294,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7303,6 +7379,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7579,6 +7656,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -7717,6 +7795,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"23\", \"37\", \"65\" ],\n"
|
||||
@ -7801,6 +7880,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -7883,6 +7963,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -7965,6 +8046,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -8047,6 +8129,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -8143,6 +8226,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8253,6 +8337,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8363,6 +8448,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8474,6 +8560,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8590,6 +8677,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8706,6 +8794,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8818,6 +8907,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -8931,6 +9021,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -9063,6 +9154,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -9207,6 +9299,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" }\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -9377,6 +9470,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -9579,6 +9673,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3000,\n"
|
||||
" \"rebind-timer\": 2000,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
@ -9663,6 +9758,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -9745,6 +9841,7 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
@ -9770,6 +9867,129 @@ const char* UNPARSED_CONFIGS[] = {
|
||||
" \"t1-percent\": 0.5,\n"
|
||||
" \"t2-percent\": 0.8,\n"
|
||||
" \"valid-lifetime\": 7200\n"
|
||||
" }\n",
|
||||
// CONFIGURATION 63
|
||||
"{\n"
|
||||
" \"calculate-tee-times\": true,\n"
|
||||
" \"client-classes\": [\n"
|
||||
" {\n"
|
||||
" \"max-preferred-lifetime\": 6000,\n"
|
||||
" \"max-valid-lifetime\": 3000,\n"
|
||||
" \"min-preferred-lifetime\": 4000,\n"
|
||||
" \"min-valid-lifetime\": 1000,\n"
|
||||
" \"name\": \"one\",\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"preferred-lifetime\": 5000,\n"
|
||||
" \"valid-lifetime\": 2000\n"
|
||||
" },\n"
|
||||
" {\n"
|
||||
" \"name\": \"two\",\n"
|
||||
" \"option-data\": [ ]\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"ddns-generated-prefix\": \"myhost\",\n"
|
||||
" \"ddns-override-client-update\": false,\n"
|
||||
" \"ddns-override-no-update\": false,\n"
|
||||
" \"ddns-qualifying-suffix\": \"\",\n"
|
||||
" \"ddns-replace-client-name\": \"never\",\n"
|
||||
" \"ddns-send-updates\": true,\n"
|
||||
" \"ddns-update-on-renew\": false,\n"
|
||||
" \"ddns-use-conflict-resolution\": true,\n"
|
||||
" \"decline-probation-period\": 86400,\n"
|
||||
" \"dhcp-ddns\": {\n"
|
||||
" \"enable-updates\": false,\n"
|
||||
" \"max-queue-size\": 1024,\n"
|
||||
" \"ncr-format\": \"JSON\",\n"
|
||||
" \"ncr-protocol\": \"UDP\",\n"
|
||||
" \"sender-ip\": \"0.0.0.0\",\n"
|
||||
" \"sender-port\": 0,\n"
|
||||
" \"server-ip\": \"127.0.0.1\",\n"
|
||||
" \"server-port\": 53001\n"
|
||||
" },\n"
|
||||
" \"dhcp-queue-control\": {\n"
|
||||
" \"capacity\": 64,\n"
|
||||
" \"enable-queue\": false,\n"
|
||||
" \"queue-type\": \"kea-ring6\"\n"
|
||||
" },\n"
|
||||
" \"dhcp4o6-port\": 0,\n"
|
||||
" \"expired-leases-processing\": {\n"
|
||||
" \"flush-reclaimed-timer-wait-time\": 25,\n"
|
||||
" \"hold-reclaimed-time\": 3600,\n"
|
||||
" \"max-reclaim-leases\": 100,\n"
|
||||
" \"max-reclaim-time\": 250,\n"
|
||||
" \"reclaim-timer-wait-time\": 10,\n"
|
||||
" \"unwarned-reclaim-cycles\": 5\n"
|
||||
" },\n"
|
||||
" \"hooks-libraries\": [ ],\n"
|
||||
" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
|
||||
" \"hostname-char-replacement\": \"\",\n"
|
||||
" \"hostname-char-set\": \"[^A-Za-z0-9.-]\",\n"
|
||||
" \"interfaces-config\": {\n"
|
||||
" \"interfaces\": [ \"*\" ],\n"
|
||||
" \"re-detect\": false\n"
|
||||
" },\n"
|
||||
" \"ip-reservations-unique\": true,\n"
|
||||
" \"lease-database\": {\n"
|
||||
" \"type\": \"memfile\"\n"
|
||||
" },\n"
|
||||
" \"mac-sources\": [ \"any\" ],\n"
|
||||
" \"multi-threading\": {\n"
|
||||
" \"enable-multi-threading\": false,\n"
|
||||
" \"packet-queue-size\": 64,\n"
|
||||
" \"thread-pool-size\": 0\n"
|
||||
" },\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"option-def\": [ ],\n"
|
||||
" \"parked-packet-limit\": 256,\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"relay-supplied-options\": [ \"65\" ],\n"
|
||||
" \"reservations-global\": false,\n"
|
||||
" \"reservations-in-subnet\": true,\n"
|
||||
" \"reservations-out-of-pool\": false,\n"
|
||||
" \"sanity-checks\": {\n"
|
||||
" \"lease-checks\": \"warn\"\n"
|
||||
" },\n"
|
||||
" \"server-id\": {\n"
|
||||
" \"enterprise-id\": 0,\n"
|
||||
" \"htype\": 0,\n"
|
||||
" \"identifier\": \"\",\n"
|
||||
" \"persist\": true,\n"
|
||||
" \"time\": 0,\n"
|
||||
" \"type\": \"LLT\"\n"
|
||||
" },\n"
|
||||
" \"server-tag\": \"\",\n"
|
||||
" \"shared-networks\": [ ],\n"
|
||||
" \"statistic-default-sample-age\": 0,\n"
|
||||
" \"statistic-default-sample-count\": 20,\n"
|
||||
" \"store-extended-info\": false,\n"
|
||||
" \"subnet6\": [\n"
|
||||
" {\n"
|
||||
" \"calculate-tee-times\": true,\n"
|
||||
" \"id\": 1,\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"pd-pools\": [ ],\n"
|
||||
" \"pools\": [\n"
|
||||
" {\n"
|
||||
" \"option-data\": [ ],\n"
|
||||
" \"pool\": \"2001:db8:1::1-2001:db8:1::ffff\"\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"preferred-lifetime\": 3600,\n"
|
||||
" \"rapid-commit\": false,\n"
|
||||
" \"relay\": {\n"
|
||||
" \"ip-addresses\": [ ]\n"
|
||||
" },\n"
|
||||
" \"reservations\": [ ],\n"
|
||||
" \"store-extended-info\": false,\n"
|
||||
" \"subnet\": \"2001:db8:1::/64\",\n"
|
||||
" \"t1-percent\": 0.5,\n"
|
||||
" \"t2-percent\": 0.8,\n"
|
||||
" \"valid-lifetime\": 7200\n"
|
||||
" }\n"
|
||||
" ],\n"
|
||||
" \"t1-percent\": 0.5,\n"
|
||||
" \"t2-percent\": 0.8,\n"
|
||||
" \"valid-lifetime\": 7200\n"
|
||||
" }\n"
|
||||
};
|
||||
|
||||
|
@ -97,6 +97,7 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = {
|
||||
{ "ddns-update-on-renew", Element::boolean },
|
||||
{ "ddns-use-conflict-resolution", Element::boolean },
|
||||
{ "compatibility", Element::map },
|
||||
{ "parked-packet-limit", Element::integer },
|
||||
};
|
||||
|
||||
/// @brief This table defines default global values for DHCPv6
|
||||
@ -129,7 +130,8 @@ const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = {
|
||||
{ "statistic-default-sample-age", Element::integer, "0" },
|
||||
{ "ip-reservations-unique", Element::boolean, "true" },
|
||||
{ "ddns-update-on-renew", Element::boolean, "false" },
|
||||
{ "ddns-use-conflict-resolution", Element::boolean, "true" }
|
||||
{ "ddns-use-conflict-resolution", Element::boolean, "true" },
|
||||
{ "parked-packet-limit", Element::integer, "256" }
|
||||
};
|
||||
|
||||
/// @brief This table defines all option definition parameters.
|
||||
|
Loading…
x
Reference in New Issue
Block a user