ISC Open Source Projects issueshttps://gitlab.isc.org/groups/isc-projects/-/issues2020-09-10T15:49:35Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/449Create AuditRevision object to carry supplementary information for audit entries2020-09-10T15:49:35ZMarcin SiodelskiCreate AuditRevision object to carry supplementary information for audit entriesThe CB database includes `dhcp4_audit_revision` table which holds general information about the changes applied in the database. Currently it holds a timestamp and the log message. The timestamp is and will remain being generated automat...The CB database includes `dhcp4_audit_revision` table which holds general information about the changes applied in the database. Currently it holds a timestamp and the log message. The timestamp is and will remain being generated automatically. The log message is also generated automatically at the moment but the idea is to be able to specify the log message in the command. Some examples can be found here:
https://gitlab.isc.org/isc-projects/kea/wikis/designs/configuration-in-db-design#configuration-management
In the future we may store more information in the revision table. For example: name of the user who applied a change, IP address from which the command has been sent etc. This information must be encapsulated in a new object, e.g. AuditRevision and passed via the CB API to the commands that modify the information in the database, i.e. set and del commands.
Even though we could postpone this change to later Kea release, it may be actually better to add it now to keep the API stable in next releases.outstandinghttps://gitlab.isc.org/isc-projects/kea/-/issues/382Propagate lease updates between HA peers2022-11-02T15:08:41ZMarcin SiodelskiPropagate lease updates between HA peersHigh Availability setup includes at least two servers paired to provide reliable service. We have the lease_cmds hooks library which is utilized by the HA hooks library to send lease updates between the peers. Sometimes, though, an admin...High Availability setup includes at least two servers paired to provide reliable service. We have the lease_cmds hooks library which is utilized by the HA hooks library to send lease updates between the peers. Sometimes, though, an administrator may want to update lease information via the control channel, e.g. remove stale lease. Currently, he'd need to send appropriate command to all HA peers that (potentially) share the lease information. It is useful to be able to send the command to only one of the HA peers and let it propagate it down to other servers. For that, the HA peer would need to somehow identify that the command has been sent by the administrator rather than the HA peer, otherwise it would trigger circular updates.
The details how to implement it are TBD.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/316Update DHCPv6 server to fully support RFC7550 (obsoleted by RFC 8415)2022-11-02T15:08:41ZMarcin SiodelskiUpdate DHCPv6 server to fully support RFC7550 (obsoleted by RFC 8415)While addressing https://gitlab.isc.org/isc-projects/kea/issues/288 I realized that DHCPv6 server logic follows rather simplified approach when it comes to Renew/Rebind processing. The following is the todo comment inserted as part of th...While addressing https://gitlab.isc.org/isc-projects/kea/issues/288 I realized that DHCPv6 server logic follows rather simplified approach when it comes to Renew/Rebind processing. The following is the todo comment inserted as part of the #288:
We should consider unification of the server behavior for address assignment and prefix delegation with respect to Rebind message processing. The RFC 8415, section 18.3.5 doesn't really differentiate between IA_NA and IA_PD in how they should be processed by the server. The intention of the spec is as follows:
- If the server finds a lease but addresses and/or prefixes are not
appropriate anymore, it sends them with zero lifetimes.
- If the server doesn't find a lease the server checks if the addresses
and/or prefixes the client sends are appropriate and sends them back
with zero lifetimes if they aren't.
- The server may choose to not respond at all, if it cannot determine
whether the addresses and/or prefixes are appropriate and it doesn't
allocate any other addresses and/or prefixes.
- If the server cannot find the leases included in the Rebind, the
server may either allocate the leases or simply return NoBinding.
The extendIA_PD function drops the Rebind message if it cannot find the client entry (as a result of not finding a subnet for the client), the extendIA_NA function sends NoBinding status code in that case. Perhaps we should introduce an "Authoritative" configuration flag which, if enabled, would cause the server to always respond, either indicating that the address/prefix is inappropriate (with zero lifetimes) or that there is no binding (NoBinding status code) for both addresses and prefixes. When the "Authoritative" flag is disabled the server would drop the Rebind for which there is neither subnet selected nor client entry found (as it could be handled by another DHCP server). If nothing else we could consider unifying the behavior of extendIA_NA and extendIA_PD with respect to Rebind processing.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/234ISC DHCP log executable statement2023-07-13T18:33:07ZFrancis DupontISC DHCP log executable statementAccording to ISC DHCP dhcp-eval(5):
>>>
log (priority, data-expr)
Logging statements may be used to send information to the standard
logging channels. A logging statement includes an optional priority
...According to ISC DHCP dhcp-eval(5):
>>>
log (priority, data-expr)
Logging statements may be used to send information to the standard
logging channels. A logging statement includes an optional priority
(fatal, error, info, or debug), and a data expression.
Logging statements take only a single data expression argument, so if
you want to output multiple data values, you will need to use the
concat operator to concatenate them.
>>>
It is an interesting feature which was discussed before (cf #4124).
To implement it in the ISC DHCP style we need 3 parameters:
- a boolean expression
- a priority
- a string expression to log
It does not seem so hard to do...backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/232Kea supports only Ethernet hardware type2022-11-02T15:08:43ZFrancis DupontKea supports only Ethernet hardware typeISC DHCP supports some other (real) hardware as FDDI... IMHO it should be allowed to use a number for the hardware type in >= 1.6.ISC DHCP supports some other (real) hardware as FDDI... IMHO it should be allowed to use a number for the hardware type in >= 1.6.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/226ISC DHCP server config option adaptive-lease-time-threshold2022-11-02T15:08:42ZFrancis DupontISC DHCP server config option adaptive-lease-time-threshold>>>
The adaptive-lease-time-threshold statement
**adaptive-lease-time-threshold** percentage;
When the number of allocated leases within a pool rises above the
percentage given in this statement, the DHCP server decreases the
lease len...>>>
The adaptive-lease-time-threshold statement
**adaptive-lease-time-threshold** percentage;
When the number of allocated leases within a pool rises above the
percentage given in this statement, the DHCP server decreases the
lease length for new clients within this pool to min-lease-time sec-
onds. Clients renewing an already valid (long) leases get at least
the remaining time from the current lease. Since the leases expire
faster, the server may either recover more quickly or avoid pool
exhaustion entirely. Once the number of allocated leases drop below
the threshold, the server reverts back to normal lease times. Valid
percentages are between 1 and 99.
>>>
A good idea for a lease allocation hook library.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/221Kea vs ISC DHCP timers2022-11-02T15:08:43ZFrancis DupontKea vs ISC DHCP timersISC DHCP uses 3 values (max, min and default) values for lease-time (valid-lifetime) in Kea).
These 3 values are in the Kea code (aka the triplet class) but are not reflected in config. (note I don't say a solution is better but they are...ISC DHCP uses 3 values (max, min and default) values for lease-time (valid-lifetime) in Kea).
These 3 values are in the Kea code (aka the triplet class) but are not reflected in config. (note I don't say a solution is better but they are different). As the valid-lifetime is a mandatory config parameter this means Kea is rigid (same comment).
For other timers ISC DHCP has preferred-lifetime but derives t1 and t2 (aka renew and rebind timers) from the valid one using standard formula. ISC DHCP follows more the client query, i.e., it uses configured values including computed values only as default and bounds.
This is not a call to change something: it is just a summary for documentation and some infos in the case a customer requests more flexibility.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/218ISC DHCP server config option stash-agent-options2023-07-12T16:34:35ZFrancis DupontISC DHCP server config option stash-agent-optionsThe stash-agent-options statement
>>>
**stash-agent-options flag;**
If the stash-agent-options parameter is true for a given client,
the server will record the relay agent information options sent
during the client's initial DHCPREQUEST...The stash-agent-options statement
>>>
**stash-agent-options flag;**
If the stash-agent-options parameter is true for a given client,
the server will record the relay agent information options sent
during the client's initial DHCPREQUEST message when the client
was in the SELECTING state and behave as if those options are
included in all subsequent DHCPREQUEST messages sent in the RENEWING
state. This works around a problem with relay agent information
options, which is that they usually not appear in DHCPREQUEST
messages sent by the client in the RENEWING state, because such
messages are unicast directly to the server and not sent through a
relay agent.
>>>
It is a real issue (for DHCPv4, in DHCPv6 the server controls the use of unicast (i.e. direct communication) by the client) but I have no idea how (or whether) it is handled by Kea...backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/217scoped D2 client config2022-11-02T15:08:43ZFrancis Dupontscoped D2 client configReading Dan's ISC DHCP config it seems the really useful scoped D2 client config extension is to be able to enable or disable D2 (using enable-updates) in some specific scopes (e.g. a subnet or a class).
Perhaps there is another issue a...Reading Dan's ISC DHCP config it seems the really useful scoped D2 client config extension is to be able to enable or disable D2 (using enable-updates) in some specific scopes (e.g. a subnet or a class).
Perhaps there is another issue about this but if we do the minimum it should be this.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/133Discussion about ordering in configurations.2022-11-02T15:08:43ZFrancis DupontDiscussion about ordering in configurations.It concerns mainly subnets and client classes but most of this is generic, e.g. can be applied to shared networks:
- memory representation must use a multi index container with a sequenced or random access index to implement the order, ...It concerns mainly subnets and client classes but most of this is generic, e.g. can be applied to shared networks:
- memory representation must use a multi index container with a sequenced or random access index to implement the order, in particular we must to not add previous or next field to objects themselves.
- database representation must use previous and next columns in rows to implement a double linked list. First and last rows have a reserved previous or next value (e.g. id 0 for subnets).
- command hooks must add a before or after to insert command (vs always nsert at the end) and an easy way to get the order itself, e.g. the order list of entries used as index (subnet id, client class name, ...).
- optionally (i.e. not in 1.5) we can add a relocate command.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/77memfile: add a command to force writing in-memory DB to file2022-11-02T15:08:43ZGhost Usermemfile: add a command to force writing in-memory DB to filememfile keeps leases in memory and writes changes to disk. If the leasefile is lost for whatever reason, it may be useful to tell Kea to write is entire lease file to disk.memfile keeps leases in memory and writes changes to disk. If the leasefile is lost for whatever reason, it may be useful to tell Kea to write is entire lease file to disk.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/46Please add circuit-ID to result of get lease-42022-11-02T15:08:42ZGhost UserPlease add circuit-ID to result of get lease-4We want to identify leases with circuit ID, how can we get the circuit ID with the lease4-get?
I want to search for a lease with the circuit ID with lease-get.
Vennlig hilsen / Best regards
Frode SætreWe want to identify leases with circuit ID, how can we get the circuit ID with the lease4-get?
I want to search for a lease with the circuit ID with lease-get.
Vennlig hilsen / Best regards
Frode Sætrebackloghttps://gitlab.isc.org/isc-projects/kea/-/issues/41Kea should be able to print performance metrics2023-01-09T12:25:26ZGhost UserKea should be able to print performance metricsWhen debugging an issue, it became clear that finding out how long it takes Kea to process a packet and actually send a response is difficult. It requires matching different log entries, which sometimes is very problematic if there are m...When debugging an issue, it became clear that finding out how long it takes Kea to process a packet and actually send a response is difficult. It requires matching different log entries, which sometimes is very problematic if there are multiple packets sent from a client.
We should develop a way to measure how long it takes to process a packet. The easiest way will be to use a stopwatch (see src/lib/util/stopwatch.h). I think we should remember the timestamp somewhere in Pkt4 (and possibly Pkt6) very early when the packet is received (perhaps in Pkt4 constructor?) and then print the interval value once the response packet is being sent out.
I think it would be useful to have separate logger for this, maybe call it performance or perf? If the concept proves to be useful, we may soon extend it to print out more detailed information about different stages (it took X ms to find host reservation, Y ms to select a lease, Z ms to do DNS update etc).backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/39shared-network option takes precedence before option defined in client class2022-11-02T15:08:43ZGhost Usershared-network option takes precedence before option defined in client classWhen kea6 is configured with shared-network that contain option, and subnet (within that shared-network) which has assigned class with the same option defined - Kea ignores option defined in class.
Example configuration:
```
{
"Dhcp...When kea6 is configured with shared-network that contain option, and subnet (within that shared-network) which has assigned class with the same option defined - Kea ignores option defined in class.
Example configuration:
```
{
"Dhcp6":
{
"renew-timer":1000,
"rebind-timer":2000,
"preferred-lifetime":3000,
"valid-lifetime":4000,
"client-classes":[
{
"name":"Client_Class_1",
"test":"substring(option[1].hex,8,2)==0xf2f1",
"option-data":[
{
"csv-format":true,
"code":23,
"data":"2001:db8::888",
"name":"dns-servers",
"space":"dhcp6"
}
]
}
],
"interfaces-config":
{
"interfaces":["eth2"]
},
"lease-database":
{
"type":"memfile"
},
"shared-networks":[
{
"name":"name-abc",
"interface":"eth2",
"option-data":[
{
"csv-format":true,
"code":23,
"data":"2001:db8::1",
"name":"dns-servers",
"space":"dhcp6"
}
],
"subnet6":[
{
"subnet":"2001:db8:a::/64",
"client-class":"Client_Class_1",
"pools":[
{
"pool":"2001:db8:a::1-2001:db8:a::10"
}
]
}
]
}
]
}
}
```
Packet is evaluated correctly, option 23 has value that is configured on shared-network level, not what is in the class.
```
DEBUG [kea-dhcp6.eval/18704] EVAL_DEBUG_EQUAL Popping 0xF2F1 and 0xF2F1 pushing result 'true'
INFO [kea-dhcp6.dhcp6/18704] EVAL_RESULT Expression Client_Class_1 evaluated to 1
```
but message is created incorreclty:
```
DHCP6_RESPONSE_DATA responding with packet type 2 data is localAddr=[ff02::1:2]:547 remoteAddr=[fe80::800:27ff:fe00:1]:546
msgtype=2(ADVERTISE), transid=0xeda107
type=00001, len=00010: 00:03:00:01:66:55:44:33:f2:f1
type=00002, len=00014: 00:01:00:01:21:81:be:d4:08:00:27:19:b8:2a
type=00003(IA_NA), len=00040: iaid=39866, t1=1000, t2=2000,
options:
type=00005(IAADDR), len=00024: address=2001:db8:a::1, preferred-lft=3000, valid-lft=4000
type=00023, len=00016: 2001:db8::1
```
Entire logs and network capture attached.
Number of subnets within shared-network, or number of shared-networks makes no difference - bug occur.
When client has reservation with option X it correctly overrides option configured on shared-network level.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/37revamp subnet sanity checks2022-11-02T15:08:41ZGhost Userrevamp subnet sanity checksOn one side decides what should be checked:
- interface in shared network
- "same subnet" (cf #5423)
- malformed prefix
etc
And apply this to documentation and code in:
- plain subnet configuration
- in shared network subnet config...On one side decides what should be checked:
- interface in shared network
- "same subnet" (cf #5423)
- malformed prefix
etc
And apply this to documentation and code in:
- plain subnet configuration
- in shared network subnet configuration
- subnet REST API
Should be done after #5423 (definition of "same subnet") and client-class in pools.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/3310Documentation should include more examples with IPv6 addresses in URLs2024-03-25T12:34:33ZFrancis DupontDocumentation should include more examples with IPv6 addresses in URLsThe reason is the syntax is no so trivial... I suggest to add at least one in ARM (hooks-ha.rst) and in kea6 examples.The reason is the syntax is no so trivial... I suggest to add at least one in ARM (hooks-ha.rst) and in kea6 examples.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/3256fix issues pointed out in 2.5.5 sanity checks2024-03-27T13:51:03ZWlodzimierz Wencelfix issues pointed out in 2.5.5 sanity checkscomments copied from isc-projects/kea#3238
1.
couple unused warnings reported on freebsd-13.0-amd64 when running distcheck:
```
18:49:50 --- run_unittests-interval_timer_unittest.o ---
18:49:50 ../../../../../../src/lib/asiolink/test...comments copied from isc-projects/kea#3238
1.
couple unused warnings reported on freebsd-13.0-amd64 when running distcheck:
```
18:49:50 --- run_unittests-interval_timer_unittest.o ---
18:49:50 ../../../../../../src/lib/asiolink/tests/interval_timer_unittest.cc:55:28: warning: private field 'test_obj_' is not used [-Wunused-private-field]
18:49:50 IntervalTimerTest* test_obj_;
18:49:50 ^
18:49:50 ../../../../../../src/lib/asiolink/tests/interval_timer_unittest.cc:141:28: warning: private field 'test_obj_' is not used [-Wunused-private-field]
18:49:50 IntervalTimerTest* test_obj_;
18:49:50 ^
18:49:50 2 warnings generated.
```
```
18:49:50 CXX run_unittests-tls_listener_unittests.o
18:49:50 ../../../../../../src/lib/tcp/tests/tls_listener_unittests.cc:38:12: warning: unused variable 'REQUEST_TIMEOUT' [-Wunused-const-variable]
18:49:50 const long REQUEST_TIMEOUT = 10000;
18:49:50 ^
18:49:50 ../../../../../../src/lib/tcp/tests/tls_listener_unittests.cc:42:12: warning: unused variable 'SHORT_REQUEST_TIMEOUT' [-Wunused-const-variable]
18:49:50 const long SHORT_REQUEST_TIMEOUT = 200;
18:49:50 ^
18:49:50 2 warnings generated.
18:49:50 --- run_unittests-tcp_listener_unittests.o ---
18:49:50 ../../../../../../src/lib/tcp/tests/tcp_listener_unittests.cc:43:12: warning: unused variable 'REQUEST_TIMEOUT' [-Wunused-const-variable]
18:49:50 const long REQUEST_TIMEOUT = 10000;
18:49:50 ^
18:49:50 ../../../../../../src/lib/tcp/tests/tcp_listener_unittests.cc:47:12: warning: unused variable 'SHORT_REQUEST_TIMEOUT' [-Wunused-const-variable]
18:49:50 const long SHORT_REQUEST_TIMEOUT = 200;
18:49:50 ^
18:49:50 2 warnings generated.
18:49:50 --- run_unittests ---
```
```
18:49:50 CXX libkea_dhcpsrv_la-ncr_generator.lo
18:49:50 --- libkea_dhcpsrv_la-mysql_lease_mgr.lo ---
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_lease_mgr.cc:89:14: warning: unused variable 'HOSTNAME_MAX_LEN' [-Wunused-const-variable]
18:49:50 const size_t HOSTNAME_MAX_LEN = 255;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_lease_mgr.cc:95:14: warning: unused variable 'ADDRESS6_TEXT_MAX_LEN' [-Wunused-const-variable]
18:49:50 const size_t ADDRESS6_TEXT_MAX_LEN = 39;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_lease_mgr.cc:98:14: warning: unused variable 'USER_CONTEXT_MAX_LEN' [-Wunused-const-variable]
18:49:50 const size_t USER_CONTEXT_MAX_LEN = 8192;
18:49:50 ^
18:49:50 3 warnings generated.
18:49:50 --- libkea_dhcpsrv_la-mysql_host_data_source.lo ---
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1803:25: warning: unused variable 'OPTION_ID_COL' [-Wunused-const-variable]
18:49:50 static const size_t OPTION_ID_COL = 0;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1804:25: warning: unused variable 'CODE_COL' [-Wunused-const-variable]
18:49:50 static const size_t CODE_COL = 1;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1805:25: warning: unused variable 'VALUE_COL' [-Wunused-const-variable]
18:49:50 static const size_t VALUE_COL = 2;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1806:25: warning: unused variable 'FORMATTED_VALUE_COL' [-Wunused-const-variable]
18:49:50 static const size_t FORMATTED_VALUE_COL = 3;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1807:25: warning: unused variable 'SPACE_COL' [-Wunused-const-variable]
18:49:50 static const size_t SPACE_COL = 4;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1808:25: warning: unused variable 'PERSISTENT_COL' [-Wunused-const-variable]
18:49:50 static const size_t PERSISTENT_COL = 5;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1809:25: warning: unused variable 'CANCELLED_COL' [-Wunused-const-variable]
18:49:50 static const size_t CANCELLED_COL = 6;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1810:25: warning: unused variable 'USER_CONTEXT_COL' [-Wunused-const-variable]
18:49:50 static const size_t USER_CONTEXT_COL = 7;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1811:25: warning: unused variable 'DHCP_SUBNET_ID_COL' [-Wunused-const-variable]
18:49:50 static const size_t DHCP_SUBNET_ID_COL = 8;
18:49:50 ^
18:49:50 ../../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:1812:25: warning: unused variable 'HOST_ID_COL' [-Wunused-const-variable]
18:49:50 static const size_t HOST_ID_COL = 9;
18:49:50 ^
18:49:50 10 warnings generated.
```
on ubuntu-20.04-amd64 and ubuntu-22.04-amd64 running distcheck:
```
19:19:17 make[6]: Entering directory '/home/ubuntu/workspace/kea-dev/ut-distcheck/kea-2.5.5-git/_build/sub/src/lib/mysql'
19:19:17 CXX mysql_connection.lo
19:19:17 CXX mysql_binding.lo
19:19:17 ../../../../../src/lib/mysql/mysql_connection.cc: In member function ‘void isc::db::MySqlConnection::openDatabase()’:
19:19:17 ../../../../../src/lib/mysql/mysql_connection.cc:231:34: warning: ‘bool mysql_ssl_set(MYSQL*, const char*, const char*, const char*, const char*, const char*)’ is deprecated: Use mysql_options() instead. [-Wdeprecated-declarations]
19:19:17 231 | cipher_list);
19:19:17 | ^
19:19:17 In file included from ../../../../../src/lib/mysql/mysql_constants.h:10,
19:19:17 from ../../../../../src/lib/mysql/mysql_binding.h:18,
19:19:17 from ../../../../../src/lib/mysql/mysql_connection.h:15,
19:19:17 from ../../../../../src/lib/mysql/mysql_connection.cc:12:
19:19:17 /usr/include/mysql/mysql.h:464:1: note: declared here
19:19:17 464 | mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca,
19:19:17 | ^~~~~~~~~~~~~
19:19:17 ../../../../../src/lib/mysql/mysql_connection.cc:231:34: warning: ‘bool mysql_ssl_set(MYSQL*, const char*, const char*, const char*, const char*, const char*)’ is deprecated: Use mysql_options() instead. [-Wdeprecated-declarations]
19:19:17 231 | cipher_list);
19:19:17 | ^
19:19:17 In file included from ../../../../../src/lib/mysql/mysql_constants.h:10,
19:19:17 from ../../../../../src/lib/mysql/mysql_binding.h:18,
19:19:17 from ../../../../../src/lib/mysql/mysql_connection.h:15,
19:19:17 from ../../../../../src/lib/mysql/mysql_connection.cc:12:
19:19:17 /usr/include/mysql/mysql.h:464:1: note: declared here
19:19:17 464 | mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca,
19:19:17 | ^~~~~~~~~~~~~
```
```
19:19:17
19:19:17 [----------] 20 tests from MySqlConnectionTest
19:19:17 [ RUN ] MySqlConnectionTest.select
19:19:17 WARNING: MYSQL_OPT_RECONNECT is deprecated and will be removed in a future version.
19:19:17 [ OK ] MySqlConnectionTest.select (861 ms)
19:19:17 [ RUN ] MySqlConnectionTest.selectNullInteger
19:19:17 WARNING: MYSQL_OPT_RECONNECT is deprecated and will be removed in a future version.
```
running ut-extended on debian-11-aarch64 and debian-12-aarch64:
```
16:06:36 /bin/bash ../../../libtool --tag=CXX --mode=compile ccache c++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -DOS_LINUX -I../../.. -I../../.. -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g3 -ggdb -O0 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -MT simple_parser.lo -MD -MP -MF .deps/simple_parser.Tpo -c -o simple_parser.lo simple_parser.cc
16:06:36 libtool: compile: ccache c++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -DOS_LINUX -I../../.. -I../../.. -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g3 -ggdb -O0 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -MT server_tag.lo -MD -MP -MF .deps/server_tag.Tpo -c server_tag.cc -fPIC -DPIC -o .libs/server_tag.o
16:06:36 libtool: compile: ccache c++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -DOS_LINUX -I../../.. -I../../.. -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g3 -ggdb -O0 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -MT simple_parser.lo -MD -MP -MF .deps/simple_parser.Tpo -c simple_parser.cc -fPIC -DPIC -o .libs/simple_parser.o
16:06:37 data.cc: In member function ‘virtual void isc::data::StringElement::toJSON(std::ostream&) const’:
16:06:37 data.cc:905:21: warning: comparison is always true due to limited range of data type [-Wtype-limits]
16:06:37 905 | if (((c >= 0) && (c < 0x20)) || (c < 0) || (c >= 0x7f)) {
16:06:37 | ~~^~~~
16:06:37 data.cc:905:48: warning: comparison is always false due to limited range of data type [-Wtype-limits]
16:06:37 905 | if (((c >= 0) && (c < 0x20)) || (c < 0) || (c >= 0x7f)) {
16:06:37 |
```
```
16:08:33 /bin/bash ../../../libtool --tag=CXX --mode=compile ccache c++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -DOS_LINUX -I../../.. -I../../.. -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g3 -ggdb -O0 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -MT libkea_http_la-http_message_parser_base.lo -MD -MP -MF .deps/libkea_http_la-http_message_parser_base.Tpo -c -o libkea_http_la-http_message_parser_base.lo `test -f 'http_message_parser_base.cc' || echo './'`http_message_parser_base.cc
16:08:33 libtool: compile: ccache c++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -DOS_LINUX -I../../.. -I../../.. -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g3 -ggdb -O0 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -MT libkea_http_la-http_message_parser_base.lo -MD -MP -MF .deps/libkea_http_la-http_message_parser_base.Tpo -c http_message_parser_base.cc -fPIC -DPIC -o .libs/libkea_http_la-http_message_parser_base.o
16:08:33 http_message_parser_base.cc: In member function ‘bool isc::http::HttpMessageParserBase::isChar(char) const’:
16:08:33 http_message_parser_base.cc:266:15: warning: comparison is always true due to limited range of data type [-Wtype-limits]
16:08:33 266 | return (c >= 0);
16:08:33 | ~~^~~~
16:08:33 http_message_parser_base.cc: In member function ‘bool isc::http::HttpMessageParserBase::isCtl(char) const’:
16:08:33 http_message_parser_base.cc:271:17: warning: comparison is always true due to limited range of data type [-Wtype-limits]
16:08:33 271 | return (((c >= 0) && (c <= 31)) || (c == 127));
16:08:33 |
```
2.
On macOS 14.2.1 got a build problem during sanity checks:
```
mysql_legal_log.cc:33:1: error: implicit instantiation of undefined template 'boost::array<isc::db::TaggedStatement, 1>'
tagged_statements = { {
^
/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:56:11: note: template is declared here
class array;
^
1 error generated.
```
Fixed by adding an explicit include of boost/array.hpp
3.
compilation erro on macOS:
```
mysql_connection.cc:230:9: error: use of undeclared identifier 'mysql_ssl_set'
mysql_ssl_set(mysql_, key_file, cert_file, ca_file, ca_dir,
^
1 error generated.
make[5]: *** [mysql_connection.lo] Error 1
```
fix:
```
< mysql_ssl_set(mysql_, key_file, cert_file, ca_file, ca_dir,
< cipher_list);
---
> mysql_options(mysql_, MYSQL_OPT_SSL_KEY, key_file);
> mysql_options(mysql_, MYSQL_OPT_SSL_CERT, cert_file);
> mysql_options(mysql_, MYSQL_OPT_SSL_CA, ca_file);
> mysql_options(mysql_, MYSQL_OPT_SSL_CAPATH, ca_dir);
> mysql_options(mysql_, MYSQL_OPT_SSL_CIPHER, cipher_list); cipher_list);
```
4.
also minor:
```
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
./mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_impl.cc:9:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:535:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_impl.cc:208:11: note: in instantiation of function template specialization 'isc::db::MySqlConnection::insertQuery<int>' requested here
conn_.insertQuery(index, in_bindings);
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_impl.cc:9:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:460:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_impl.cc:247:15: note: in instantiation of function template specialization 'isc::db::MySqlConnection::selectQuery<int>' requested here
conn_.selectQuery(index, in_bindings, out_bindings,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_callouts.cc:16:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
./mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6.cc:10:
In file included from ./mysql_cb_dhcp6.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
./mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp4.cc:9:
In file included from ./mysql_cb_dhcp4.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
./mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6.cc:10:
In file included from ./mysql_cb_dhcp6.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp6.cc:251:19: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<isc::dhcp::MySqlConfigBackendDHCPv6Impl::StatementIndex>' requested here
if (conn_.updateDeleteQuery(MySqlConfigBackendDHCPv6Impl::UPDATE_GLOBAL_PARAMETER6,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6.cc:10:
In file included from ./mysql_cb_dhcp6.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:535:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp6.cc:257:19: note: in instantiation of function template specialization 'isc::db::MySqlConnection::insertQuery<isc::dhcp::MySqlConfigBackendDHCPv6Impl::StatementIndex>' requested here
conn_.insertQuery(MySqlConfigBackendDHCPv6Impl::INSERT_GLOBAL_PARAMETER6,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6.cc:10:
In file included from ./mysql_cb_dhcp6.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:460:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp6.cc:407:15: note: in instantiation of function template specialization 'isc::db::MySqlConnection::selectQuery<isc::dhcp::MySqlConfigBackendDHCPv6Impl::StatementIndex>' requested here
conn_.selectQuery(index, in_bindings, out_bindings,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp4.cc:9:
In file included from ./mysql_cb_dhcp4.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp4.cc:242:19: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<isc::dhcp::MySqlConfigBackendDHCPv4Impl::StatementIndex>' requested here
if (conn_.updateDeleteQuery(MySqlConfigBackendDHCPv4Impl::UPDATE_GLOBAL_PARAMETER4,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp4.cc:9:
In file included from ./mysql_cb_dhcp4.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:535:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp4.cc:248:19: note: in instantiation of function template specialization 'isc::db::MySqlConnection::insertQuery<isc::dhcp::MySqlConfigBackendDHCPv4Impl::StatementIndex>' requested here
conn_.insertQuery(MySqlConfigBackendDHCPv4Impl::INSERT_GLOBAL_PARAMETER4,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp4.cc:9:
In file included from ./mysql_cb_dhcp4.h:10:
In file included from ./mysql_cb_impl.h:25:
../../../../src/lib/mysql/mysql_connection.h:460:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
status = mysql_stmt_bind_param(getStatement(index),
^
mysql_cb_dhcp4.cc:371:15: note: in instantiation of function template specialization 'isc::db::MySqlConnection::selectQuery<isc::dhcp::MySqlConfigBackendDHCPv4Impl::StatementIndex>' requested here
conn_.selectQuery(index, in_bindings, out_bindings,
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
```
```
In file included from mysql_cb_impl_unittest.cc:8:
In file included from ../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:25:
../../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
1 warning generated.
In file included from mysql_cb_dhcp4_mgr_unittest.cc:10:
In file included from ../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.h:10:
In file included from ../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:25:
../../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6_mgr_unittest.cc:10:
In file included from ../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_dhcp6.h:10:
In file included from ../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:25:
../../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
1 warning generated.
1 warning generated.
In file included from mysql_cb_dhcp4_unittest.cc:15:
In file included from ../../../../../src/lib/dhcpsrv/testutils/mysql_generic_backend_unittest.h:11:
../../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
In file included from mysql_cb_dhcp6_unittest.cc:15:
In file included from ../../../../../src/lib/dhcpsrv/testutils/mysql_generic_backend_unittest.h:11:
../../../../../src/lib/mysql/mysql_connection.h:579:22: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(getStatement(index),
^
../../../../../src/hooks/dhcp/mysql_cb/mysql_cb_impl.h:294:23: note: in instantiation of function template specialization 'isc::db::MySqlConnection::updateDeleteQuery<int>' requested here
return (conn_.updateDeleteQuery(index, in_bindings));
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
1 warning generated.
```
```
mysql_legal_log.cc:382:18: warning: 'mysql_stmt_bind_param' is deprecated: Use mysql_stmt_bind_named_param() instead. [-Wdeprecated-declarations]
int status = mysql_stmt_bind_param(ctx->conn_.getStatement(INSERT_LOG),
^
/usr/local/Cellar/mysql/8.3.0/include/mysql/mysql.h:764:3: note: 'mysql_stmt_bind_param' has been explicitly marked deprecated here
[[deprecated("Use mysql_stmt_bind_named_param() instead.")]]
^
1 warning generated.
```
Reported by @razvan and @fdupont , thank you :)kea2.6.0https://gitlab.isc.org/isc-projects/kea/-/issues/3221Minor doc update: server limitations update after ping-check2024-03-20T11:29:29ZTomek MrugalskiMinor doc update: server limitations update after ping-checkThe section 8.12 (DHCPv4 server limitations) still claims this:
> _The DHCPv4 server does not verify that an assigned address is unused. According to RFC 2131, the allocating server should verify that an address is not used by sending a...The section 8.12 (DHCPv4 server limitations) still claims this:
> _The DHCPv4 server does not verify that an assigned address is unused. According to RFC 2131, the allocating server should verify that an address is not used by sending an ICMP echo request._
This is no longer true after ping-check was implemented.kea2.6.0https://gitlab.isc.org/isc-projects/kea/-/issues/3203DHCPINFORM is only logged on DEBUG level2024-03-27T13:50:18ZBernhard SchmidtDHCPINFORM is only logged on DEBUG level**Describe the bug**
I'm currently working on a project to migrate a Windows DHCP server environment to Kea. Right now both are active and I'm looking at logs and tcpdump captures while fiddling with the config.
I got confused because ...**Describe the bug**
I'm currently working on a project to migrate a Windows DHCP server environment to Kea. Right now both are active and I'm looking at logs and tcpdump captures while fiddling with the config.
I got confused because there were DHCPACK messages originated by the Kea server while there was not a single log entry visible. Increasing the logging verbosity to DEBUG shows a large number of messages, all with severity DEBUG.
Kea should not interact with clients over the network without logging.
**To Reproduce**
Steps to reproduce the behavior:
1. Run Kea dhcpv4 with a logging config like https://gitlab.isc.org/isc-projects/kea/-/blob/master/doc/examples/kea4/single-subnet.json?ref_type=heads
2. have a client send DHCPINFORM while running tcpdump
3. observe a DHCPACK being generated in tcpdump with Kea not logging a single line
**Expected behavior**
At least one line should be logged on INFO level when Kea is receiving and answering a DHCPINFORM request.
**Environment:**
- Kea version: 2.4.1
- OS: Debian Bookworm
**Additional Information**
```
2024-01-02 20:14:36.523 DEBUG [kea-dhcp4.packets/1.140376903606784] DHCP4_BUFFER_RECEIVED received buffer from 10.1.0.142:68 to 255.255.255.255:67 over interface ens19
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_NO_RAI_OPTIONS No RAI options found to use for subnet selection.
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_NO_RELAY_ADDRESS Relay address (giaddr) in client packet is empty.
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_BY_INTERFACE_NO_MATCH No subnet matches interface: ens19
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_CFGMGR_SUBNET4_ADDR selected subnet 10.1.0.0/16 for packet received by matching address 10.1.4.1
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.packets/1.140376869664512] DHCP4_SUBNET_SELECTED [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: the subnet with ID 10001000 was selected for client assignments
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.packets/1.140376869664512] DHCP4_PACKET_RECEIVED [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: DHCPINFORM (type 8) received from 10.1.0.142 to 255.255.255.255 on interface ens19
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_NO_RAI_OPTIONS No RAI options found to use for subnet selection.
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_NO_RELAY_ADDRESS Relay address (giaddr) in client packet is empty.
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_SUBNET4_SELECT_BY_INTERFACE_NO_MATCH No subnet matches interface: ens19
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcpsrv/1.140376869664512] DHCPSRV_CFGMGR_SUBNET4_ADDR selected subnet 10.1.0.0/16 for packet received by matching address 10.1.4.1
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.packets/1.140376869664512] DHCP4_SUBNET_SELECTED [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: the subnet with ID 10001000 was selected for client assignments
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER get one host with IPv4 reservation for subnet id 0, identified by hwaddr=EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using identifier: hwaddr=EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT using identifier hwaddr=EEBD63C37393, found 1 host(s)
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_NULL host not found using subnet id 0 and identifier hwaddr=EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER get one host with IPv4 reservation for subnet id 0, identified by client-id=01EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using identifier: client-id=01EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT using identifier client-id=01EEBD63C37393, found 0 host(s)
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_NULL host not found using subnet id 0 and identifier client-id=01EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER get one host with IPv4 reservation for subnet id 10001000, identified by hwaddr=EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using identifier: hwaddr=EEBD63C37393
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT using identifier hwaddr=EEBD63C37393, found 1 host(s)
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.hosts/1.140376869664512] HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_HOST using subnet id 10001000 and identifier hwaddr=EEBD63C37393, found host: hwaddr=EEBD63C37393 ipv4_subnet_id=10001000 hostname=(empty) ipv4_reservation=10.1.0.142 siaddr=(no) sname=(empty) file=(empty) key=(empty) ipv6_reservations=(none)
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcp4/1.140376869664512] DHCP4_CLASS_ASSIGNED [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: client packet has been assigned to the following class(es): KNOWN
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.dhcp4/1.140376869664512] DHCP4_CLASS_ASSIGNED [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: client packet has been assigned to the following class(es): ALL, VENDOR_CLASS_MSFT 5.0, KNOWN
dhcp4_1 | 2024-01-02 20:14:36.524 DEBUG [kea-dhcp4.packets/1.140376869664512] DHCP4_PACKET_SEND [hwtype=1 ee:bd:63:c3:73:93], cid=[01:ee:bd:63:c3:73:93], tid=0xfe6e0c6f: trying to send packet DHCPACK (type 5) from 10.1.4.1:67 to 10.1.0.142:68 on interface ens19
```kea2.6.0https://gitlab.isc.org/isc-projects/kea/-/issues/3160Too many nullable fields in DB schema?2023-11-23T14:48:53ZDavid KraeutmannToo many nullable fields in DB schema?I'm writing an admin tool for the Kea DB and noticed that a lot of fields in lease4/lease6 are nullable even when they shouldn't be. This adds a lot of handling overhead.
For example, in lease4, most of the columns are nullable, but onl...I'm writing an admin tool for the Kea DB and noticed that a lot of fields in lease4/lease6 are nullable even when they shouldn't be. This adds a lot of handling overhead.
For example, in lease4, most of the columns are nullable, but only relay_id and remote_id are actually possibly set to NULL in the Kea code.
What is the design decision behind that?backlog