diff --git a/doc/examples/kea4/hooks.json b/doc/examples/kea4/hooks.json index e86e04fab9..d6b441414f 100644 --- a/doc/examples/kea4/hooks.json +++ b/doc/examples/kea4/hooks.json @@ -37,7 +37,11 @@ "library": "/opt/lib/security.so" }, { - "library": "/opt/lib/charging.so" + "library": "/opt/lib/charging.so", + "parameters": { + "path": "/var/kea/var", + "base-name": "kea-forensic6" + } } ] } diff --git a/doc/examples/kea4/several-subnets.json b/doc/examples/kea4/several-subnets.json index 79606f9184..b690faf930 100644 --- a/doc/examples/kea4/several-subnets.json +++ b/doc/examples/kea4/several-subnets.json @@ -27,15 +27,36 @@ "renew-timer": 1000, "rebind-timer": 2000, +# RFC6842 says that the server is supposed to echo back client-id option. +# However, some older clients do not support this and are getting confused +# when they get their own client-id. Kea can disable RFC6842 support. + "echo-client-id": false, + +# Some clients don't use stable client identifier, but rather generate them +# during each boot. This may cause a client that reboots frequently to get +# multiple leases, which may not be desirable. As such, sometimes admins +# prefer to tell their DHCPv4 server to ignore client-id value altogether +# and rely exclusively on MAC address. This is a parameter that is defined +# globally, but can be overridden on a subnet level. + "match-client-id": true, + # The following list defines subnets. Each subnet consists of at # least subnet and pool entries. - "subnet4": [ - { "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ], - "subnet": "192.0.2.0/24" }, - { "pools": [ { "pool": "192.0.3.100 - 192.0.3.200" } ], - "subnet": "192.0.3.0/24" }, - { "pools": [ { "pool": "192.0.4.1 - 192.0.4.254" } ], - "subnet": "192.0.4.0/24" } ] + "subnet4": [ + { + "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ], + "subnet": "192.0.2.0/24" + }, + { +# This particular subnet has match-client-id value changed. + "pools": [ { "pool": "192.0.3.100 - 192.0.3.200" } ], + "subnet": "192.0.3.0/24", + "match-client-id": false + }, + { + "pools": [ { "pool": "192.0.4.1 - 192.0.4.254" } ], + "subnet": "192.0.4.0/24" + } ] }, # The following configures logging. It assumes that messages with at least diff --git a/src/bin/dhcp4/.gitignore b/src/bin/dhcp4/.gitignore index 882ce20dab..817adfcd20 100644 --- a/src/bin/dhcp4/.gitignore +++ b/src/bin/dhcp4/.gitignore @@ -5,3 +5,4 @@ /spec_config.h /spec_config.h.pre /s-messages +/dhcp4_parser.report diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 4ba1e52808..03a67981f4 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -862,6 +862,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} \"echo-client-id\" { switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: case isc::dhcp::Parser4Context::SUBNET4: return isc::dhcp::Dhcp4Parser::make_ECHO_CLIENT_ID(driver.loc_); default: @@ -871,6 +872,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} \"match-client-id\" { switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: case isc::dhcp::Parser4Context::SUBNET4: return isc::dhcp::Dhcp4Parser::make_MATCH_CLIENT_ID(driver.loc_); default: