]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
conf: fix TCP processing detection, refactoring
authorDaniel Salzman <daniel.salzman@nic.cz>
Mon, 19 Jul 2021 19:36:56 +0000 (21:36 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Mon, 19 Jul 2021 19:36:56 +0000 (21:36 +0200)
src/knot/conf/schema.c
src/knot/conf/tools.c
src/knot/conf/tools.h

index 763fdbcd5431e0d2666748506b3dc0dda516ddec..b26ef0a70ecd84df9dac887603c5eee277f15872 100644 (file)
@@ -209,7 +209,7 @@ static const yp_item_t desc_server[] = {
        { C_LISTEN,               YP_TADDR, YP_VADDR = { 53 }, YP_FMULTI, { check_listen } },
        { C_COMMENT,              YP_TSTR,  YP_VNONE },
        // Legacy items.
-       { C_LISTEN_XDP,           YP_TADDR, YP_VADDR = { 53 }, YP_FMULTI, { check_xdp_old } },
+       { C_LISTEN_XDP,           YP_TADDR, YP_VADDR = { 53 }, YP_FMULTI, { check_xdp_listen_old } },
        { C_MAX_TCP_CLIENTS,      YP_TINT,  YP_VINT = { 0, INT32_MAX, YP_NIL } },
        { C_TCP_HSHAKE_TIMEOUT,   YP_TINT,  YP_VINT = { 0, INT32_MAX, 5, YP_STIME } },
        { C_TCP_REPLY_TIMEOUT,    YP_TINT,  YP_VINT = { 0, INT32_MAX, 10, YP_STIME } },
@@ -226,7 +226,7 @@ static const yp_item_t desc_server[] = {
 };
 
 static const yp_item_t desc_xdp[] = {
-       { C_LISTEN,               YP_TADDR, YP_VADDR = { 53 }, YP_FMULTI, { check_xdp } },
+       { C_LISTEN,               YP_TADDR, YP_VADDR = { 53 }, YP_FMULTI, { check_xdp_listen } },
        { C_TCP,                  YP_TBOOL, YP_VNONE },
        { C_TCP_MAX_CLIENTS,      YP_TINT,  YP_VINT = { 0, INT32_MAX, 1000000 } },
        { C_TCP_INBUF_MAX_SIZE,   YP_TINT,  YP_VINT = { MEGA(1), SSIZE_MAX, MEGA(100), YP_SSIZE } },
@@ -456,7 +456,7 @@ const yp_item_t conf_schema[] = {
        { C_MODULE,   YP_TGRP, YP_VGRP = { desc_module }, YP_FMULTI | CONF_IO_FRLD_ALL |
                                                          CONF_IO_FCHECK_ZONES, { load_module } },
        { C_SRV,      YP_TGRP, YP_VGRP = { desc_server }, CONF_IO_FRLD_SRV, { check_server } },
-       { C_XDP,      YP_TGRP, YP_VGRP = { desc_xdp } },
+       { C_XDP,      YP_TGRP, YP_VGRP = { desc_xdp }, CONF_IO_FRLD_SRV, { check_xdp } },
        { C_CTL,      YP_TGRP, YP_VGRP = { desc_control } },
        { C_LOG,      YP_TGRP, YP_VGRP = { desc_log }, YP_FMULTI | CONF_IO_FRLD_LOG },
        { C_STATS,    YP_TGRP, YP_VGRP = { desc_stats }, CONF_IO_FRLD_SRV },
index 94d9aef0030f83a1a99cbc67740b934f3b594c81..f501dd5c0e4971d36e04223f90f8172ecfb60cf8 100644 (file)
@@ -247,7 +247,7 @@ int check_listen(
        return KNOT_EOK;
 }
 
-int check_xdp_old(
+int check_xdp_listen_old(
        knotd_conf_check_args_t *args)
 {
        CONF_LOG(LOG_NOTICE, "option 'server.listen-xdp' is obsolete, "
@@ -256,7 +256,7 @@ int check_xdp_old(
        return KNOT_EOK;
 }
 
-int check_xdp(
+int check_xdp_listen(
        knotd_conf_check_args_t *args)
 {
 #ifndef ENABLE_XDP
@@ -363,7 +363,7 @@ int check_module_id(
        } \
 }
 
-static void check_mtu(knotd_conf_check_args_t *args, conf_val_t *xdp)
+static void check_mtu(knotd_conf_check_args_t *args, conf_val_t *xdp_listen)
 {
 #ifdef ENABLE_XDP
        conf_val_t val = conf_get_txn(args->extra->conf, args->extra->txn,
@@ -389,8 +389,8 @@ static void check_mtu(knotd_conf_check_args_t *args, conf_val_t *xdp)
                         KNOT_XDP_MAX_MTU);
        }
 
-       while (xdp->code == KNOT_EOK) {
-               struct sockaddr_storage addr = conf_addr(xdp, NULL);
+       while (xdp_listen->code == KNOT_EOK) {
+               struct sockaddr_storage addr = conf_addr(xdp_listen, NULL);
                conf_xdp_iface_t iface;
                int ret = conf_xdp_iface(&addr, &iface);
                if (ret != KNOT_EOK) {
@@ -408,7 +408,7 @@ static void check_mtu(knotd_conf_check_args_t *args, conf_val_t *xdp)
                        CONF_LOG(LOG_WARNING, "maximum UDP payload not compatible "
                                              "with MTU of interface %s", iface.name);
                }
-               conf_val_next(xdp);
+               conf_val_next(xdp_listen);
        }
 #endif
 }
@@ -416,19 +416,6 @@ static void check_mtu(knotd_conf_check_args_t *args, conf_val_t *xdp)
 int check_server(
        knotd_conf_check_args_t *args)
 {
-       conf_val_t listen = conf_get_txn(args->extra->conf, args->extra->txn, C_SRV,
-                                        C_LISTEN);
-       conf_val_t xdp = conf_get_txn(args->extra->conf, args->extra->txn, C_XDP,
-                                     C_LISTEN);
-       conf_val_t tcp = conf_get_txn(args->extra->conf, args->extra->txn, C_XDP,
-                                     C_TCP);
-       if (xdp.code == KNOT_EOK) {
-               if (listen.code != KNOT_EOK && tcp.code != KNOT_EOK) {
-                       CONF_LOG(LOG_WARNING, "unavailable TCP processing");
-               }
-               check_mtu(args, &xdp);
-       }
-
        CHECK_LEGACY_NAME(C_SRV, C_TCP_REPLY_TIMEOUT, C_TCP_RMT_IO_TIMEOUT);
        CHECK_LEGACY_NAME(C_SRV, C_MAX_TCP_CLIENTS, C_TCP_MAX_CLIENTS);
        CHECK_LEGACY_NAME(C_SRV, C_MAX_UDP_PAYLOAD, C_UDP_MAX_PAYLOAD);
@@ -438,6 +425,25 @@ int check_server(
        return KNOT_EOK;
 }
 
+int check_xdp(
+       knotd_conf_check_args_t *args)
+{
+       conf_val_t xdp_listen = conf_get_txn(args->extra->conf, args->extra->txn,
+                                            C_XDP, C_LISTEN);
+       conf_val_t srv_listen = conf_get_txn(args->extra->conf, args->extra->txn,
+                                            C_SRV, C_LISTEN);
+       conf_val_t tcp = conf_get_txn(args->extra->conf, args->extra->txn, C_XDP,
+                                     C_TCP);
+       if (xdp_listen.code == KNOT_EOK) {
+               if (srv_listen.code != KNOT_EOK && tcp.code != KNOT_EOK) {
+                       CONF_LOG(LOG_WARNING, "TCP processing not available");
+               }
+               check_mtu(args, &xdp_listen);
+       }
+
+       return KNOT_EOK;
+}
+
 int check_keystore(
        knotd_conf_check_args_t *args)
 {
index c4d9865a237ee269e7685cfa299eaade4e685962..55d5b41755a2ca3b396cec0685093fc3ead1606e 100644 (file)
@@ -70,11 +70,11 @@ int check_listen(
        knotd_conf_check_args_t *args
 );
 
-int check_xdp_old(
+int check_xdp_listen_old(
        knotd_conf_check_args_t *args
 );
 
-int check_xdp(
+int check_xdp_listen(
        knotd_conf_check_args_t *args
 );
 
@@ -90,6 +90,10 @@ int check_server(
        knotd_conf_check_args_t *args
 );
 
+int check_xdp(
+       knotd_conf_check_args_t *args
+);
+
 int check_keystore(
        knotd_conf_check_args_t *args
 );