Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2020-10-22T11:31:22Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/151Better error message in JSON parser on \'2020-10-22T11:31:22ZTomek MrugalskiBetter error message in JSON parser on \'Here's an example @sgoldlust used when working on documentation:
```
"resp-syntax": "{
\"result\": 0,
\"text\": \"Info about IPv4 shared network \'floor13\' returned\"
}"
```
Our parser reported error Bad Escape, whithout reall...Here's an example @sgoldlust used when working on documentation:
```
"resp-syntax": "{
\"result\": 0,
\"text\": \"Info about IPv4 shared network \'floor13\' returned\"
}"
```
Our parser reported error Bad Escape, whithout really saying what is wrong.
I've debugged the issue and the problem came up to be it doesn't allow escaping apostrophe.
This is overly strict and should be relaxed. If we somehow decide that it's not allowed (why?),
then at the very least we need to improve the error to show which character is not allowed to be
escaped.
After discussion with @fdupont it seems the only thing to do is to improve the error logs.kea1.9.1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1091comma escaping doesn't work in string options2020-09-17T13:59:48ZGhost Usercomma escaping doesn't work in string options---
name: Bug report
about: comma escaping doesn't work in string options
---
**Describe the bug**
As mentioned in documentation we try to escape comma (,) symbol in proprietary option fro Avaya IP Phones.But that doesn't work.
**To ...---
name: Bug report
about: comma escaping doesn't work in string options
---
**Describe the bug**
As mentioned in documentation we try to escape comma (,) symbol in proprietary option fro Avaya IP Phones.But that doesn't work.
**To Reproduce**
started kea-daemon4
connected avaya phone to network
address is assigned to phone, options assigned
phone doesn't connect to phone server.
**Expected behavior**
option 242 must looks like: "MCIPADD=192.168.131.133, MCPORT=1719"
phone is connected to phone server.
it works fine when we use Cisco commutator as DHCP with options set like this:
```
option 242 ascii MCIPADD=192.168.131.133,MCPORT=1719
```
**Environment:**
```
[root@dns-core menv]# rpm -qa|grep kea
isc-kea-hooks-1.7.3-isc0009420191217090201.el7.x86_64
isc-kea-1.7.3-isc0009420191217090201.el7.x86_64
isc-kea-libs-1.7.3-isc0009420191217090201.el7.x86_64
[root@dns-core menv]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
- Kea version: 1.7.3 pre-RPMs from cloudsmith.io
- OS: CentOS Linux release 7.7.1908 (Core)
```
**Additional Information**
configuration:
```
[
{
"arguments": {
"Dhcp4": {
"authoritative": false,
"boot-file-name": "",
"calculate-tee-times": false,
"client-classes": [
{
"boot-file-name": "/undionly.kpxe.1.0.1",
"name": "Legacy_Intel_x86PC",
"next-server": "192.168.134.52",
"option-data": [
],
"option-def": [
],
"server-hostname": "",
"test": "option[93].hex == 0x0000"
},
{
"boot-file-name": "/pxelinux.0.4.05",
"name": "XClient_iPXE",
"next-server": "192.168.134.52",
"option-data": [
],
"option-def": [
],
"server-hostname": "",
"test": "substring(option[77].hex,1,4) == 'PXE'"
},
{
"boot-file-name": "",
"name": "Cisco_IP_Phone",
"next-server": "0.0.0.0",
"option-data": [
],
"option-def": [
],
"server-hostname": "",
"test": "substring(option[60].hex,0,5) == 'Cisco'"
}
],
"config-control": {
"config-databases": [
{
"host": "localhost",
"name": "kea",
"password": "********",
"port": 3306,
"type": "mysql",
"user": "kea"
}
],
"config-fetch-wait-time": 20
},
"control-socket": {
"socket-name": "/var/run/kea/socket-v4",
"socket-type": "unix"
},
"ddns-generated-prefix": "myhost",
"ddns-override-client-update": false,
"ddns-override-no-update": false,
"ddns-qualifying-suffix": "",
"ddns-replace-client-name": "never",
"ddns-send-updates": true,
"decline-probation-period": 86400,
"dhcp-ddns": {
"enable-updates": false,
"max-queue-size": 1024,
"ncr-format": "JSON",
"ncr-protocol": "UDP",
"sender-ip": "0.0.0.0",
"sender-port": 0,
"server-ip": "127.0.0.1",
"server-port": 53001
},
"dhcp-queue-control": {
"capacity": 500,
"enable-queue": false,
"queue-type": "kea-ring4"
},
"dhcp4o6-port": 0,
"echo-client-id": true,
"expired-leases-processing": {
"flush-reclaimed-timer-wait-time": 25,
"hold-reclaimed-time": 3600,
"max-reclaim-leases": 100,
"max-reclaim-time": 250,
"reclaim-timer-wait-time": 10,
"unwarned-reclaim-cycles": 5
},
"hooks-libraries": [
{
"library": "/usr/lib64/kea/hooks/libdhcp_mysql_cb.so"
},
{
"library": "/usr/lib64/kea/hooks/libdhcp_lease_cmds.so"
}
],
"host-reservation-identifiers": [
"hw-address",
"duid",
"circuit-id",
"client-id"
],
"hosts-databases": [
{
"host": "localhost",
"name": "kea",
"password": "********",
"port": 3306,
"reconnect-wait-time": 500,
"type": "mysql",
"user": "kea"
}
],
"interfaces-config": {
"dhcp-socket-type": "udp",
"interfaces": [
"eth0"
],
"outbound-interface": "use-routing",
"re-detect": true
},
"lease-database": {
"host": "localhost",
"lfc-interval": 1800,
"name": "kea_leases",
"password": "********",
"port": 3306,
"reconnect-wait-time": 500,
"type": "mysql",
"user": "kea"
},
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"flush": true,
"output": "/var/log/kea/server.log",
"pattern": "%d{%j %H:%M:%S.%q} %c %m\n"
}
],
"severity": "INFO"
},
{
"debuglevel": 99,
"name": "kea-dhcp4.options",
"output_options": [
{
"flush": true,
"output": "/var/log/kea/options.log",
"pattern": "%d{%j %H:%M:%S.%q} %c %m\n"
}
],
"severity": "DEBUG"
},
{
"debuglevel": 99,
"name": "kea-dhcp4.packets",
"output_options": [
{
"flush": true,
"output": "/var/log/kea/packets.log",
"pattern": "%d{%j %H:%M:%S.%q} %c %m\n"
}
],
"severity": "DEBUG"
},
{
"name": "kea-dhcp4.leases",
"output_options": [
{
"flush": true,
"output": "/var/log/kea/leases.log",
"pattern": "%d{%j %H:%M:%S.%q} %c %m\n"
}
],
"severity": "INFO"
}
],
"match-client-id": false,
"next-server": "0.0.0.0",
"option-data": [
{
"always-send": false,
"code": 252,
"csv-format": true,
"data": "http://wpad/wpad.pac",
"space": "dhcp4"
},
{
"always-send": false,
"code": 4,
"csv-format": true,
"data": "192.168.134.52, 192.168.134.13",
"name": "time-servers",
"space": "dhcp4"
},
{
"always-send": false,
"code": 6,
"csv-format": true,
"data": "192.168.134.53, 192.168.160.53",
"name": "domain-name-servers",
"space": "dhcp4"
},
{
"always-send": false,
"code": 15,
"csv-format": true,
"data": "kmz.ts",
"name": "domain-name",
"space": "dhcp4"
}
],
"option-def": [
{
"array": false,
"code": 252,
"encapsulate": "",
"name": "autoproxy",
"record-types": "",
"space": "dhcp4",
"type": "string"
},
{
"array": true,
"code": 150,
"encapsulate": "",
"name": "tftp-server-voice",
"record-types": "",
"space": "dhcp4",
"type": "ipv4-address"
},
{
"array": false,
"code": 242,
"encapsulate": "",
"name": "tftp-server-voice-avaya",
"record-types": "",
"space": "dhcp4",
"type": "string"
}
],
"rebind-timer": 2000,
"renew-timer": 1000,
"reservation-mode": "all",
"sanity-checks": {
"lease-checks": "warn"
},
"server-hostname": "",
"server-tag": "dns-core",
"shared-networks": [
{
"name": "test-one_vlan",
"option-data": [
],
"relay": {
"ip-addresses": [
]
},
"subnet4": [
{
"4o6-interface": "",
"4o6-interface-id": "",
"4o6-subnet": "",
"id": 22028,
"option-data": [
{
"always-send": false,
"code": 150,
"csv-format": true,
"data": "192.168.160.48, 192.168.131.3",
"space": "dhcp4"
},
{
"always-send": false,
"code": 242,
"csv-format": true,
"data": "MCIPADD=192.168.131.133\\, MCPORT=1719",
"space": "dhcp4"
},
{
"always-send": false,
"code": 3,
"csv-format": true,
"data": "192.168.111.65",
"name": "routers",
"space": "dhcp4"
}
],
"pools": [
{
"client-class": "Cisco_IP_Phone",
"option-data": [
],
"pool": "192.168.111.66-192.168.111.72"
},
{
"option-data": [
],
"pool": "192.168.111.73-192.168.111.78"
}
],
"relay": {
"ip-addresses": [
]
},
"reservations": [
],
"subnet": "192.168.111.64/28"
}
]
},
{
"name": "test-two_vlan",
"option-data": [
],
"relay": {
"ip-addresses": [
]
},
"subnet4": [
{
"4o6-interface": "",
"4o6-interface-id": "",
"4o6-subnet": "",
"id": 22170,
"option-data": [
{
"always-send": false,
"code": 3,
"csv-format": true,
"data": "192.168.161.121",
"name": "routers",
"space": "dhcp4"
}
],
"pools": [
{
"client-class": "KNOWN",
"option-data": [
],
"pool": "192.168.161.122-192.168.161.126"
}
],
"relay": {
"ip-addresses": [
]
},
"reservations": [
],
"subnet": "192.168.161.120/29"
}
]
}
],
"subnet4": [
],
"t1-percent": 0.5,
"t2-percent": 0.875,
"valid-lifetime": 4000
}
},
"result": 0
}
]
```
Server startuop log
```
023 15:44:27.885 kea-dhcp4.hosts HOSTS_BACKENDS_REGISTERED the following host backend types are available: mysql postgresql
023 15:44:27.888 kea-dhcp4.dhcpsrv DHCPSRV_CFGMGR_SOCKET_TYPE_SELECT using socket type udp
023 15:44:27.888 kea-dhcp4.dhcpsrv DHCPSRV_CFGMGR_ADD_IFACE listening on interface eth0
023 15:44:27.889 kea-dhcp4.commands COMMAND_ACCEPTOR_START Starting to accept connections via unix domain socket bound to /var/run/kea/socket-v4
023 15:44:27.890 kea-dhcp4.mysql-cb-hooks MYSQL_CB_INIT_OK loading MYSQL CB hooks library successful
023 15:44:27.890 kea-dhcp4.hooks HOOKS_LIBRARY_LOADED hooks library /usr/lib64/kea/hooks/libdhcp_mysql_cb.so successfully loaded
023 15:44:27.891 kea-dhcp4.lease-cmds-hooks LEASE_CMDS_INIT_OK loading Lease Commands hooks library successful
023 15:44:27.891 kea-dhcp4.hooks HOOKS_LIBRARY_LOADED hooks library /usr/lib64/kea/hooks/libdhcp_lease_cmds.so successfully loaded
023 15:44:27.891 kea-dhcp4.dctl DCTL_OPEN_CONFIG_DB Opening configuration database: host=localhost name=kea password=***** port=3306 type=mysql user=kea
023 15:44:27.910 kea-dhcp4.dctl DCTL_CONFIG_FETCH Fetching configuration data from config backends.
023 15:44:27.915 kea-dhcp4.dhcpsrv DHCPSRV_CFGMGR_CONFIG4_MERGED Configuration backend data has been merged.
023 15:44:27.915 kea-dhcp4.dhcp4 DHCP4_CONFIG_COMPLETE DHCPv4 server has completed configuration: added IPv4 subnets: 2; DDNS: disabled
023 15:44:27.915 kea-dhcp4.dhcpsrv DHCPSRV_MYSQL_DB opening MySQL lease database: host=localhost lfc-interval=1800 name=kea_leases password=***** port=3306 reconnect-wait-time=500 type=mysql universe=4 user=kea
023 15:44:27.921 kea-dhcp4.hosts DHCPSRV_MYSQL_HOST_DB opening MySQL hosts database: host=localhost name=kea password=***** port=3306 reconnect-wait-time=500 type=mysql universe=4 user=kea
023 15:44:27.926 kea-dhcp4.dhcp4 DHCP4_STARTED Kea DHCPv4 server version 1.7.3 started
```
packets.log on debug level 99
```
023 15:37:04.920 kea-dhcp4.packets DHCP4_BUFFER_RECEIVED received buffer from 192.168.111.65:67 to 192.168.160.8:67 over interface eth0
023 15:37:04.921 kea-dhcp4.packets DHCP4_PACKET_RECEIVED [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: DHCPDISCOVER (type 1) received from 192.168.111.65 to 192.168.160.8 on interface eth0
023 15:37:04.921 kea-dhcp4.packets DHCP4_QUERY_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079, packet details: local_address=192.168.160.8:67, remote_address=192.168.111.65:67, msg_type=DHCPDISCOVER (1), transid=0xf1d5d079,
options:
type=012, len=009: "AVX5B761E" (string)
type=053, len=001: 1 (uint8)
type=055, len=007: 1(uint8) 28(uint8) 3(uint8) 6(uint8) 15(uint8) 42(uint8) 242(uint8)
type=057, len=002: 576 (uint16)
023 15:37:04.921 kea-dhcp4.packets DHCP4_SUBNET_SELECTED [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: the subnet with ID 22028 was selected for client assignments
023 15:37:04.921 kea-dhcp4.packets DHCP4_SUBNET_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: the selected subnet details: 192.168.111.64/28
023 15:37:04.922 kea-dhcp4.packets DHCP4_PACKET_SEND [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: trying to send packet DHCPOFFER (type 2) from *:67 to 192.168.111.65:67 on interface eth0
023 15:37:04.922 kea-dhcp4.packets DHCP4_RESPONSE_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: responding with packet DHCPOFFER (type 2), packet details: local_address=0.0.0.0:67, remote_address=192.168.111.65:67, msg_type=DHCPOFFER (2), transid=0xf1d5d079,
options:
type=001, len=004: 4294967280 (uint32)
type=003, len=004: 192.168.111.65
type=006, len=008: 192.168.134.53 192.168.160.53
type=012, len=009: "avx5b761e" (string)
type=015, len=006: "kmz.ts" (string)
type=051, len=004: 4000 (uint32)
type=053, len=001: 2 (uint8)
type=054, len=004: 192.168.160.8
type=058, len=004: 1000 (uint32)
type=059, len=004: 2000 (uint32)
type=242, len=024: "MCIPADD=192.168.131.133\" (string)
023 15:37:09.919 kea-dhcp4.packets DHCP4_BUFFER_RECEIVED received buffer from 192.168.111.65:67 to 192.168.160.8:67 over interface eth0
023 15:37:09.919 kea-dhcp4.packets DHCP4_PACKET_RECEIVED [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: DHCPDISCOVER (type 1) received from 192.168.111.65 to 192.168.160.8 on interface eth0
023 15:37:09.920 kea-dhcp4.packets DHCP4_QUERY_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079, packet details: local_address=192.168.160.8:67, remote_address=192.168.111.65:67, msg_type=DHCPDISCOVER (1), transid=0xf1d5d079,
options:
type=012, len=009: "AVX5B761E" (string)
type=053, len=001: 1 (uint8)
type=055, len=007: 1(uint8) 28(uint8) 3(uint8) 6(uint8) 15(uint8) 42(uint8) 242(uint8)
type=057, len=002: 576 (uint16)
023 15:37:09.920 kea-dhcp4.packets DHCP4_SUBNET_SELECTED [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: the subnet with ID 22028 was selected for client assignments
023 15:37:09.920 kea-dhcp4.packets DHCP4_SUBNET_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: the selected subnet details: 192.168.111.64/28
023 15:37:09.920 kea-dhcp4.packets DHCP4_PACKET_SEND [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: trying to send packet DHCPOFFER (type 2) from *:67 to 192.168.111.65:67 on interface eth0
023 15:37:09.920 kea-dhcp4.packets DHCP4_RESPONSE_DATA [hwtype=1 3c:b1:5b:5b:76:1e], cid=[no info], tid=0xf1d5d079: responding with packet DHCPOFFER (type 2), packet details: local_address=0.0.0.0:67, remote_address=192.168.111.65:67, msg_type=DHCPOFFER (2), transid=0xf1d5d079,
options:
type=001, len=004: 4294967280 (uint32)
type=003, len=004: 192.168.111.65
type=006, len=008: 192.168.134.53 192.168.160.53
type=012, len=009: "avx5b761e" (string)
type=015, len=006: "kmz.ts" (string)
type=051, len=004: 4000 (uint32)
type=053, len=001: 2 (uint8)
type=054, len=004: 192.168.160.8
type=058, len=004: 1000 (uint32)
type=059, len=004: 2000 (uint32)
type=242, len=024: "MCIPADD=192.168.131.133\" (string)
```
**Contacting you**
email: hedgehog57@gmail.comhttps://gitlab.isc.org/isc-projects/kea/-/issues/1179inconsistent syntax context for database parameters2020-04-24T12:54:43ZFrancis Dupontinconsistent syntax context for database parametersAs all database parameters are in the same parser rule they are valid in all database contexts (lease, host and config) and of course (even it seems silly) for all database types (memfile, mysql, postgresql and cassandra).
It seems the ...As all database parameters are in the same parser rule they are valid in all database contexts (lease, host and config) and of course (even it seems silly) for all database types (memfile, mysql, postgresql and cassandra).
It seems the dhcp4_lexer.ll does not follow this rule so must be fixed.
Note this only change the parser error message: instead of accepting the parameter and eventually detect the misuse later the parameter is simply not recognized...kea1.7.7Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1197qualifying_suffix is deprecated and dhcp6_parser.yy must be updated2020-09-14T14:59:08ZRazvan Becheriuqualifying_suffix is deprecated and dhcp6_parser.yy must be updatedkea1.9.0Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1327Simplify global objects in server and agent syntax2020-09-19T10:10:14ZFrancis DupontSimplify global objects in server and agent syntaxWe still have a map of global entries when only one is possible. Not only it is useless but it is dangerous because a configuration with twice the entry will be accepted and only the last one will be taken.
Note that parser generated fi...We still have a map of global entries when only one is possible. Not only it is useless but it is dangerous because a configuration with twice the entry will be accepted and only the last one will be taken.
Note that parser generated files are already very large so anything making them smaller is good.kea1.9.0Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1423Generate tests for syntax entry uniqueness2020-10-20T12:39:47ZFrancis DupontGenerate tests for syntax entry uniquenessThe following discussion from #1102 !928 should be addressed:
- [ ] @marcin started a [discussion](https://gitlab.isc.org/isc-projects/kea/-/merge_requests/928#note_163552): (+3 comments)
> It would be good to extend these tests t...The following discussion from #1102 !928 should be addressed:
- [ ] @marcin started a [discussion](https://gitlab.isc.org/isc-projects/kea/-/merge_requests/928#note_163552): (+3 comments)
> It would be good to extend these tests to have a list of all supported parameters and iterate over them and see if an error is raised when they are duplicated. This test only covers selected ones.kea1.9.1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1462Simplify diffing & merging of message & parser generated files through .gitat...2020-12-11T17:26:16ZAndrei Pavelandrei@isc.orgSimplify diffing & merging of message & parser generated files through .gitattributesThere was some interest in this on mattermost so it's worth creating an issue.
Generated messages & generated parser files are meaningless to inspect. Their source files are easier to read. So there are two things we can do with git att...There was some interest in this on mattermost so it's worth creating an issue.
Generated messages & generated parser files are meaningless to inspect. Their source files are easier to read. So there are two things we can do with git attributes.:
* Not clutter entire screens with differences of generated files when diff-ing branches or commits or so on. This can be done via the `diff=nodiff` attribute.
* Temporarily trick git into solving these spurious conflicts on generated files since a regeneration has to happen anyway. This can be done via `merge=ours` or `merge=theirs` attributes. Almost certainly both are wrong, but there's no magical `merge=$(make messages && make parsers)` so they would have to do. Advantage of `merge=ours`: zero diff, but you will probably have other conflicts and that means other modified files so it let's you focus on them. Advantage of `merge=theirs`: some diff which will tell you nothing more than what files need regenerating.
Git attributes are assigned per file or directory. Since we have generated message & parser files in open directories with other source code files, our attributes would work directly associated with the generated files.kea1.9.3Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/1467Jumbled up errors when generating parsers with multiple make jobs2020-10-30T14:57:40ZAndrei Pavelandrei@isc.orgJumbled up errors when generating parsers with multiple make jobsErrors don't make much sense if you would attempt to solve them individually:
```
dhcp4_parser.h:2642: error: unterminated #else
2642 | #if 201103L <= YY_CPLUSPLUS
|
In file included from ../../../src/bin/dhcp4/parser_context.h:1...Errors don't make much sense if you would attempt to solve them individually:
```
dhcp4_parser.h:2642: error: unterminated #else
2642 | #if 201103L <= YY_CPLUSPLUS
|
In file included from ../../../src/bin/dhcp4/parser_context.h:12,
from parser_context.cc:9:
../../../src/bin/dhcp4/dhcp4_parser.h:45: error: unterminated #ifndef
45 | #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
|
In file included from parser_context.cc:9:
../../../src/bin/dhcp4/parser_context.h:22:1: error: expected unqualified-id before ‘namespace’
22 | namespace isc {
```
and it goes on further.
What happens is that while generating the parsers, the Kea source files are also compiled. Kea source files depend on parser generated files. Bison doesn't write the entire file at once, it gradually fills it with content. So the parser generated files are fed into the compiler before they are complete. Even if the write to file was atomic, it would still mean that the parser files are potentially too old which would still be incorrect and maybe even pass compilation and result in underterministic behavior.
This is a lack of ordering issue between the parser generated files and the Kea source files.kea1.9.2Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/1735Add MT parameters to the HA hook lib2021-04-22T19:54:08ZTomek MrugalskiAdd MT parameters to the HA hook libThis is the fifth ticket in the HA+MT effort. It covers the modifications of the HA hook parser to be able to support the new multi-threading related parameters, as described in the [HA+MT design](https://gitlab.isc.org/isc-projects/kea/...This is the fifth ticket in the HA+MT effort. It covers the modifications of the HA hook parser to be able to support the new multi-threading related parameters, as described in the [HA+MT design](https://gitlab.isc.org/isc-projects/kea/-/wikis/designs/HA-MT-Design-for-Multi-threaded-Http-HA-traffic).
This will introduce the configuration parameters to HA. Technically, once #1732, #1733 and #1734 is done, this would be ready to use, but since there won't be the server component for it to handle multiple connections, it will have to wait for #1736.kea1.9.7Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/1824Add the plus operator (+) to make eval expressions simpler2021-04-30T17:34:09ZAndrei Pavelandrei@isc.orgAdd the plus operator (+) to make eval expressions simplerDiscussion started in [this thread](https://gitlab.isc.org/isc-private/kea-premium/-/merge_requests/161#note_207881). The larger consensus was on replacing `concat(a, b)` with `a + b` (or `+(a, b)`?). This would reduce the number of para...Discussion started in [this thread](https://gitlab.isc.org/isc-private/kea-premium/-/merge_requests/161#note_207881). The larger consensus was on replacing `concat(a, b)` with `a + b` (or `+(a, b)`?). This would reduce the number of paranthese nesting levels (at least in the case of the infix notation), thus reducing eye strain :eyes: and eyeglass numbers :eyeglasses:.
NOTE: The idea is to add an alias, so both `concat(a, b)` and `a + b` would work. We need to keep `concat` for backward compatibility and we want `+` for ease of use.kea1.9.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/2084Make Parser slightly more noob-friendly2021-12-17T15:35:26ZVicky Riskvicky@isc.orgMake Parser slightly more noob-friendlyA comment Carsten made in the Kea training class, is that when people cut and paste config snippets, they frequently forget that the last item in a list of options cannot be followed with a comma. This results in a hard failure by the pa...A comment Carsten made in the Kea training class, is that when people cut and paste config snippets, they frequently forget that the last item in a list of options cannot be followed with a comma. This results in a hard failure by the parser.
The suggestion is, could the parser instead emit a warning along the lines of "we see you have a trailing comma <here>. Did you forget something?" and basically ignore that last comma.kea2.1.2Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/2242Removing null from Kea JSON syntax2022-02-03T14:39:44ZFrancis DupontRemoving null from Kea JSON syntaxThe JSON standard allows a null entry but:
- it is not used at all in Kea and as now we are in version 2 we can expect it shall be never used
- there is a possible confusion between a null Element shared pointer and an Element shared p...The JSON standard allows a null entry but:
- it is not used at all in Kea and as now we are in version 2 we can expect it shall be never used
- there is a possible confusion between a null Element shared pointer and an Element shared pointer pointing to the null Element
So I propose to remove it from syntax, element type and all tools using JSON and/or Element objects and shared pointers.https://gitlab.isc.org/isc-projects/kea/-/issues/2401use a lookup-friendly structure when parsing relay addresses for better perfo...2023-07-17T13:58:25ZAndrei Pavelandrei@isc.orguse a lookup-friendly structure when parsing relay addresses for better performanceFor storing relay IP addresses that look like this:
```
{
"Dhcp4": {
"shared-networks": [
{
// List of IPv4 relay addresses for which this shared
// network is selected.
...For storing relay IP addresses that look like this:
```
{
"Dhcp4": {
"shared-networks": [
{
// List of IPv4 relay addresses for which this shared
// network is selected.
"relay": {
"ip-addresses": [
"192.168.56.1",
"192.168.56.2"
]
}
}
]
}
}
```
, a `typedef std::vector<isc::asiolink::IOAddress> IOAddressList;` is used.
It could be a `std::unordered_set<isc::asiolink::IOAddress>` for better performance. We treat it like a set in every regard. We look up addresses in it. If it contains a duplicate, it throws.
Here's a call graph that shows what percentage `addAddress` and `containsAddress` take out of parsing some shared networks with 114 subnets and 32 relay addresses.
![relay-parser-call-graph](/uploads/ca1466386ffc0a0209096e39effc5a9c/relay-parser-call-graph.png)kea2.3.0Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/3003Add output-options as alias of output_options2023-09-18T08:08:08ZFrancis DupontAdd output-options as alias of output_options`output_options` is the only syntax entry using `_` vs `-`: as explained in https://gitlab.isc.org/isc-projects/kea/-/issues/2904#note_379090 we can easily make `output-options` an alias of `output_options` in flex (.ll) files.`output_options` is the only syntax entry using `_` vs `-`: as explained in https://gitlab.isc.org/isc-projects/kea/-/issues/2904#note_379090 we can easily make `output-options` an alias of `output_options` in flex (.ll) files.kea2.5.1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/3004Replace output_options by output-options2023-09-18T08:15:59ZFrancis DupontReplace output_options by output-optionsThe keyword `output_options` is the only keyword in server and agent syntaxes with the underscore `_` character. The idea is after making `output-options` an alias (#3003) to swap them i.e. to make the dash `-` variant the main one.The keyword `output_options` is the only keyword in server and agent syntaxes with the underscore `_` character. The idea is after making `output-options` an alias (#3003) to swap them i.e. to make the dash `-` variant the main one.kea2.5.2Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3077ping-check-core-task-4 apply changes to parser and lexer files2023-09-21T11:38:18ZPiotrek Zadrogaping-check-core-task-4 apply changes to parser and lexer filesNew config keys must be added to parser and lexer files (\*.yy, \*.ll) as per ping-check design https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/ping-checkNew config keys must be added to parser and lexer files (\*.yy, \*.ll) as per ping-check design https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/ping-checkPiotrek ZadrogaPiotrek Zadroga