1 |
commit: 105bd8959f968d89b5f5d6216756f4123602f608 |
2 |
Author: Dennis Lamm <expeditioneer <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Aug 26 17:21:27 2021 +0000 |
4 |
Commit: Dennis Lamm <expeditioneer <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Sep 8 04:48:31 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=105bd895 |
7 |
|
8 |
net-misc/kea: various improvements |
9 |
|
10 |
fixed-gtest detection |
11 |
added Systemd services |
12 |
|
13 |
Closes: https://bugs.gentoo.org/693332 |
14 |
Closes: https://bugs.gentoo.org/626280 |
15 |
Bug: https://bugs.gentoo.org/751883 |
16 |
|
17 |
Signed-off-by: Dennis Lamm <expeditioneer <AT> gentoo.org> |
18 |
Package-Manager: Portage-3.0.20, Repoman-3.0.3 |
19 |
Signed-off-by: Dennis Lamm <expeditioneer <AT> gentoo.org> |
20 |
|
21 |
net-misc/kea/files/kea-1.8.2-gtest.patch | 149 ++++++++++ |
22 |
net-misc/kea/files/kea-1.9.10-gtest.patch | 143 ++++++++++ |
23 |
net-misc/kea/files/kea-ctrl-agent.conf | 99 +++++++ |
24 |
net-misc/kea/files/kea-ctrl-agent.service | 19 ++ |
25 |
net-misc/kea/files/kea-ddns-server.conf | 76 +++++ |
26 |
net-misc/kea/files/kea-ddns-server.service | 18 ++ |
27 |
net-misc/kea/files/kea-dhcp4-server.service | 18 ++ |
28 |
net-misc/kea/files/kea-dhcp4.conf | 401 ++++++++++++++++++++++++++ |
29 |
net-misc/kea/files/kea-dhcp6-server.service | 18 ++ |
30 |
net-misc/kea/files/kea-dhcp6.conf | 420 ++++++++++++++++++++++++++++ |
31 |
net-misc/kea/files/kea.tmpfiles.conf | 2 + |
32 |
net-misc/kea/kea-1.8.2-r1.ebuild | 112 ++++++++ |
33 |
net-misc/kea/kea-1.9.10-r1.ebuild | 111 ++++++++ |
34 |
net-misc/kea/kea-9999.ebuild | 53 +++- |
35 |
net-misc/kea/metadata.xml | 10 + |
36 |
15 files changed, 1638 insertions(+), 11 deletions(-) |
37 |
|
38 |
diff --git a/net-misc/kea/files/kea-1.8.2-gtest.patch b/net-misc/kea/files/kea-1.8.2-gtest.patch |
39 |
new file mode 100644 |
40 |
index 00000000000..5fa4488b926 |
41 |
--- /dev/null |
42 |
+++ b/net-misc/kea/files/kea-1.8.2-gtest.patch |
43 |
@@ -0,0 +1,149 @@ |
44 |
+--- a/m4macros/ax_gtest.m4 |
45 |
++++ b/m4macros/ax_gtest.m4 |
46 |
+@@ -1,24 +1,14 @@ |
47 |
+ AC_DEFUN([AX_ISC_GTEST], [ |
48 |
+ |
49 |
+-enable_gtest="no" |
50 |
+-GTEST_INCLUDES= |
51 |
+- |
52 |
+-AC_ARG_WITH([gtest-source], |
53 |
+- [AS_HELP_STRING([--with-gtest-source=PATH], |
54 |
+- [location of the Googletest source])], |
55 |
+- [enable_gtest="yes" ; GTEST_SOURCE="$withval"]) |
56 |
+- |
57 |
+-AC_ARG_WITH([gtest], |
58 |
+- [AS_HELP_STRING([--with-gtest=PATH], |
59 |
+- [specify a path to gtest header files (PATH/include) and library (PATH/lib)])], |
60 |
+- [gtest_path="$withval"; enable_gtest="yes"], [gtest_path="no"]) |
61 |
++AC_ARG_ENABLE([gtest], |
62 |
++ [AS_HELP_STRING([--enable-gtest], |
63 |
++ [Enable testing via Googletest [default=no]])]) |
64 |
+ |
65 |
+ AC_ARG_WITH([lcov], |
66 |
+ [AS_HELP_STRING([--with-lcov=PROGRAM], |
67 |
+ [enable gtest and coverage target using the specified lcov])], |
68 |
+ [lcov="$withval"], |
69 |
+ [lcov="no"]) |
70 |
+- |
71 |
+ USE_LCOV="no" |
72 |
+ if test "$lcov" != "no"; then |
73 |
+ # force gtest if not set |
74 |
+@@ -55,110 +45,22 @@ |
75 |
+ # |
76 |
+ # Check availability of gtest, which will be used for unit tests. |
77 |
+ # |
78 |
+-GTEST_LDFLAGS= |
79 |
+-GTEST_LDADD= |
80 |
+ DISTCHECK_GTEST_CONFIGURE_FLAG= |
81 |
+-GTEST_VERSION="unknown" |
82 |
+- |
83 |
+-if test "x$enable_gtest" = "xyes" ; then |
84 |
+- |
85 |
+- DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest=$gtest_path" |
86 |
+- |
87 |
+- if test -n "$with_gtest_source" ; then |
88 |
+ |
89 |
+- if test "x$GTEST_SOURCE" = "xyes" ; then |
90 |
++AS_IF([test "x$enable_gtest" = "xyes"], [ |
91 |
++ DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest" |
92 |
++ PKG_CHECK_MODULES([GTEST], [gtest], [], [AC_MSG_ERROR([gtest requested but not found])]) |
93 |
++ GTEST_INCLUDES=`${PKG_CONFIG} --keep-system-cflags --cflags-only-I gtest` |
94 |
++ GTEST_LDFLAGS=`${PKG_CONFIG} --keep-system-libs --libs-only-L gtest` |
95 |
++ GTEST_VERSION=`${PKG_CONFIG} --modversion gtest` |
96 |
++]) |
97 |
+ |
98 |
+- AC_MSG_CHECKING([for gtest source]) |
99 |
+- # If not specified, try some common paths. |
100 |
+- GTEST_SOURCE= |
101 |
+- for d in /usr/src/gtest /usr/local /usr/pkg /opt /opt/local ; do |
102 |
+- if test -f $d/src/gtest-all.cc -a $d/src/gtest_main.cc; then |
103 |
+- GTEST_SOURCE=$d |
104 |
+- AC_MSG_RESULT([$GTEST_SOURCE]) |
105 |
+- break |
106 |
+- fi |
107 |
+- done |
108 |
+- if test -z $GTEST_SOURCE ; then |
109 |
+- AC_MSG_ERROR([no gtest source but it was selected]) |
110 |
+- fi |
111 |
+- else |
112 |
+- if test ! -d $GTEST_SOURCE/src -a -d $GTEST_SOURCE/googletest; then |
113 |
+- GTEST_SOURCE=$GTEST_SOURCE/googletest |
114 |
+- fi |
115 |
+- if test -f $GTEST_SOURCE/src/gtest-all.cc -a $GTEST_SOURCE/src/gtest_main.cc; then |
116 |
+- have_gtest_source=yes |
117 |
+- else |
118 |
+- AC_MSG_ERROR([no gtest source at $GTEST_SOURCE]) |
119 |
+- fi |
120 |
+- fi |
121 |
+- have_gtest_source=yes |
122 |
+- |
123 |
+- GTEST_LDADD="\$(top_builddir)/ext/gtest/libgtest.a" |
124 |
+- DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest-source=$GTEST_SOURCE" |
125 |
+- GTEST_INCLUDES="-I$GTEST_SOURCE -I$GTEST_SOURCE/include" |
126 |
+- GTEST_VERSION="`basename $GTEST_SOURCE`" |
127 |
+- |
128 |
+-# Versions starting from 1.8.0 are put in the googletest directory. If the basename |
129 |
+-# returns googletest string, we need to cut it off and try baseline again. |
130 |
+- if test "$GTEST_VERSION" == "googletest"; then |
131 |
+- GTEST_VERSION=${GTEST_SOURCE%"/googletest"} |
132 |
+- GTEST_VERSION=`basename $GTEST_VERSION` |
133 |
+- fi |
134 |
+- GTEST_VERSION="${GTEST_VERSION#googletest-release-}" |
135 |
+- GTEST_VERSION="${GTEST_VERSION#gtest-}" |
136 |
+- fi |
137 |
+- |
138 |
+- if test "$gtest_path" != "no" ; then |
139 |
+- if test "$gtest_path" != "yes"; then |
140 |
+- GTEST_PATHS=$gtest_path |
141 |
+- if test -x "${gtest_path}/bin/gtest-config" ; then |
142 |
+- GTEST_CONFIG="${gtest_path}/bin/gtest-config" |
143 |
+- fi |
144 |
+- else |
145 |
+- AC_PATH_PROG([GTEST_CONFIG], [gtest-config]) |
146 |
+- fi |
147 |
+- if test -x "${GTEST_CONFIG}" ; then : |
148 |
+- # using cppflags instead of cxxflags |
149 |
+- GTEST_INCLUDES=`${GTEST_CONFIG} --cppflags` |
150 |
+- GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags` |
151 |
+- GTEST_LDADD=`${GTEST_CONFIG} --libs` |
152 |
+- GTEST_VERSION=`${GTEST_CONFIG} --version` |
153 |
+- GTEST_FOUND="true" |
154 |
+- else |
155 |
+- AC_MSG_WARN([Unable to locate Google Test gtest-config.]) |
156 |
+- if test -z "${GTEST_PATHS}" ; then |
157 |
+- GTEST_PATHS="/usr /usr/local" |
158 |
+- fi |
159 |
+- GTEST_FOUND="false" |
160 |
+- fi |
161 |
+- if test "${GTEST_FOUND}" != "true"; then |
162 |
+- GTEST_FOUND="false" |
163 |
+- for dir in $GTEST_PATHS; do |
164 |
+- if test -f "$dir/include/gtest/gtest.h"; then |
165 |
+- if ! test -f "$dir/lib/libgtest.a"; then |
166 |
+- AC_MSG_WARN([Found Google Test include but not the library in $dir.]) |
167 |
+- continue |
168 |
+- fi |
169 |
+- GTEST_INCLUDES="-I$dir/include" |
170 |
+- GTEST_LDFLAGS="-L$dir/lib" |
171 |
+- GTEST_LDADD="-lgtest" |
172 |
+- GTEST_FOUND="true" |
173 |
+- break |
174 |
+- fi |
175 |
+- done |
176 |
+- fi |
177 |
+- if test "${GTEST_FOUND}" != "true"; then |
178 |
+- AC_MSG_ERROR([Cannot find gtest in: $GTEST_PATHS]) |
179 |
+- fi |
180 |
+- |
181 |
+- fi |
182 |
+-fi |
183 |
+ AM_CONDITIONAL(HAVE_GTEST, test $enable_gtest != "no") |
184 |
+ AM_CONDITIONAL(HAVE_GTEST_SOURCE, test "X$have_gtest_source" = "Xyes") |
185 |
+ AC_SUBST(DISTCHECK_GTEST_CONFIGURE_FLAG) |
186 |
+ AC_SUBST(GTEST_INCLUDES) |
187 |
+ AC_SUBST(GTEST_LDFLAGS) |
188 |
+-AC_SUBST(GTEST_LDADD) |
189 |
++AC_SUBST([GTEST_LDADD], [$GTEST_LIBS]) |
190 |
+ AC_SUBST(GTEST_SOURCE) |
191 |
+ |
192 |
+ ])dnl AX_ISC_GTEST |
193 |
|
194 |
diff --git a/net-misc/kea/files/kea-1.9.10-gtest.patch b/net-misc/kea/files/kea-1.9.10-gtest.patch |
195 |
new file mode 100644 |
196 |
index 00000000000..f3e8cd7af4c |
197 |
--- /dev/null |
198 |
+++ b/net-misc/kea/files/kea-1.9.10-gtest.patch |
199 |
@@ -0,0 +1,143 @@ |
200 |
+--- a/m4macros/ax_gtest.m4 |
201 |
++++ b/m4macros/ax_gtest.m4 |
202 |
+@@ -1,17 +1,8 @@ |
203 |
+ AC_DEFUN([AX_ISC_GTEST], [ |
204 |
+ |
205 |
+-enable_gtest="no" |
206 |
+-GTEST_INCLUDES= |
207 |
+- |
208 |
+-AC_ARG_WITH([gtest-source], |
209 |
+- [AS_HELP_STRING([--with-gtest-source=PATH], |
210 |
+- [location of the Googletest source])], |
211 |
+- [enable_gtest="yes" ; GTEST_SOURCE="$withval"]) |
212 |
+- |
213 |
+-AC_ARG_WITH([gtest], |
214 |
+- [AS_HELP_STRING([--with-gtest=PATH], |
215 |
+- [specify a path to gtest header files (PATH/include) and library (PATH/lib)])], |
216 |
+- [gtest_path="$withval"; enable_gtest="yes"], [gtest_path="no"]) |
217 |
++AC_ARG_ENABLE([gtest], |
218 |
++ [AS_HELP_STRING([--enable-gtest], |
219 |
++ [enable testing via Googletest [default=no]])]) |
220 |
+ |
221 |
+ AC_ARG_WITH([lcov], |
222 |
+ [AS_HELP_STRING([--with-lcov=PROGRAM], |
223 |
+@@ -55,111 +46,22 @@ |
224 |
+ # |
225 |
+ # Check availability of gtest, which will be used for unit tests. |
226 |
+ # |
227 |
+-GTEST_LDFLAGS= |
228 |
+-GTEST_LDADD= |
229 |
+ DISTCHECK_GTEST_CONFIGURE_FLAG= |
230 |
+-GTEST_VERSION="unknown" |
231 |
+- |
232 |
+-if test "x$enable_gtest" = "xyes" ; then |
233 |
+- |
234 |
+- DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest=$gtest_path" |
235 |
+- |
236 |
+- if test -n "$with_gtest_source" ; then |
237 |
+ |
238 |
+- if test "x$GTEST_SOURCE" = "xyes" ; then |
239 |
++AS_IF([test "x$enable_gtest" = "xyes"], [ |
240 |
++ DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest" |
241 |
++ PKG_CHECK_MODULES([GTEST], [gtest], [], [AC_MSG_ERROR([gtest requested but not found])]) |
242 |
++ GTEST_INCLUDES=`${PKG_CONFIG} --keep-system-cflags --cflags-only-I gtest` |
243 |
++ GTEST_LDFLAGS=`${PKG_CONFIG} --keep-system-libs --libs-only-L gtest` |
244 |
++ GTEST_VERSION=`${PKG_CONFIG} --modversion gtest` |
245 |
++]) |
246 |
+ |
247 |
+- AC_MSG_CHECKING([for gtest source]) |
248 |
+- # If not specified, try some common paths. |
249 |
+- GTEST_SOURCE= |
250 |
+- for d in /usr/src/gtest /usr/local /usr/pkg /opt /opt/local ; do |
251 |
+- if test -f $d/src/gtest-all.cc -a $d/src/gtest_main.cc; then |
252 |
+- GTEST_SOURCE=$d |
253 |
+- AC_MSG_RESULT([$GTEST_SOURCE]) |
254 |
+- break |
255 |
+- fi |
256 |
+- done |
257 |
+- if test -z $GTEST_SOURCE ; then |
258 |
+- AC_MSG_ERROR([no gtest source but it was selected]) |
259 |
+- fi |
260 |
+- else |
261 |
+- if test ! -d $GTEST_SOURCE/src -a -d $GTEST_SOURCE/googletest; then |
262 |
+- GTEST_SOURCE=$GTEST_SOURCE/googletest |
263 |
+- fi |
264 |
+- if test -f $GTEST_SOURCE/src/gtest-all.cc -a $GTEST_SOURCE/src/gtest_main.cc; then |
265 |
+- have_gtest_source=yes |
266 |
+- else |
267 |
+- AC_MSG_ERROR([no gtest source at $GTEST_SOURCE]) |
268 |
+- fi |
269 |
+- fi |
270 |
+- have_gtest_source=yes |
271 |
+- |
272 |
+- GTEST_LDADD="\$(top_builddir)/ext/gtest/libgtest.a" |
273 |
+- DISTCHECK_GTEST_CONFIGURE_FLAG="--with-gtest-source=$GTEST_SOURCE" |
274 |
+- GTEST_INCLUDES="-I$GTEST_SOURCE -I$GTEST_SOURCE/include" |
275 |
+- GTEST_VERSION="`basename $GTEST_SOURCE`" |
276 |
+- |
277 |
+-# Versions starting from 1.8.0 are put in the googletest directory. If the basename |
278 |
+-# returns googletest string, we need to cut it off and try baseline again. |
279 |
+- if test "$GTEST_VERSION" = "googletest"; then |
280 |
+- GTEST_VERSION=${GTEST_SOURCE%"/googletest"} |
281 |
+- GTEST_VERSION=`basename $GTEST_VERSION` |
282 |
+- fi |
283 |
+- GTEST_VERSION="${GTEST_VERSION#googletest-release-}" |
284 |
+- GTEST_VERSION="${GTEST_VERSION#gtest-}" |
285 |
+- fi |
286 |
+- |
287 |
+- if test "$gtest_path" != "no" ; then |
288 |
+- if test "$gtest_path" != "yes"; then |
289 |
+- GTEST_PATHS=$gtest_path |
290 |
+- if test -x "${gtest_path}/bin/gtest-config" ; then |
291 |
+- GTEST_CONFIG="${gtest_path}/bin/gtest-config" |
292 |
+- fi |
293 |
+- else |
294 |
+- AC_PATH_PROG([GTEST_CONFIG], [gtest-config]) |
295 |
+- fi |
296 |
+- if test -x "${GTEST_CONFIG}" ; then : |
297 |
+- # using cppflags instead of cxxflags |
298 |
+- GTEST_INCLUDES=`${GTEST_CONFIG} --cppflags` |
299 |
+- GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags` |
300 |
+- GTEST_LDADD=`${GTEST_CONFIG} --libs` |
301 |
+- GTEST_VERSION=`${GTEST_CONFIG} --version` |
302 |
+- GTEST_FOUND="true" |
303 |
+- else |
304 |
+- AC_MSG_WARN([Unable to locate Google Test gtest-config.]) |
305 |
+- if test -z "${GTEST_PATHS}" ; then |
306 |
+- GTEST_PATHS="/usr /usr/local" |
307 |
+- fi |
308 |
+- GTEST_FOUND="false" |
309 |
+- fi |
310 |
+- if test "${GTEST_FOUND}" != "true"; then |
311 |
+- GTEST_FOUND="false" |
312 |
+- for dir in $GTEST_PATHS; do |
313 |
+- if test -f "$dir/include/gtest/gtest.h"; then |
314 |
+- if test -f "$dir/lib/libgtest.a" || \ |
315 |
+- test -f "$dir/lib/libgtest.so"; then |
316 |
+- GTEST_INCLUDES="-I$dir/include" |
317 |
+- GTEST_LDFLAGS="-L$dir/lib" |
318 |
+- GTEST_LDADD="-lgtest" |
319 |
+- GTEST_FOUND="true" |
320 |
+- break |
321 |
+- else |
322 |
+- AC_MSG_WARN([Found Google Test include but not the library in $dir.]) |
323 |
+- fi |
324 |
+- fi |
325 |
+- done |
326 |
+- fi |
327 |
+- if test "${GTEST_FOUND}" != "true"; then |
328 |
+- AC_MSG_ERROR([Cannot find gtest in: $GTEST_PATHS]) |
329 |
+- fi |
330 |
+- |
331 |
+- fi |
332 |
+-fi |
333 |
+ AM_CONDITIONAL(HAVE_GTEST, test $enable_gtest != "no") |
334 |
+ AM_CONDITIONAL(HAVE_GTEST_SOURCE, test "X$have_gtest_source" = "Xyes") |
335 |
+ AC_SUBST(DISTCHECK_GTEST_CONFIGURE_FLAG) |
336 |
+ AC_SUBST(GTEST_INCLUDES) |
337 |
+ AC_SUBST(GTEST_LDFLAGS) |
338 |
+-AC_SUBST(GTEST_LDADD) |
339 |
++AC_SUBST([GTEST_LDADD], [$GTEST_LIBS]) |
340 |
+ AC_SUBST(GTEST_SOURCE) |
341 |
+ |
342 |
+ ])dnl AX_ISC_GTEST |
343 |
|
344 |
diff --git a/net-misc/kea/files/kea-ctrl-agent.conf b/net-misc/kea/files/kea-ctrl-agent.conf |
345 |
new file mode 100644 |
346 |
index 00000000000..ab74123d21a |
347 |
--- /dev/null |
348 |
+++ b/net-misc/kea/files/kea-ctrl-agent.conf |
349 |
@@ -0,0 +1,99 @@ |
350 |
+// This is a basic configuration for the Kea Control Agent. |
351 |
+// |
352 |
+// This is just a very basic configuration. Kea comes with large suite (over 30) |
353 |
+// of configuration examples and extensive Kea User's Guide. Please refer to |
354 |
+// those materials to get better understanding of what this software is able to |
355 |
+// do. Comments in this configuration file sometimes refer to sections for more |
356 |
+// details. These are section numbers in Kea User's Guide. The version matching |
357 |
+// your software should come with your Kea package, but it is also available |
358 |
+// in ISC's Knowledgebase (https://kea.readthedocs.io; the direct link for |
359 |
+// the stable version is https://kea.readthedocs.io/). |
360 |
+// |
361 |
+// This configuration file contains only Control Agent's configuration. |
362 |
+// If configurations for other Kea services are also included in this file they |
363 |
+// are ignored by the Control Agent. |
364 |
+{ |
365 |
+ |
366 |
+// This is a basic configuration for the Kea Control Agent. |
367 |
+// RESTful interface to be available at http://127.0.0.1:8000/ |
368 |
+"Control-agent": { |
369 |
+ "http-host": "127.0.0.1", |
370 |
+ "http-port": 8000, |
371 |
+ |
372 |
+ // Specify location of the files to which the Control Agent |
373 |
+ // should connect to forward commands to the DHCPv4, DHCPv6 |
374 |
+ // and D2 servers via unix domain sockets. |
375 |
+ "control-sockets": { |
376 |
+ "dhcp4": { |
377 |
+ "socket-type": "unix", |
378 |
+ "socket-name": "/run/kea/kea4-ctrl-socket" |
379 |
+ }, |
380 |
+ "dhcp6": { |
381 |
+ "socket-type": "unix", |
382 |
+ "socket-name": "/run/kea/kea6-ctrl-socket" |
383 |
+ }, |
384 |
+ "d2": { |
385 |
+ "socket-type": "unix", |
386 |
+ "socket-name": "/run/kea/kea-ddns-ctrl-socket" |
387 |
+ } |
388 |
+ }, |
389 |
+ |
390 |
+ // Specify hooks libraries that are attached to the Control Agent. |
391 |
+ // Such hooks libraries should support 'control_command_receive' |
392 |
+ // hook point. This is currently commented out because it has to |
393 |
+ // point to the existing hooks library. Otherwise the Control |
394 |
+ // Agent will fail to start. |
395 |
+ "hooks-libraries": [ |
396 |
+// { |
397 |
+// "library": "@libdir@/kea/hooks/control-agent-commands.so", |
398 |
+// "parameters": { |
399 |
+// "param1": "foo" |
400 |
+// } |
401 |
+// } |
402 |
+ ], |
403 |
+ |
404 |
+// Logging configuration starts here. Kea uses different loggers to log various |
405 |
+// activities. For details (e.g. names of loggers), see Chapter 18. |
406 |
+ "loggers": [ |
407 |
+ { |
408 |
+ // This specifies the logging for Control Agent daemon. |
409 |
+ "name": "kea-ctrl-agent", |
410 |
+ "output_options": [ |
411 |
+ { |
412 |
+ // Specifies the output file. There are several special values |
413 |
+ // supported: |
414 |
+ // - stdout (prints on standard output) |
415 |
+ // - stderr (prints on standard error) |
416 |
+ // - syslog (logs to syslog) |
417 |
+ // - syslog:name (logs to syslog using specified name) |
418 |
+ // Any other value is considered a name of the file |
419 |
+ "output": "@localstatedir@/log/kea/kea-ctrl-agent.log" |
420 |
+ |
421 |
+ // Shorter log pattern suitable for use with systemd, |
422 |
+ // avoids redundant information |
423 |
+ // "pattern": "%-5p %m\n" |
424 |
+ |
425 |
+ // This governs whether the log output is flushed to disk after |
426 |
+ // every write. |
427 |
+ // "flush": false, |
428 |
+ |
429 |
+ // This specifies the maximum size of the file before it is |
430 |
+ // rotated. |
431 |
+ // "maxsize": 1048576, |
432 |
+ |
433 |
+ // This specifies the maximum number of rotated files to keep. |
434 |
+ // "maxver": 8 |
435 |
+ } |
436 |
+ ], |
437 |
+ // This specifies the severity of log messages to keep. Supported values |
438 |
+ // are: FATAL, ERROR, WARN, INFO, DEBUG |
439 |
+ "severity": "INFO", |
440 |
+ |
441 |
+ // If DEBUG level is specified, this value is used. 0 is least verbose, |
442 |
+ // 99 is most verbose. Be cautious, Kea can generate lots and lots |
443 |
+ // of logs if told to do so. |
444 |
+ "debuglevel": 0 |
445 |
+ } |
446 |
+ ] |
447 |
+} |
448 |
+} |
449 |
|
450 |
diff --git a/net-misc/kea/files/kea-ctrl-agent.service b/net-misc/kea/files/kea-ctrl-agent.service |
451 |
new file mode 100644 |
452 |
index 00000000000..17569836520 |
453 |
--- /dev/null |
454 |
+++ b/net-misc/kea/files/kea-ctrl-agent.service |
455 |
@@ -0,0 +1,19 @@ |
456 |
+[Unit] |
457 |
+Description=Kea control agent process |
458 |
+Documentation=man:kea-ctrl-agent(8) |
459 |
+Wants=network-online.target |
460 |
+After=network-online.target time-sync.target |
461 |
+ |
462 |
+[Service] |
463 |
+User=dhcp |
464 |
+Group=dhcp |
465 |
+RuntimeDirectory=kea |
466 |
+Environment="KEA_PIDFILE_DIR=/run/kea" |
467 |
+Environment="KEA_LOCKFILE_DIR=/run/lock/kea" |
468 |
+RuntimeDirectory=kea |
469 |
+ExecStart=/usr/sbin/kea-ctrl-agent -c /etc/kea/kea-ctrl-agent.conf |
470 |
+Restart=always |
471 |
+ |
472 |
+[Install] |
473 |
+WantedBy=kea-dhcp4-server.service |
474 |
+WantedBy=kea-dhcp6-server.service |
475 |
|
476 |
diff --git a/net-misc/kea/files/kea-ddns-server.conf b/net-misc/kea/files/kea-ddns-server.conf |
477 |
new file mode 100644 |
478 |
index 00000000000..200a58bb361 |
479 |
--- /dev/null |
480 |
+++ b/net-misc/kea/files/kea-ddns-server.conf |
481 |
@@ -0,0 +1,76 @@ |
482 |
+// This is a basic configuration for the Kea DHCP DDNS daemon. |
483 |
+// |
484 |
+// This is just a very basic configuration. Kea comes with large suite (over 30) |
485 |
+// of configuration examples and extensive Kea User's Guide. Please refer to |
486 |
+// those materials to get better understanding of what this software is able to |
487 |
+// do. Comments in this configuration file sometimes refer to sections for more |
488 |
+// details. These are section numbers in Kea User's Guide. The version matching |
489 |
+// your software should come with your Kea package, but it is also available |
490 |
+// in ISC's Knowledgebase (https://kea.readthedocs.io; the direct link for |
491 |
+// the stable version is https://kea.readthedocs.io/). |
492 |
+// |
493 |
+// This configuration file contains only DHCP DDNS daemon's configuration. |
494 |
+// If configurations for other Kea services are also included in this file they |
495 |
+// are ignored by the DHCP DDNS daemon. |
496 |
+{ |
497 |
+ |
498 |
+// DHCP DDNS configuration starts here. This is a very simple configuration |
499 |
+// that simply starts the DDNS daemon, but will not do anything useful. |
500 |
+// See Section 11 for examples and details description. |
501 |
+"DhcpDdns": |
502 |
+{ |
503 |
+ "ip-address": "127.0.0.1", |
504 |
+ "port": 53001, |
505 |
+ "control-socket": { |
506 |
+ "socket-type": "unix", |
507 |
+ "socket-name": "/run/kea/kea-ddns-ctrl-socket" |
508 |
+ }, |
509 |
+ "tsig-keys": [], |
510 |
+ "forward-ddns" : {}, |
511 |
+ "reverse-ddns" : {}, |
512 |
+ |
513 |
+// Logging configuration starts here. Kea uses different loggers to log various |
514 |
+// activities. For details (e.g. names of loggers), see Chapter 18. |
515 |
+ "loggers": [ |
516 |
+ { |
517 |
+ // This specifies the logging for D2 (DHCP-DDNS) daemon. |
518 |
+ "name": "kea-dhcp-ddns", |
519 |
+ "output_options": [ |
520 |
+ { |
521 |
+ // Specifies the output file. There are several special values |
522 |
+ // supported: |
523 |
+ // - stdout (prints on standard output) |
524 |
+ // - stderr (prints on standard error) |
525 |
+ // - syslog (logs to syslog) |
526 |
+ // - syslog:name (logs to syslog using specified name) |
527 |
+ // Any other value is considered a name of the file |
528 |
+ "output": "@localstatedir@/log/kea/kea-ddns.log" |
529 |
+ |
530 |
+ // Shorter log pattern suitable for use with systemd, |
531 |
+ // avoids redundant information |
532 |
+ // "pattern": "%-5p %m\n" |
533 |
+ |
534 |
+ // This governs whether the log output is flushed to disk after |
535 |
+ // every write. |
536 |
+ // "flush": false, |
537 |
+ |
538 |
+ // This specifies the maximum size of the file before it is |
539 |
+ // rotated. |
540 |
+ // "maxsize": 1048576, |
541 |
+ |
542 |
+ // This specifies the maximum number of rotated files to keep. |
543 |
+ // "maxver": 8 |
544 |
+ } |
545 |
+ ], |
546 |
+ // This specifies the severity of log messages to keep. Supported values |
547 |
+ // are: FATAL, ERROR, WARN, INFO, DEBUG |
548 |
+ "severity": "INFO", |
549 |
+ |
550 |
+ // If DEBUG level is specified, this value is used. 0 is least verbose, |
551 |
+ // 99 is most verbose. Be cautious, Kea can generate lots and lots |
552 |
+ // of logs if told to do so. |
553 |
+ "debuglevel": 0 |
554 |
+ } |
555 |
+ ] |
556 |
+} |
557 |
+} |
558 |
|
559 |
diff --git a/net-misc/kea/files/kea-ddns-server.service b/net-misc/kea/files/kea-ddns-server.service |
560 |
new file mode 100644 |
561 |
index 00000000000..d239e8fc48e |
562 |
--- /dev/null |
563 |
+++ b/net-misc/kea/files/kea-ddns-server.service |
564 |
@@ -0,0 +1,18 @@ |
565 |
+[Unit] |
566 |
+Description=Kea DDNS service |
567 |
+Documentation=man:kea-dhcp-ddns(8) |
568 |
+Wants=network-online.target |
569 |
+After=network-online.target time-sync.target |
570 |
+ |
571 |
+[Service] |
572 |
+User=dhcp |
573 |
+Group=dhcp |
574 |
+RuntimeDirectory=kea |
575 |
+Environment="KEA_PIDFILE_DIR=/run/kea" |
576 |
+Environment="KEA_LOCKFILE_DIR=/run/lock/kea" |
577 |
+ExecStart=/usr/sbin/kea-dhcp-ddns -c /etc/kea/kea-dhcp-ddns.conf |
578 |
+Restart=always |
579 |
+ |
580 |
+[Install] |
581 |
+WantedBy=kea-dhcpv4-server.service |
582 |
+WantedBy=kea-dhcpv6-server.service |
583 |
|
584 |
diff --git a/net-misc/kea/files/kea-dhcp4-server.service b/net-misc/kea/files/kea-dhcp4-server.service |
585 |
new file mode 100644 |
586 |
index 00000000000..d37da7f3c6c |
587 |
--- /dev/null |
588 |
+++ b/net-misc/kea/files/kea-dhcp4-server.service |
589 |
@@ -0,0 +1,18 @@ |
590 |
+[Unit] |
591 |
+Description=ISC KEA DHCPv4 DHCP daemon |
592 |
+Documentation=man:kea-dhcp4(8) |
593 |
+Wants=network-online.target |
594 |
+Requires=kea-ctrl-agent.service |
595 |
+After=network-online.target mariadb.service mysql.service |
596 |
+ |
597 |
+[Service] |
598 |
+User=dhcp |
599 |
+Group=dhcp |
600 |
+RuntimeDirectory=kea |
601 |
+Environment="KEA_PIDFILE_DIR=/run/kea" |
602 |
+Environment="KEA_LOCKFILE_DIR=/run/lock/kea" |
603 |
+ExecStart=/usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf |
604 |
+Restart=always |
605 |
+ |
606 |
+[Install] |
607 |
+WantedBy=multi-user.target |
608 |
|
609 |
diff --git a/net-misc/kea/files/kea-dhcp4.conf b/net-misc/kea/files/kea-dhcp4.conf |
610 |
new file mode 100644 |
611 |
index 00000000000..e24121cb33d |
612 |
--- /dev/null |
613 |
+++ b/net-misc/kea/files/kea-dhcp4.conf |
614 |
@@ -0,0 +1,401 @@ |
615 |
+{ |
616 |
+// DHCPv4 configuration starts here. This section will be read by DHCPv4 server |
617 |
+// and will be ignored by other components. |
618 |
+"Dhcp4": { |
619 |
+ // Add names of your network interfaces to listen on. |
620 |
+ "interfaces-config": { |
621 |
+ // See section 8.2.4 for more details. You probably want to add just |
622 |
+ // interface name (e.g. "eth0" or specific IPv4 address on that |
623 |
+ // interface name (e.g. "eth0/192.0.2.1"). |
624 |
+ "interfaces": [ ] |
625 |
+ |
626 |
+ // Kea DHCPv4 server by default listens using raw sockets. This ensures |
627 |
+ // all packets, including those sent by directly connected clients |
628 |
+ // that don't have IPv4 address yet, are received. However, if your |
629 |
+ // traffic is always relayed, it is often better to use regular |
630 |
+ // UDP sockets. If you want to do that, uncomment this line: |
631 |
+ // "dhcp-socket-type": "udp" |
632 |
+ }, |
633 |
+ |
634 |
+ // Kea supports control channel, which is a way to receive management |
635 |
+ // commands while the server is running. This is a Unix domain socket that |
636 |
+ // receives commands formatted in JSON, e.g. config-set (which sets new |
637 |
+ // configuration), config-reload (which tells Kea to reload its |
638 |
+ // configuration from file), statistic-get (to retrieve statistics) and many |
639 |
+ // more. For detailed description, see Sections 8.8, 16 and 15. |
640 |
+ "control-socket": { |
641 |
+ "socket-type": "unix", |
642 |
+ "socket-name": "/run/kea/kea4-ctrl-socket" |
643 |
+ }, |
644 |
+ |
645 |
+ // Use Memfile lease database backend to store leases in a CSV file. |
646 |
+ // Depending on how Kea was compiled, it may also support SQL databases |
647 |
+ // (MySQL and/or PostgreSQL) and even Cassandra. Those database backends |
648 |
+ // require more parameters, like name, host and possibly user and password. |
649 |
+ // There are dedicated examples for each backend. See Section 7.2.2 "Lease |
650 |
+ // Storage" for details. |
651 |
+ "lease-database": { |
652 |
+ // Memfile is the simplest and easiest backend to use. It's an in-memory |
653 |
+ // C++ database that stores its state in CSV file. |
654 |
+ "type": "memfile", |
655 |
+ "lfc-interval": 3600 |
656 |
+ }, |
657 |
+ |
658 |
+ // Kea allows storing host reservations in a database. If your network is |
659 |
+ // small or you have few reservations, it's probably easier to keep them |
660 |
+ // in the configuration file. If your network is large, it's usually better |
661 |
+ // to use database for it. To enable it, uncomment the following: |
662 |
+ // "hosts-database": { |
663 |
+ // "type": "mysql", |
664 |
+ // "name": "kea", |
665 |
+ // "user": "kea", |
666 |
+ // "password": "kea", |
667 |
+ // "host": "localhost", |
668 |
+ // "port": 3306 |
669 |
+ // }, |
670 |
+ // See Section 7.2.3 "Hosts storage" for details. |
671 |
+ |
672 |
+ // Setup reclamation of the expired leases and leases affinity. |
673 |
+ // Expired leases will be reclaimed every 10 seconds. Every 25 |
674 |
+ // seconds reclaimed leases, which have expired more than 3600 |
675 |
+ // seconds ago, will be removed. The limits for leases reclamation |
676 |
+ // are 100 leases or 250 ms for a single cycle. A warning message |
677 |
+ // will be logged if there are still expired leases in the |
678 |
+ // database after 5 consecutive reclamation cycles. |
679 |
+ "expired-leases-processing": { |
680 |
+ "reclaim-timer-wait-time": 10, |
681 |
+ "flush-reclaimed-timer-wait-time": 25, |
682 |
+ "hold-reclaimed-time": 3600, |
683 |
+ "max-reclaim-leases": 100, |
684 |
+ "max-reclaim-time": 250, |
685 |
+ "unwarned-reclaim-cycles": 5 |
686 |
+ }, |
687 |
+ |
688 |
+ // Global timers specified here apply to all subnets, unless there are |
689 |
+ // subnet specific values defined in particular subnets. |
690 |
+ "renew-timer": 900, |
691 |
+ "rebind-timer": 1800, |
692 |
+ "valid-lifetime": 3600, |
693 |
+ |
694 |
+ // Many additional parameters can be specified here: |
695 |
+ // - option definitions (if you want to define vendor options, your own |
696 |
+ // custom options or perhaps handle standard options |
697 |
+ // that Kea does not support out of the box yet) |
698 |
+ // - client classes |
699 |
+ // - hooks |
700 |
+ // - ddns information (how the DHCPv4 component can reach a DDNS daemon) |
701 |
+ // |
702 |
+ // Some of them have examples below, but there are other parameters. |
703 |
+ // Consult Kea User's Guide to find out about them. |
704 |
+ |
705 |
+ // These are global options. They are going to be sent when a client |
706 |
+ // requests them, unless overwritten with values in more specific scopes. |
707 |
+ // The scope hierarchy is: |
708 |
+ // - global (most generic, can be overwritten by class, subnet or host) |
709 |
+ // - class (can be overwritten by subnet or host) |
710 |
+ // - subnet (can be overwritten by host) |
711 |
+ // - host (most specific, overwrites any other scopes) |
712 |
+ // |
713 |
+ // Not all of those options make sense. Please configure only those that |
714 |
+ // are actually useful in your network. |
715 |
+ // |
716 |
+ // For a complete list of options currently supported by Kea, see |
717 |
+ // Section 7.2.8 "Standard DHCPv4 Options". Kea also supports |
718 |
+ // vendor options (see Section 7.2.10) and allows users to define their |
719 |
+ // own custom options (see Section 7.2.9). |
720 |
+ "option-data": [ |
721 |
+ // When specifying options, you typically need to specify |
722 |
+ // one of (name or code) and data. The full option specification |
723 |
+ // covers name, code, space, csv-format and data. |
724 |
+ // space defaults to "dhcp4" which is usually correct, unless you |
725 |
+ // use encapsulate options. csv-format defaults to "true", so |
726 |
+ // this is also correct, unless you want to specify the whole |
727 |
+ // option value as long hex string. For example, to specify |
728 |
+ // domain-name-servers you could do this: |
729 |
+ // { |
730 |
+ // "name": "domain-name-servers", |
731 |
+ // "code": 6, |
732 |
+ // "csv-format": "true", |
733 |
+ // "space": "dhcp4", |
734 |
+ // "data": "192.0.2.1, 192.0.2.2" |
735 |
+ // } |
736 |
+ // but it's a lot of writing, so it's easier to do this instead: |
737 |
+ { |
738 |
+ "name": "domain-name-servers", |
739 |
+ "data": "192.0.2.1, 192.0.2.2" |
740 |
+ }, |
741 |
+ |
742 |
+ // Typically people prefer to refer to options by their names, so they |
743 |
+ // don't need to remember the code names. However, some people like |
744 |
+ // to use numerical values. For example, option "domain-name" uses |
745 |
+ // option code 15, so you can reference to it either by |
746 |
+ // "name": "domain-name" or "code": 15. |
747 |
+ { |
748 |
+ "code": 15, |
749 |
+ "data": "example.org" |
750 |
+ }, |
751 |
+ |
752 |
+ // Domain search is also a popular option. It tells the client to |
753 |
+ // attempt to resolve names within those specified domains. For |
754 |
+ // example, name "foo" would be attempted to be resolved as |
755 |
+ // foo.mydomain.example.com and if it fails, then as foo.example.com |
756 |
+ { |
757 |
+ "name": "domain-search", |
758 |
+ "data": "mydomain.example.com, example.com" |
759 |
+ }, |
760 |
+ |
761 |
+ // String options that have a comma in their values need to have |
762 |
+ // it escaped (i.e. each comma is preceded by two backslashes). |
763 |
+ // That's because commas are reserved for separating fields in |
764 |
+ // compound options. At the same time, we need to be conformant |
765 |
+ // with JSON spec, that does not allow "\,". Therefore the |
766 |
+ // slightly uncommon double backslashes notation is needed. |
767 |
+ |
768 |
+ // Legal JSON escapes are \ followed by "\/bfnrt character |
769 |
+ // or \u followed by 4 hexadecimal numbers (currently Kea |
770 |
+ // supports only \u0000 to \u00ff code points). |
771 |
+ // CSV processing translates '\\' into '\' and '\,' into ',' |
772 |
+ // only so for instance '\x' is translated into '\x'. But |
773 |
+ // as it works on a JSON string value each of these '\' |
774 |
+ // characters must be doubled on JSON input. |
775 |
+ { |
776 |
+ "name": "boot-file-name", |
777 |
+ "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00" |
778 |
+ }, |
779 |
+ |
780 |
+ // Options that take integer values can either be specified in |
781 |
+ // dec or hex format. Hex format could be either plain (e.g. abcd) |
782 |
+ // or prefixed with 0x (e.g. 0xabcd). |
783 |
+ { |
784 |
+ "name": "default-ip-ttl", |
785 |
+ "data": "0xf0" |
786 |
+ } |
787 |
+ |
788 |
+ // Note that Kea provides some of the options on its own. In particular, |
789 |
+ // it sends IP Address lease type (code 51, based on valid-lifetime |
790 |
+ // parameter, Subnet mask (code 1, based on subnet definition), Renewal |
791 |
+ // time (code 58, based on renew-timer parameter), Rebind time (code 59, |
792 |
+ // based on rebind-timer parameter). |
793 |
+ ], |
794 |
+ |
795 |
+ // Other global parameters that can be defined here are option definitions |
796 |
+ // (this is useful if you want to use vendor options, your own custom |
797 |
+ // options or perhaps handle options that Kea does not handle out of the box |
798 |
+ // yet). |
799 |
+ |
800 |
+ // You can also define classes. If classes are defined, incoming packets |
801 |
+ // may be assigned to specific classes. A client class can represent any |
802 |
+ // group of devices that share some common characteristic, e.g. Windows |
803 |
+ // devices, iphones, broken printers that require special options, etc. |
804 |
+ // Based on the class information, you can then allow or reject clients |
805 |
+ // to use certain subnets, add special options for them or change values |
806 |
+ // of some fixed fields. |
807 |
+ "client-classes": [ |
808 |
+ { |
809 |
+ // This specifies a name of this class. It's useful if you need to |
810 |
+ // reference this class. |
811 |
+ "name": "voip", |
812 |
+ |
813 |
+ // This is a test. It is an expression that is being evaluated on |
814 |
+ // each incoming packet. It is supposed to evaluate to either |
815 |
+ // true or false. If it's true, the packet is added to specified |
816 |
+ // class. See Section 12 for a list of available expressions. There |
817 |
+ // are several dozens. Section 8.2.14 for more details for DHCPv4 |
818 |
+ // classification and Section 9.2.19 for DHCPv6. |
819 |
+ "test": "substring(option[60].hex,0,6) == 'Aastra'", |
820 |
+ |
821 |
+ // If a client belongs to this class, you can define extra behavior. |
822 |
+ // For example, certain fields in DHCPv4 packet will be set to |
823 |
+ // certain values. |
824 |
+ "next-server": "192.0.2.254", |
825 |
+ "server-hostname": "hal9000", |
826 |
+ "boot-file-name": "/dev/null" |
827 |
+ |
828 |
+ // You can also define option values here if you want devices from |
829 |
+ // this class to receive special options. |
830 |
+ } |
831 |
+ ], |
832 |
+ |
833 |
+ // Below an example of a simple IPv4 subnet declaration. Uncomment to enable |
834 |
+ // it. This is a list, denoted with [ ], of structures, each denoted with |
835 |
+ // { }. Each structure describes a single subnet and may have several |
836 |
+ // parameters. One of those parameters is "pools" that is also a list of |
837 |
+ // structures. |
838 |
+ "subnet4": [ |
839 |
+ { |
840 |
+ // This defines the whole subnet. Kea will use this information to |
841 |
+ // determine where the clients are connected. This is the whole |
842 |
+ // subnet in your network. This is mandatory parameter for each |
843 |
+ // subnet. |
844 |
+ "subnet": "192.0.2.0/24", |
845 |
+ |
846 |
+ // Pools define the actual part of your subnet that is governed |
847 |
+ // by Kea. Technically this is optional parameter, but it's |
848 |
+ // almost always needed for DHCP to do its job. If you omit it, |
849 |
+ // clients won't be able to get addresses, unless there are |
850 |
+ // host reservations defined for them. |
851 |
+ "pools": [ { "pool": "192.0.2.1 - 192.0.2.200" } ], |
852 |
+ |
853 |
+ // These are options that are subnet specific. In most cases, |
854 |
+ // you need to define at least routers option, as without this |
855 |
+ // option your clients will not be able to reach their default |
856 |
+ // gateway and will not have Internet connectivity. |
857 |
+ "option-data": [ |
858 |
+ { |
859 |
+ // For each IPv4 subnet you most likely need to specify at |
860 |
+ // least one router. |
861 |
+ "name": "routers", |
862 |
+ "data": "192.0.2.1" |
863 |
+ } |
864 |
+ ], |
865 |
+ |
866 |
+ // Kea offers host reservations mechanism. Kea supports reservations |
867 |
+ // by several different types of identifiers: hw-address |
868 |
+ // (hardware/MAC address of the client), duid (DUID inserted by the |
869 |
+ // client), client-id (client identifier inserted by the client) and |
870 |
+ // circuit-id (circuit identifier inserted by the relay agent). |
871 |
+ // |
872 |
+ // Kea also support flexible identifier (flex-id), which lets you |
873 |
+ // specify an expression that is evaluated for each incoming packet. |
874 |
+ // Resulting value is then used for as an identifier. |
875 |
+ // |
876 |
+ // Note that reservations are subnet-specific in Kea. This is |
877 |
+ // different than ISC DHCP. Keep that in mind when migrating |
878 |
+ // your configurations. |
879 |
+ "reservations": [ |
880 |
+ |
881 |
+ // This is a reservation for a specific hardware/MAC address. |
882 |
+ // It's a rather simple reservation: just an address and nothing |
883 |
+ // else. |
884 |
+ { |
885 |
+ "hw-address": "1a:1b:1c:1d:1e:1f", |
886 |
+ "ip-address": "192.0.2.201" |
887 |
+ }, |
888 |
+ |
889 |
+ // This is a reservation for a specific client-id. It also shows |
890 |
+ // the this client will get a reserved hostname. A hostname can |
891 |
+ // be defined for any identifier type, not just client-id. |
892 |
+ { |
893 |
+ "client-id": "01:11:22:33:44:55:66", |
894 |
+ "ip-address": "192.0.2.202", |
895 |
+ "hostname": "special-snowflake" |
896 |
+ }, |
897 |
+ |
898 |
+ // The third reservation is based on DUID. This reservation defines |
899 |
+ // a special option values for this particular client. If the |
900 |
+ // domain-name-servers option would have been defined on a global, |
901 |
+ // subnet or class level, the host specific values take preference. |
902 |
+ { |
903 |
+ "duid": "01:02:03:04:05", |
904 |
+ "ip-address": "192.0.2.203", |
905 |
+ "option-data": [ { |
906 |
+ "name": "domain-name-servers", |
907 |
+ "data": "10.1.1.202, 10.1.1.203" |
908 |
+ } ] |
909 |
+ }, |
910 |
+ |
911 |
+ // The fourth reservation is based on circuit-id. This is an option |
912 |
+ // inserted by the relay agent that forwards the packet from client |
913 |
+ // to the server. In this example the host is also assigned vendor |
914 |
+ // specific options. |
915 |
+ // |
916 |
+ // When using reservations, it is useful to configure |
917 |
+ // reservations-global, reservations-in-subnet, |
918 |
+ // reservations-out-of-pool (subnet specific parameters) |
919 |
+ // and host-reservation-identifiers (global parameter). |
920 |
+ { |
921 |
+ "client-id": "01:12:23:34:45:56:67", |
922 |
+ "ip-address": "192.0.2.204", |
923 |
+ "option-data": [ |
924 |
+ { |
925 |
+ "name": "vivso-suboptions", |
926 |
+ "data": "4491" |
927 |
+ }, |
928 |
+ { |
929 |
+ "name": "tftp-servers", |
930 |
+ "space": "vendor-4491", |
931 |
+ "data": "10.1.1.202, 10.1.1.203" |
932 |
+ } |
933 |
+ ] |
934 |
+ }, |
935 |
+ // This reservation is for a client that needs specific DHCPv4 |
936 |
+ // fields to be set. Three supported fields are next-server, |
937 |
+ // server-hostname and boot-file-name |
938 |
+ { |
939 |
+ "client-id": "01:0a:0b:0c:0d:0e:0f", |
940 |
+ "ip-address": "192.0.2.205", |
941 |
+ "next-server": "192.0.2.1", |
942 |
+ "server-hostname": "hal9000", |
943 |
+ "boot-file-name": "/dev/null" |
944 |
+ }, |
945 |
+ // This reservation is using flexible identifier. Instead of |
946 |
+ // relying on specific field, sysadmin can define an expression |
947 |
+ // similar to what is used for client classification, |
948 |
+ // e.g. substring(relay[0].option[17],0,6). Then, based on the |
949 |
+ // value of that expression for incoming packet, the reservation |
950 |
+ // is matched. Expression can be specified either as hex or |
951 |
+ // plain text using single quotes. |
952 |
+ // |
953 |
+ // Note: flexible identifier requires flex_id hook library to be |
954 |
+ // loaded to work. |
955 |
+ { |
956 |
+ "flex-id": "'s0mEVaLue'", |
957 |
+ "ip-address": "192.0.2.206" |
958 |
+ } |
959 |
+ // You can add more reservations here. |
960 |
+ ] |
961 |
+ // You can add more subnets there. |
962 |
+ } |
963 |
+ ], |
964 |
+ |
965 |
+ // There are many, many more parameters that DHCPv4 server is able to use. |
966 |
+ // They were not added here to not overwhelm people with too much |
967 |
+ // information at once. |
968 |
+ |
969 |
+ // Logging configuration starts here. Kea uses different loggers to log various |
970 |
+ // activities. For details (e.g. names of loggers), see Chapter 18. |
971 |
+ "loggers": [ |
972 |
+ { |
973 |
+ // This section affects kea-dhcp4, which is the base logger for DHCPv4 |
974 |
+ // component. It tells DHCPv4 server to write all log messages (on |
975 |
+ // severity INFO or more) to a file. |
976 |
+ "name": "kea-dhcp4", |
977 |
+ "output_options": [ |
978 |
+ { |
979 |
+ // Specifies the output file. There are several special values |
980 |
+ // supported: |
981 |
+ // - stdout (prints on standard output) |
982 |
+ // - stderr (prints on standard error) |
983 |
+ // - syslog (logs to syslog) |
984 |
+ // - syslog:name (logs to syslog using specified name) |
985 |
+ // Any other value is considered a name of the file |
986 |
+ "output": "@localstatedir@/log/kea/kea-dhcp4.log" |
987 |
+ |
988 |
+ // Shorter log pattern suitable for use with systemd, |
989 |
+ // avoids redundant information |
990 |
+ // "pattern": "%-5p %m\n" |
991 |
+ |
992 |
+ // This governs whether the log output is flushed to disk after |
993 |
+ // every write. |
994 |
+ // "flush": false, |
995 |
+ |
996 |
+ // This specifies the maximum size of the file before it is |
997 |
+ // rotated. |
998 |
+ // "maxsize": 1048576, |
999 |
+ |
1000 |
+ // This specifies the maximum number of rotated files to keep. |
1001 |
+ // "maxver": 8 |
1002 |
+ } |
1003 |
+ ], |
1004 |
+ // This specifies the severity of log messages to keep. Supported values |
1005 |
+ // are: FATAL, ERROR, WARN, INFO, DEBUG |
1006 |
+ "severity": "INFO", |
1007 |
+ |
1008 |
+ // If DEBUG level is specified, this value is used. 0 is least verbose, |
1009 |
+ // 99 is most verbose. Be cautious, Kea can generate lots and lots |
1010 |
+ // of logs if told to do so. |
1011 |
+ "debuglevel": 0 |
1012 |
+ } |
1013 |
+ ] |
1014 |
+} |
1015 |
+} |
1016 |
|
1017 |
diff --git a/net-misc/kea/files/kea-dhcp6-server.service b/net-misc/kea/files/kea-dhcp6-server.service |
1018 |
new file mode 100644 |
1019 |
index 00000000000..88e12c7abf3 |
1020 |
--- /dev/null |
1021 |
+++ b/net-misc/kea/files/kea-dhcp6-server.service |
1022 |
@@ -0,0 +1,18 @@ |
1023 |
+[Unit] |
1024 |
+Description=ISC KEA IPv6 DHCP daemon |
1025 |
+Documentation=man:kea-dhcp6(8) |
1026 |
+Wants=network-online.target |
1027 |
+Requires=kea-ctrl-agent.service |
1028 |
+After=network-online.target mariadb.service mysql.service |
1029 |
+ |
1030 |
+[Service] |
1031 |
+User=dhcp |
1032 |
+Group=dhcp |
1033 |
+RuntimeDirectory=kea |
1034 |
+Environment="KEA_PIDFILE_DIR=/run/kea" |
1035 |
+Environment="KEA_LOCKFILE_DIR=/run/lock/kea" |
1036 |
+ExecStart=/usr/local/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf |
1037 |
+Restart=always |
1038 |
+ |
1039 |
+[Install] |
1040 |
+WantedBy=multi-user.target |
1041 |
|
1042 |
diff --git a/net-misc/kea/files/kea-dhcp6.conf b/net-misc/kea/files/kea-dhcp6.conf |
1043 |
new file mode 100644 |
1044 |
index 00000000000..e52e6305b88 |
1045 |
--- /dev/null |
1046 |
+++ b/net-misc/kea/files/kea-dhcp6.conf |
1047 |
@@ -0,0 +1,420 @@ |
1048 |
+// This is a basic configuration for the Kea DHCPv6 server. Subnet declarations |
1049 |
+// are mostly commented out and no interfaces are listed. Therefore, the servers |
1050 |
+// will not listen or respond to any queries. |
1051 |
+// The basic configuration must be extended to specify interfaces on which |
1052 |
+// the servers should listen. There are a number of example options defined. |
1053 |
+// These probably don't make any sense in your network. Make sure you at least |
1054 |
+// update the following, before running this example in your network: |
1055 |
+// - change the network interface names |
1056 |
+// - change the subnets to match your actual network |
1057 |
+// - change the option values to match your network |
1058 |
+// |
1059 |
+// This is just a very basic configuration. Kea comes with large suite (over 30) |
1060 |
+// of configuration examples and extensive Kea User's Guide. Please refer to |
1061 |
+// those materials to get better understanding of what this software is able to |
1062 |
+// do. Comments in this configuration file sometimes refer to sections for more |
1063 |
+// details. These are section numbers in Kea User's Guide. The version matching |
1064 |
+// your software should come with your Kea package, but it is also available |
1065 |
+// in ISC's Knowledgebase (https://kea.readthedocs.io; the direct link for |
1066 |
+// the stable version is https://kea.readthedocs.io/). |
1067 |
+// |
1068 |
+// This configuration file contains only DHCPv6 server's configuration. |
1069 |
+// If configurations for other Kea services are also included in this file they |
1070 |
+// are ignored by the DHCPv6 server. |
1071 |
+{ |
1072 |
+ |
1073 |
+// DHCPv6 configuration starts here. This section will be read by DHCPv6 server |
1074 |
+// and will be ignored by other components. |
1075 |
+"Dhcp6": { |
1076 |
+ // Add names of your network interfaces to listen on. |
1077 |
+ "interfaces-config": { |
1078 |
+ // You typically want to put specific interface names here, e.g. eth0 |
1079 |
+ // but you can also specify unicast addresses (e.g. eth0/2001:db8::1) if |
1080 |
+ // you want your server to handle unicast traffic in addition to |
1081 |
+ // multicast. (DHCPv6 is a multicast based protocol). |
1082 |
+ "interfaces": [ ] |
1083 |
+ }, |
1084 |
+ |
1085 |
+ // Kea supports control channel, which is a way to receive management commands |
1086 |
+ // while the server is running. This is a Unix domain socket that receives |
1087 |
+ // commands formatted in JSON, e.g. config-set (which sets new configuration), |
1088 |
+ // config-reload (which tells Kea to reload its configuration from file), |
1089 |
+ // statistic-get (to retrieve statistics) and many more. For detailed |
1090 |
+ // description, see Sections 9.12, 16 and 15. |
1091 |
+ "control-socket": { |
1092 |
+ "socket-type": "unix", |
1093 |
+ "socket-name": "/run/kea/kea6-ctrl-socket" |
1094 |
+ }, |
1095 |
+ |
1096 |
+ // Use Memfile lease database backend to store leases in a CSV file. |
1097 |
+ // Depending on how Kea was compiled, it may also support SQL databases |
1098 |
+ // (MySQL and/or PostgreSQL) and even Cassandra. Those database backends |
1099 |
+ // require more parameters, like name, host and possibly user and password. |
1100 |
+ // There are dedicated examples for each backend. See Section 8.2.2 "Lease |
1101 |
+ // Storage" for details. |
1102 |
+ "lease-database": { |
1103 |
+ // Memfile is the simplest and easiest backend to use. It's an in-memory |
1104 |
+ // C++ database that stores its state in CSV file. |
1105 |
+ "type": "memfile", |
1106 |
+ "lfc-interval": 3600 |
1107 |
+ }, |
1108 |
+ |
1109 |
+ // Kea allows storing host reservations in a database. If your network is |
1110 |
+ // small or you have few reservations, it's probably easier to keep them |
1111 |
+ // in the configuration file. If your network is large, it's usually better |
1112 |
+ // to use database for it. To enable it, uncomment the following: |
1113 |
+ // "hosts-database": { |
1114 |
+ // "type": "mysql", |
1115 |
+ // "name": "kea", |
1116 |
+ // "user": "kea", |
1117 |
+ // "password": "kea", |
1118 |
+ // "host": "localhost", |
1119 |
+ // "port": 3306 |
1120 |
+ // }, |
1121 |
+ // See Section 8.2.3 "Hosts storage" for details. |
1122 |
+ |
1123 |
+ // Setup reclamation of the expired leases and leases affinity. |
1124 |
+ // Expired leases will be reclaimed every 10 seconds. Every 25 |
1125 |
+ // seconds reclaimed leases, which have expired more than 3600 |
1126 |
+ // seconds ago, will be removed. The limits for leases reclamation |
1127 |
+ // are 100 leases or 250 ms for a single cycle. A warning message |
1128 |
+ // will be logged if there are still expired leases in the |
1129 |
+ // database after 5 consecutive reclamation cycles. |
1130 |
+ "expired-leases-processing": { |
1131 |
+ "reclaim-timer-wait-time": 10, |
1132 |
+ "flush-reclaimed-timer-wait-time": 25, |
1133 |
+ "hold-reclaimed-time": 3600, |
1134 |
+ "max-reclaim-leases": 100, |
1135 |
+ "max-reclaim-time": 250, |
1136 |
+ "unwarned-reclaim-cycles": 5 |
1137 |
+ }, |
1138 |
+ |
1139 |
+ // These parameters govern global timers. Addresses will be assigned with |
1140 |
+ // preferred and valid lifetimes being 3000 and 4000, respectively. Client |
1141 |
+ // is told to start renewing after 1000 seconds. If the server does not |
1142 |
+ // respond after 2000 seconds since the lease was granted, a client is |
1143 |
+ // supposed to start REBIND procedure (emergency renewal that allows |
1144 |
+ // switching to a different server). |
1145 |
+ "renew-timer": 1000, |
1146 |
+ "rebind-timer": 2000, |
1147 |
+ "preferred-lifetime": 3000, |
1148 |
+ "valid-lifetime": 4000, |
1149 |
+ |
1150 |
+ // These are global options. They are going to be sent when a client requests |
1151 |
+ // them, unless overwritten with values in more specific scopes. The scope |
1152 |
+ // hierarchy is: |
1153 |
+ // - global |
1154 |
+ // - subnet |
1155 |
+ // - class |
1156 |
+ // - host |
1157 |
+ // |
1158 |
+ // Not all of those options make sense. Please configure only those that |
1159 |
+ // are actually useful in your network. |
1160 |
+ // |
1161 |
+ // For a complete list of options currently supported by Kea, see |
1162 |
+ // Section 8.2.9 "Standard DHCPv6 Options". Kea also supports |
1163 |
+ // vendor options (see Section 7.2.10) and allows users to define their |
1164 |
+ // own custom options (see Section 7.2.9). |
1165 |
+ "option-data": [ |
1166 |
+ // When specifying options, you typically need to specify |
1167 |
+ // one of (name or code) and data. The full option specification |
1168 |
+ // covers name, code, space, csv-format and data. |
1169 |
+ // space defaults to "dhcp6" which is usually correct, unless you |
1170 |
+ // use encapsulate options. csv-format defaults to "true", so |
1171 |
+ // this is also correct, unless you want to specify the whole |
1172 |
+ // option value as long hex string. For example, to specify |
1173 |
+ // domain-name-servers you could do this: |
1174 |
+ // { |
1175 |
+ // "name": "dns-servers", |
1176 |
+ // "code": 23, |
1177 |
+ // "csv-format": "true", |
1178 |
+ // "space": "dhcp6", |
1179 |
+ // "data": "2001:db8:2::45, 2001:db8:2::100" |
1180 |
+ // } |
1181 |
+ // but it's a lot of writing, so it's easier to do this instead: |
1182 |
+ { |
1183 |
+ "name": "dns-servers", |
1184 |
+ "data": "2001:db8:2::45, 2001:db8:2::100" |
1185 |
+ }, |
1186 |
+ |
1187 |
+ // Typically people prefer to refer to options by their names, so they |
1188 |
+ // don't need to remember the code names. However, some people like |
1189 |
+ // to use numerical values. For example, DHCPv6 can optionally use |
1190 |
+ // server unicast communication, if extra option is present. Option |
1191 |
+ // "unicast" uses option code 12, so you can reference to it either |
1192 |
+ // by "name": "unicast" or "code": 12. If you enable this option, |
1193 |
+ // you really should also tell the server to listen on that address |
1194 |
+ // (see interfaces-config/interfaces list above). |
1195 |
+ { |
1196 |
+ "code": 12, |
1197 |
+ "data": "2001:db8::1" |
1198 |
+ }, |
1199 |
+ |
1200 |
+ // String options that have a comma in their values need to have |
1201 |
+ // it escaped (i.e. each comma is preceded by two backslashes). |
1202 |
+ // That's because commas are reserved for separating fields in |
1203 |
+ // compound options. At the same time, we need to be conformant |
1204 |
+ // with JSON spec, that does not allow "\,". Therefore the |
1205 |
+ // slightly uncommon double backslashes notation is needed. |
1206 |
+ |
1207 |
+ // Legal JSON escapes are \ followed by "\/bfnrt character |
1208 |
+ // or \u followed by 4 hexadecimal numbers (currently Kea |
1209 |
+ // supports only \u0000 to \u00ff code points). |
1210 |
+ // CSV processing translates '\\' into '\' and '\,' into ',' |
1211 |
+ // only so for instance '\x' is translated into '\x'. But |
1212 |
+ // as it works on a JSON string value each of these '\' |
1213 |
+ // characters must be doubled on JSON input. |
1214 |
+ { |
1215 |
+ "name": "new-posix-timezone", |
1216 |
+ "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00" |
1217 |
+ }, |
1218 |
+ |
1219 |
+ // Options that take integer values can either be specified in |
1220 |
+ // dec or hex format. Hex format could be either plain (e.g. abcd) |
1221 |
+ // or prefixed with 0x (e.g. 0xabcd). |
1222 |
+ { |
1223 |
+ "name": "preference", |
1224 |
+ "data": "0xf0" |
1225 |
+ }, |
1226 |
+ |
1227 |
+ // A few options are encoded in (length, string) tuples |
1228 |
+ // which can be defined using only strings as the CSV |
1229 |
+ // processing computes lengths. |
1230 |
+ { |
1231 |
+ "name": "bootfile-param", |
1232 |
+ "data": "root=/dev/sda2, quiet, splash" |
1233 |
+ } |
1234 |
+ ], |
1235 |
+ |
1236 |
+ // Another thing possible here are hooks. Kea supports a powerful mechanism |
1237 |
+ // that allows loading external libraries that can extract information and |
1238 |
+ // even influence how the server processes packets. Those libraries include |
1239 |
+ // additional forensic logging capabilities, ability to reserve hosts in |
1240 |
+ // more flexible ways, and even add extra commands. For a list of available |
1241 |
+ // hook libraries, see https://gitlab.isc.org/isc-projects/kea/wikis/Hooks-available. |
1242 |
+ // "hooks-libraries": [ |
1243 |
+ // { |
1244 |
+ // // Forensic Logging library generates forensic type of audit trail |
1245 |
+ // // of all devices serviced by Kea, including their identifiers |
1246 |
+ // // (like MAC address), their location in the network, times |
1247 |
+ // // when they were active etc. |
1248 |
+ // "library": "@libdir@/kea/hooks/libdhcp_legal_log.so", |
1249 |
+ // "parameters": { |
1250 |
+ // "path": "/var/lib/kea", |
1251 |
+ // "base-name": "kea-forensic6" |
1252 |
+ // } |
1253 |
+ // }, |
1254 |
+ // { |
1255 |
+ // // Flexible identifier (flex-id). Kea software provides a way to |
1256 |
+ // // handle host reservations that include addresses, prefixes, |
1257 |
+ // // options, client classes and other features. The reservation can |
1258 |
+ // // be based on hardware address, DUID, circuit-id or client-id in |
1259 |
+ // // DHCPv4 and using hardware address or DUID in DHCPv6. However, |
1260 |
+ // // there are sometimes scenario where the reservation is more |
1261 |
+ // // complex, e.g. uses other options that mentioned above, uses part |
1262 |
+ // // of specific options or perhaps even a combination of several |
1263 |
+ // // options and fields to uniquely identify a client. Those scenarios |
1264 |
+ // // are addressed by the Flexible Identifiers hook application. |
1265 |
+ // "library": "@libdir@/kea/hooks/libdhcp_flex_id.so", |
1266 |
+ // "parameters": { |
1267 |
+ // "identifier-expression": "relay6[0].option[37].hex" |
1268 |
+ // } |
1269 |
+ // } |
1270 |
+ // ], |
1271 |
+ |
1272 |
+ // Below an example of a simple IPv6 subnet declaration. Uncomment to enable |
1273 |
+ // it. This is a list, denoted with [ ], of structures, each denoted with |
1274 |
+ // { }. Each structure describes a single subnet and may have several |
1275 |
+ // parameters. One of those parameters is "pools" that is also a list of |
1276 |
+ // structures. |
1277 |
+ "subnet6": [ |
1278 |
+ { |
1279 |
+ // This defines the whole subnet. Kea will use this information to |
1280 |
+ // determine where the clients are connected. This is the whole |
1281 |
+ // subnet in your network. This is mandatory parameter for each |
1282 |
+ // subnet. |
1283 |
+ "subnet": "2001:db8:1::/64", |
1284 |
+ |
1285 |
+ // Pools define the actual part of your subnet that is governed |
1286 |
+ // by Kea. Technically this is optional parameter, but it's |
1287 |
+ // almost always needed for DHCP to do its job. If you omit it, |
1288 |
+ // clients won't be able to get addresses, unless there are |
1289 |
+ // host reservations defined for them. |
1290 |
+ "pools": [ { "pool": "2001:db8:1::/80" } ], |
1291 |
+ |
1292 |
+ // Kea supports prefix delegation (PD). This mechanism delegates |
1293 |
+ // whole prefixes, instead of single addresses. You need to specify |
1294 |
+ // a prefix and then size of the delegated prefixes that it will |
1295 |
+ // be split into. This example below tells Kea to use |
1296 |
+ // 2001:db8:1::/56 prefix as pool and split it into /64 prefixes. |
1297 |
+ // This will give you 256 (2^(64-56)) prefixes. |
1298 |
+ "pd-pools": [ |
1299 |
+ { |
1300 |
+ "prefix": "2001:db8:8::", |
1301 |
+ "prefix-len": 56, |
1302 |
+ "delegated-len": 64 |
1303 |
+ |
1304 |
+ // Kea also supports excluded prefixes. This advanced option |
1305 |
+ // is explained in Section 9.2.9. Please make sure your |
1306 |
+ // excluded prefix matches the pool it is defined in. |
1307 |
+ // "excluded-prefix": "2001:db8:8:0:80::", |
1308 |
+ // "excluded-prefix-len": 72 |
1309 |
+ } |
1310 |
+ ], |
1311 |
+ "option-data": [ |
1312 |
+ // You can specify additional options here that are subnet |
1313 |
+ // specific. Also, you can override global options here. |
1314 |
+ { |
1315 |
+ "name": "dns-servers", |
1316 |
+ "data": "2001:db8:2::dead:beef, 2001:db8:2::cafe:babe" |
1317 |
+ } |
1318 |
+ ], |
1319 |
+ |
1320 |
+ // Host reservations can be defined for each subnet. |
1321 |
+ // |
1322 |
+ // Note that reservations are subnet-specific in Kea. This is |
1323 |
+ // different than ISC DHCP. Keep that in mind when migrating |
1324 |
+ // your configurations. |
1325 |
+ "reservations": [ |
1326 |
+ // This is a simple host reservation. The host with DUID matching |
1327 |
+ // the specified value will get an address of 2001:db8:1::100. |
1328 |
+ { |
1329 |
+ "duid": "01:02:03:04:05:0A:0B:0C:0D:0E", |
1330 |
+ "ip-addresses": [ "2001:db8:1::100" ] |
1331 |
+ }, |
1332 |
+ |
1333 |
+ // This is similar to the previous one, but this time the |
1334 |
+ // reservation is done based on hardware/MAC address. The server |
1335 |
+ // will do its best to extract the hardware/MAC address from |
1336 |
+ // received packets (see 'mac-sources' directive for |
1337 |
+ // details). This particular reservation also specifies two |
1338 |
+ // extra options to be available for this client. If there are |
1339 |
+ // options with the same code specified in a global, subnet or |
1340 |
+ // class scope, the values defined at host level take |
1341 |
+ // precedence. |
1342 |
+ { |
1343 |
+ "hw-address": "00:01:02:03:04:05", |
1344 |
+ "ip-addresses": [ "2001:db8:1::101" ], |
1345 |
+ "option-data": [ |
1346 |
+ { |
1347 |
+ "name": "dns-servers", |
1348 |
+ "data": "3000:1::234" |
1349 |
+ }, |
1350 |
+ { |
1351 |
+ "name": "nis-servers", |
1352 |
+ "data": "3000:1::234" |
1353 |
+ }], |
1354 |
+ |
1355 |
+ // This client will be automatically added to certain |
1356 |
+ // classes. |
1357 |
+ "client-classes": [ "special_snowflake", "office" ] |
1358 |
+ }, |
1359 |
+ |
1360 |
+ // This is a bit more advanced reservation. The client with the |
1361 |
+ // specified DUID will get a reserved address, a reserved prefix |
1362 |
+ // and a hostname. This reservation is for an address that it |
1363 |
+ // not within the dynamic pool. Finally, this reservation |
1364 |
+ // features vendor specific options for CableLabs, which happen |
1365 |
+ // to use enterprise-id 4491. Those particular values will be |
1366 |
+ // returned only to the client that has a DUID matching this |
1367 |
+ // reservation. |
1368 |
+ { |
1369 |
+ "duid": "01:02:03:04:05:06:07:08:09:0A", |
1370 |
+ "ip-addresses": [ "2001:db8:1:0:cafe::1" ], |
1371 |
+ "prefixes": [ "2001:db8:2:abcd::/64" ], |
1372 |
+ "hostname": "foo.example.com", |
1373 |
+ "option-data": [ |
1374 |
+ { |
1375 |
+ "name": "vendor-opts", |
1376 |
+ "data": "4491" |
1377 |
+ }, |
1378 |
+ { |
1379 |
+ "name": "tftp-servers", |
1380 |
+ "space": "vendor-4491", |
1381 |
+ "data": "3000:1::234" |
1382 |
+ } |
1383 |
+ ] |
1384 |
+ }, |
1385 |
+ |
1386 |
+ // This reservation is using flexible identifier. Instead of |
1387 |
+ // relying on specific field, sysadmin can define an expression |
1388 |
+ // similar to what is used for client classification, |
1389 |
+ // e.g. substring(relay[0].option[17],0,6). Then, based on the |
1390 |
+ // value of that expression for incoming packet, the reservation |
1391 |
+ // is matched. Expression can be specified either as hex or |
1392 |
+ // plain text using single quotes. |
1393 |
+ |
1394 |
+ // Note: flexible identifier requires flex_id hook library to be |
1395 |
+ // loaded to work. |
1396 |
+ { |
1397 |
+ "flex-id": "'somevalue'", |
1398 |
+ "ip-addresses": [ "2001:db8:1:0:cafe::2" ] |
1399 |
+ } |
1400 |
+ ] |
1401 |
+ } |
1402 |
+ // More subnets can be defined here. |
1403 |
+ // { |
1404 |
+ // "subnet": "2001:db8:2::/64", |
1405 |
+ // "pools": [ { "pool": "2001:db8:2::/80" } ] |
1406 |
+ // }, |
1407 |
+ // { |
1408 |
+ // "subnet": "2001:db8:3::/64", |
1409 |
+ // "pools": [ { "pool": "2001:db8:3::/80" } ] |
1410 |
+ // }, |
1411 |
+ // { |
1412 |
+ // "subnet": "2001:db8:4::/64", |
1413 |
+ // "pools": [ { "pool": "2001:db8:4::/80" } ] |
1414 |
+ // } |
1415 |
+ ], |
1416 |
+ |
1417 |
+ // Client-classes can be defined here. See "client-classes" in Dhcp4 for |
1418 |
+ // an example. |
1419 |
+ |
1420 |
+ // DDNS information (how the DHCPv6 component can reach a DDNS daemon) |
1421 |
+ |
1422 |
+ // Logging configuration starts here. Kea uses different loggers to log various |
1423 |
+ // activities. For details (e.g. names of loggers), see Chapter 18. |
1424 |
+ "loggers": [ |
1425 |
+ { |
1426 |
+ // This specifies the logging for kea-dhcp6 logger, i.e. all logs |
1427 |
+ // generated by Kea DHCPv6 server. |
1428 |
+ "name": "kea-dhcp6", |
1429 |
+ "output_options": [ |
1430 |
+ { |
1431 |
+ // Specifies the output file. There are several special values |
1432 |
+ // supported: |
1433 |
+ // - stdout (prints on standard output) |
1434 |
+ // - stderr (prints on standard error) |
1435 |
+ // - syslog (logs to syslog) |
1436 |
+ // - syslog:name (logs to syslog using specified name) |
1437 |
+ // Any other value is considered a name of the file |
1438 |
+ "output": "@localstatedir@/log/kea/kea-dhcp6.log" |
1439 |
+ |
1440 |
+ // Shorter log pattern suitable for use with systemd, |
1441 |
+ // avoids redundant information |
1442 |
+ // "pattern": "%-5p %m\n" |
1443 |
+ |
1444 |
+ // This governs whether the log output is flushed to disk after |
1445 |
+ // every write. |
1446 |
+ // "flush": false, |
1447 |
+ |
1448 |
+ // This specifies the maximum size of the file before it is |
1449 |
+ // rotated. |
1450 |
+ // "maxsize": 1048576, |
1451 |
+ |
1452 |
+ // This specifies the maximum number of rotated files to keep. |
1453 |
+ // "maxver": 8 |
1454 |
+ } |
1455 |
+ ], |
1456 |
+ // This specifies the severity of log messages to keep. Supported values |
1457 |
+ // are: FATAL, ERROR, WARN, INFO, DEBUG |
1458 |
+ "severity": "INFO", |
1459 |
+ |
1460 |
+ // If DEBUG level is specified, this value is used. 0 is least verbose, |
1461 |
+ // 99 is most verbose. Be cautious, Kea can generate lots and lots |
1462 |
+ // of logs if told to do so. |
1463 |
+ "debuglevel": 0 |
1464 |
+ } |
1465 |
+ ] |
1466 |
+} |
1467 |
+} |
1468 |
|
1469 |
diff --git a/net-misc/kea/files/kea.tmpfiles.conf b/net-misc/kea/files/kea.tmpfiles.conf |
1470 |
new file mode 100644 |
1471 |
index 00000000000..00423b07cfc |
1472 |
--- /dev/null |
1473 |
+++ b/net-misc/kea/files/kea.tmpfiles.conf |
1474 |
@@ -0,0 +1,2 @@ |
1475 |
+d /run/kea 0750 dhcp dhcp - |
1476 |
+d /run/lock/kea 0750 dhcp dhcp - |
1477 |
|
1478 |
diff --git a/net-misc/kea/kea-1.8.2-r1.ebuild b/net-misc/kea/kea-1.8.2-r1.ebuild |
1479 |
new file mode 100644 |
1480 |
index 00000000000..7da321e5b81 |
1481 |
--- /dev/null |
1482 |
+++ b/net-misc/kea/kea-1.8.2-r1.ebuild |
1483 |
@@ -0,0 +1,112 @@ |
1484 |
+# Copyright 1999-2021 Gentoo Authors |
1485 |
+# Distributed under the terms of the GNU General Public License v2 |
1486 |
+ |
1487 |
+EAPI=7 |
1488 |
+ |
1489 |
+MY_PV="${PV//_p/-P}" |
1490 |
+MY_PV="${MY_PV/_/-}" |
1491 |
+MY_P="${PN}-${MY_PV}" |
1492 |
+ |
1493 |
+DESCRIPTION="High-performance production grade DHCPv4 & DHCPv6 server" |
1494 |
+HOMEPAGE="http://www.isc.org/kea/" |
1495 |
+ |
1496 |
+inherit autotools systemd tmpfiles |
1497 |
+ |
1498 |
+if [[ ${PV} = 9999* ]] ; then |
1499 |
+ inherit git-r3 |
1500 |
+ EGIT_REPO_URI="https://github.com/isc-projects/kea.git" |
1501 |
+else |
1502 |
+ SRC_URI="ftp://ftp.isc.org/isc/kea/${MY_P}.tar.gz |
1503 |
+ ftp://ftp.isc.org/isc/kea/${MY_PV}/${MY_P}.tar.gz" |
1504 |
+ [[ "${PV}" == *_beta* ]] || [[ "${PV}" == *_rc* ]] || \ |
1505 |
+ KEYWORDS="~amd64 ~arm64 ~x86" |
1506 |
+fi |
1507 |
+ |
1508 |
+LICENSE="ISC BSD SSLeay GPL-2" # GPL-2 only for init script |
1509 |
+SLOT="0" |
1510 |
+IUSE="mysql +openssl postgres +samples test" |
1511 |
+RESTRICT="!test? ( test )" |
1512 |
+ |
1513 |
+COMMON_DEPEND=" |
1514 |
+ dev-libs/boost:= |
1515 |
+ dev-libs/log4cplus |
1516 |
+ mysql? ( dev-db/mysql-connector-c ) |
1517 |
+ !openssl? ( dev-libs/botan:2= ) |
1518 |
+ openssl? ( dev-libs/openssl:0= ) |
1519 |
+ postgres? ( dev-db/postgresql:* ) |
1520 |
+" |
1521 |
+DEPEND="${COMMON_DEPEND} |
1522 |
+ test? ( dev-cpp/gtest )" |
1523 |
+RDEPEND="${COMMON_DEPEND} |
1524 |
+ acct-group/dhcp |
1525 |
+ acct-user/dhcp" |
1526 |
+BDEPEND="virtual/pkgconfig" |
1527 |
+ |
1528 |
+S="${WORKDIR}/${MY_P}" |
1529 |
+ |
1530 |
+PATCHES=( |
1531 |
+ "${FILESDIR}"/${PN}-1.8.2-fix-cxx11-detection.patch |
1532 |
+ "${FILESDIR}"/${PN}-1.8.2-boost-1.77.0.patch |
1533 |
+ "${FILESDIR}"/${PN}-1.8.2-gtest.patch |
1534 |
+) |
1535 |
+ |
1536 |
+src_prepare() { |
1537 |
+ default |
1538 |
+ # Brand the version with Gentoo |
1539 |
+ sed -i \ |
1540 |
+ -e "s/AC_INIT(kea,${PV}.*, kea-dev@×××××××××.org)/AC_INIT(kea,${PVR}-gentoo, kea-dev@×××××××××.org)/g" \ |
1541 |
+ configure.ac || die |
1542 |
+ |
1543 |
+ sed -i \ |
1544 |
+ -e '/mkdir -p $(DESTDIR)${runstatedir}\/${PACKAGE_NAME}/d' \ |
1545 |
+ Makefile.am || die "Fixing Makefile.am failed" |
1546 |
+ |
1547 |
+ eautoreconf |
1548 |
+} |
1549 |
+ |
1550 |
+src_configure() { |
1551 |
+ local myeconfargs=( |
1552 |
+ --disable-install-configurations |
1553 |
+ --disable-static |
1554 |
+ --enable-perfdhcp |
1555 |
+ --localstatedir="${EPREFIX}/var" |
1556 |
+ --runstatedir="${EPREFIX}/run" |
1557 |
+ --without-werror |
1558 |
+ $(use_with mysql) |
1559 |
+ $(use_with openssl) |
1560 |
+ $(use_with postgres pgsql) |
1561 |
+ $(use_enable test gtest) |
1562 |
+ ) |
1563 |
+ econf "${myeconfargs[@]}" |
1564 |
+} |
1565 |
+ |
1566 |
+src_install() { |
1567 |
+ default |
1568 |
+ newconfd "${FILESDIR}"/${PN}-confd-r1 ${PN} |
1569 |
+ newinitd "${FILESDIR}"/${PN}-initd-r1 ${PN} |
1570 |
+ |
1571 |
+ if use samples; then |
1572 |
+ diropts -m 0750 -o root -g dhcp |
1573 |
+ dodir /etc/kea |
1574 |
+ insopts -m 0640 -o root -g dhcp |
1575 |
+ insinto /etc/kea |
1576 |
+ doins "${FILESDIR}"/${PN}-ctrl-agent.conf |
1577 |
+ doins "${FILESDIR}"/${PN}-ddns-server.conf |
1578 |
+ doins "${FILESDIR}"/${PN}-dhcp4.conf |
1579 |
+ doins "${FILESDIR}"/${PN}-dhcp6.conf |
1580 |
+ fi |
1581 |
+ |
1582 |
+ systemd_dounit "${FILESDIR}"/${PN}-ctrl-agent.service |
1583 |
+ systemd_dounit "${FILESDIR}"/${PN}-ddns-server.service |
1584 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp4-server.service |
1585 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp6-server.service |
1586 |
+ |
1587 |
+ newtmpfiles "${FILESDIR}"/${PN}.tmpfiles.conf ${PN}.conf |
1588 |
+ |
1589 |
+ keepdir /var/lib/${PN} /var/log/${PN} |
1590 |
+ find "${ED}" -type f -name "*.la" -delete || die |
1591 |
+} |
1592 |
+ |
1593 |
+pkg_postinst() { |
1594 |
+ tmpfiles_process ${PN}.conf |
1595 |
+} |
1596 |
|
1597 |
diff --git a/net-misc/kea/kea-1.9.10-r1.ebuild b/net-misc/kea/kea-1.9.10-r1.ebuild |
1598 |
new file mode 100644 |
1599 |
index 00000000000..7a7f2838d8c |
1600 |
--- /dev/null |
1601 |
+++ b/net-misc/kea/kea-1.9.10-r1.ebuild |
1602 |
@@ -0,0 +1,111 @@ |
1603 |
+# Copyright 1999-2021 Gentoo Authors |
1604 |
+# Distributed under the terms of the GNU General Public License v2 |
1605 |
+ |
1606 |
+EAPI=7 |
1607 |
+ |
1608 |
+MY_PV="${PV//_p/-P}" |
1609 |
+MY_PV="${MY_PV/_/-}" |
1610 |
+MY_P="${PN}-${MY_PV}" |
1611 |
+ |
1612 |
+DESCRIPTION="High-performance production grade DHCPv4 & DHCPv6 server" |
1613 |
+HOMEPAGE="http://www.isc.org/kea/" |
1614 |
+ |
1615 |
+inherit autotools systemd tmpfiles |
1616 |
+ |
1617 |
+if [[ ${PV} = 9999* ]] ; then |
1618 |
+ inherit git-r3 |
1619 |
+ EGIT_REPO_URI="https://github.com/isc-projects/kea.git" |
1620 |
+else |
1621 |
+ SRC_URI="ftp://ftp.isc.org/isc/kea/${MY_P}.tar.gz |
1622 |
+ ftp://ftp.isc.org/isc/kea/${MY_PV}/${MY_P}.tar.gz" |
1623 |
+ [[ "${PV}" == *_beta* ]] || [[ "${PV}" == *_rc* ]] || \ |
1624 |
+ KEYWORDS="~amd64 ~arm64 ~x86" |
1625 |
+fi |
1626 |
+ |
1627 |
+LICENSE="ISC BSD SSLeay GPL-2" # GPL-2 only for init script |
1628 |
+SLOT="0" |
1629 |
+IUSE="mysql +openssl postgres +samples test" |
1630 |
+RESTRICT="!test? ( test )" |
1631 |
+ |
1632 |
+COMMON_DEPEND=" |
1633 |
+ dev-libs/boost:= |
1634 |
+ dev-libs/log4cplus |
1635 |
+ mysql? ( dev-db/mysql-connector-c ) |
1636 |
+ !openssl? ( dev-libs/botan:2= ) |
1637 |
+ openssl? ( dev-libs/openssl:0= ) |
1638 |
+ postgres? ( dev-db/postgresql:* )" |
1639 |
+DEPEND="${COMMON_DEPEND} |
1640 |
+ test? ( dev-cpp/gtest ) |
1641 |
+" |
1642 |
+RDEPEND="${COMMON_DEPEND} |
1643 |
+ acct-group/dhcp |
1644 |
+ acct-user/dhcp" |
1645 |
+BDEPEND="virtual/pkgconfig" |
1646 |
+ |
1647 |
+S="${WORKDIR}/${MY_P}" |
1648 |
+ |
1649 |
+PATCHES=( |
1650 |
+ "${FILESDIR}"/${PN}-1.8.2-boost-1.77.0.patch |
1651 |
+ "${FILESDIR}"/${PN}-1.9.10-gtest.patch |
1652 |
+) |
1653 |
+ |
1654 |
+src_prepare() { |
1655 |
+ default |
1656 |
+ # Brand the version with Gentoo |
1657 |
+ sed -i \ |
1658 |
+ -e "s/AC_INIT(kea,${PV}.*, kea-dev@×××××××××.org)/AC_INIT(kea,${PVR}-gentoo, kea-dev@×××××××××.org)/g" \ |
1659 |
+ configure.ac || die |
1660 |
+ |
1661 |
+ sed -i \ |
1662 |
+ -e '/mkdir -p $(DESTDIR)${runstatedir}\/${PACKAGE_NAME}/d' \ |
1663 |
+ Makefile.am || die "Fixing Makefile.am failed" |
1664 |
+ |
1665 |
+ eautoreconf |
1666 |
+} |
1667 |
+ |
1668 |
+src_configure() { |
1669 |
+ local myeconfargs=( |
1670 |
+ --disable-install-configurations |
1671 |
+ --disable-static |
1672 |
+ --enable-perfdhcp |
1673 |
+ --localstatedir="${EPREFIX}/var" |
1674 |
+ --runstatedir="${EPREFIX}/run" |
1675 |
+ --without-werror |
1676 |
+ $(use_with mysql) |
1677 |
+ $(use_with openssl) |
1678 |
+ $(use_with postgres pgsql) |
1679 |
+ $(use_enable test gtest) |
1680 |
+ ) |
1681 |
+ econf "${myeconfargs[@]}" |
1682 |
+} |
1683 |
+ |
1684 |
+src_install() { |
1685 |
+ default |
1686 |
+ newconfd "${FILESDIR}"/${PN}-confd-r1 ${PN} |
1687 |
+ newinitd "${FILESDIR}"/${PN}-initd-r1 ${PN} |
1688 |
+ |
1689 |
+ if use samples; then |
1690 |
+ diropts -m 0750 -o root -g dhcp |
1691 |
+ dodir /etc/kea |
1692 |
+ insopts -m 0640 -o root -g dhcp |
1693 |
+ insinto /etc/kea |
1694 |
+ doins "${FILESDIR}"/${PN}-ctrl-agent.conf |
1695 |
+ doins "${FILESDIR}"/${PN}-ddns-server.conf |
1696 |
+ doins "${FILESDIR}"/${PN}-dhcp4.conf |
1697 |
+ doins "${FILESDIR}"/${PN}-dhcp6.conf |
1698 |
+ fi |
1699 |
+ |
1700 |
+ systemd_dounit "${FILESDIR}"/${PN}-ctrl-agent.service |
1701 |
+ systemd_dounit "${FILESDIR}"/${PN}-ddns-server.service |
1702 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp4-server.service |
1703 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp6-server.service |
1704 |
+ |
1705 |
+ newtmpfiles "${FILESDIR}"/${PN}.tmpfiles.conf ${PN}.conf |
1706 |
+ |
1707 |
+ keepdir /var/lib/${PN} /var/log/${PN} |
1708 |
+ find "${ED}" -type f -name "*.la" -delete || die |
1709 |
+} |
1710 |
+ |
1711 |
+pkg_postinst() { |
1712 |
+ tmpfiles_process ${PN}.conf |
1713 |
+} |
1714 |
|
1715 |
diff --git a/net-misc/kea/kea-9999.ebuild b/net-misc/kea/kea-9999.ebuild |
1716 |
index 444f89b948d..0d9eaa837ee 100644 |
1717 |
--- a/net-misc/kea/kea-9999.ebuild |
1718 |
+++ b/net-misc/kea/kea-9999.ebuild |
1719 |
@@ -9,22 +9,25 @@ MY_P="${PN}-${MY_PV}" |
1720 |
|
1721 |
DESCRIPTION="High-performance production grade DHCPv4 & DHCPv6 server" |
1722 |
HOMEPAGE="http://www.isc.org/kea/" |
1723 |
+ |
1724 |
+inherit autotools systemd tmpfiles |
1725 |
+ |
1726 |
if [[ ${PV} = 9999* ]] ; then |
1727 |
- inherit autotools git-r3 |
1728 |
+ inherit git-r3 |
1729 |
EGIT_REPO_URI="https://github.com/isc-projects/kea.git" |
1730 |
else |
1731 |
- SRC_URI="https://downloads.isc.org/isc/kea/${MY_PV}/${PN}-${MY_PV}.tar.gz" |
1732 |
+ SRC_URI="ftp://ftp.isc.org/isc/kea/${MY_P}.tar.gz |
1733 |
+ ftp://ftp.isc.org/isc/kea/${MY_PV}/${MY_P}.tar.gz" |
1734 |
[[ "${PV}" == *_beta* ]] || [[ "${PV}" == *_rc* ]] || \ |
1735 |
- KEYWORDS="~amd64 ~arm64 ~x86" |
1736 |
+ KEYWORDS="~amd64 ~arm64 ~x86" |
1737 |
fi |
1738 |
|
1739 |
LICENSE="ISC BSD SSLeay GPL-2" # GPL-2 only for init script |
1740 |
SLOT="0" |
1741 |
-IUSE="mysql +openssl postgres samples" |
1742 |
+IUSE="mysql +openssl postgres +samples" |
1743 |
|
1744 |
DEPEND=" |
1745 |
dev-libs/boost:= |
1746 |
- dev-cpp/gtest |
1747 |
dev-libs/log4cplus |
1748 |
mysql? ( dev-db/mysql-connector-c ) |
1749 |
!openssl? ( dev-libs/botan:2= ) |
1750 |
@@ -40,23 +43,29 @@ S="${WORKDIR}/${MY_P}" |
1751 |
|
1752 |
src_prepare() { |
1753 |
default |
1754 |
- [[ ${PV} = *9999 ]] && eautoreconf |
1755 |
# Brand the version with Gentoo |
1756 |
sed -i \ |
1757 |
- -e "/VERSION=/s:'$: Gentoo-${PR}':" \ |
1758 |
- configure || die |
1759 |
+ -e "s/AC_INIT(kea,${PV}.*, kea-dev@×××××××××.org)/AC_INIT(kea,${PVR}-gentoo, kea-dev@×××××××××.org)/g" \ |
1760 |
+ configure.ac || die |
1761 |
+ |
1762 |
+ sed -i \ |
1763 |
+ -e '/mkdir -p $(DESTDIR)${runstatedir}\/${PACKAGE_NAME}/d' \ |
1764 |
+ Makefile.am || die "Fixing Makefile.am failed" |
1765 |
+ |
1766 |
+ eautoreconf |
1767 |
} |
1768 |
|
1769 |
src_configure() { |
1770 |
local myeconfargs=( |
1771 |
+ --disable-install-configurations |
1772 |
--disable-static |
1773 |
--enable-perfdhcp |
1774 |
--localstatedir="${EPREFIX}/var" |
1775 |
+ --runstatedir="${EPREFIX}/run" |
1776 |
--without-werror |
1777 |
$(use_with mysql) |
1778 |
$(use_with openssl) |
1779 |
$(use_with postgres pgsql) |
1780 |
- $(use_enable samples install-configurations) |
1781 |
) |
1782 |
econf "${myeconfargs[@]}" |
1783 |
} |
1784 |
@@ -65,7 +74,29 @@ src_install() { |
1785 |
default |
1786 |
newconfd "${FILESDIR}"/${PN}-confd-r1 ${PN} |
1787 |
newinitd "${FILESDIR}"/${PN}-initd-r1 ${PN} |
1788 |
- keepdir /var/lib/${PN} /var/log |
1789 |
- rm -rf "${ED}"/var/run || die |
1790 |
+ |
1791 |
+ if use samples; then |
1792 |
+ diropts -m 0750 -o root -g dhcp |
1793 |
+ dodir /etc/kea |
1794 |
+ insopts -m 0640 -o root -g dhcp |
1795 |
+ insinto /etc/kea |
1796 |
+ doins "${FILESDIR}"/${PN}-ctrl-agent.conf |
1797 |
+ doins "${FILESDIR}"/${PN}-ddns-server.conf |
1798 |
+ doins "${FILESDIR}"/${PN}-dhcp4.conf |
1799 |
+ doins "${FILESDIR}"/${PN}-dhcp6.conf |
1800 |
+ fi |
1801 |
+ |
1802 |
+ systemd_dounit "${FILESDIR}"/${PN}-ctrl-agent.service |
1803 |
+ systemd_dounit "${FILESDIR}"/${PN}-ddns-server.service |
1804 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp4-server.service |
1805 |
+ systemd_dounit "${FILESDIR}"/${PN}-dhcp6-server.service |
1806 |
+ |
1807 |
+ newtmpfiles "${FILESDIR}"/${PN}.tmpfiles.conf ${PN}.conf |
1808 |
+ |
1809 |
+ keepdir /var/lib/${PN} /var/log/${PN} |
1810 |
find "${ED}" -type f -name "*.la" -delete || die |
1811 |
} |
1812 |
+ |
1813 |
+pkg_postinst() { |
1814 |
+ tmpfiles_process ${PN}.conf |
1815 |
+} |
1816 |
|
1817 |
diff --git a/net-misc/kea/metadata.xml b/net-misc/kea/metadata.xml |
1818 |
index b04fc98d468..f291216f885 100644 |
1819 |
--- a/net-misc/kea/metadata.xml |
1820 |
+++ b/net-misc/kea/metadata.xml |
1821 |
@@ -9,8 +9,18 @@ |
1822 |
<email>chainsaw@g.o</email> |
1823 |
<name>Tony Vroon</name> |
1824 |
</maintainer> |
1825 |
+ <maintainer type="person"> |
1826 |
+ <email>expeditioneer@g.o</email> |
1827 |
+ <name>Dennis Lamm</name> |
1828 |
+ </maintainer> |
1829 |
<use> |
1830 |
<flag name="openssl">Use <pkg>dev-libs/openssl</pkg> instead of <pkg>dev-libs/botan</pkg></flag> |
1831 |
<flag name="samples">Install sample configuration files</flag> |
1832 |
</use> |
1833 |
+ <upstream> |
1834 |
+ <bugs-to>https://gitlab.isc.org/isc-projects/kea/-/issues</bugs-to> |
1835 |
+ <doc>https://kea.readthedocs.io</doc> |
1836 |
+ <remote-id type="cpe">cpe:/a:isc:kea</remote-id> |
1837 |
+ <remote-id type="github">isc-projects/kea</remote-id> |
1838 |
+ </upstream> |
1839 |
</pkgmetadata> |