]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
dbus: add serial to external_verify event
authorJan Hák <jan.hak@nic.cz>
Fri, 3 Oct 2025 08:29:09 +0000 (10:29 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Mon, 6 Oct 2025 07:43:04 +0000 (09:43 +0200)
doc/reference.rst
samples/dbus_client.pl
samples/dbus_client.py
samples/dbus_client.sh
src/knot/common/dbus.c
src/knot/common/dbus.h
src/knot/updates/zone-update.c

index 3f5bd4f86d858c493edd3fd0267d7bb395e80aea..4a1c05c17bd5d48017afb3b6748d17d96f8a88b6 100644 (file)
@@ -653,23 +653,25 @@ the interface name is ``cz.nic.knotd.events``.
 Possible values:
 
 - ``none`` – No signal is emitted.
-- ``running`` – There are two possible signals emitted:
+- ``running`` – Two signals may be emitted:
 
-  - ``started`` when the server is started and all configured zones (including
+  - ``started`` – Emitted when the server is started and all configured zones (including
     catalog zones and their members) are loaded or successfully bootstrapped.
-  - ``stopped`` when the server shutdown sequence is initiated.
-- ``zone-updated`` – The signal ``zone_updated`` is emitted when a zone has been updated;
-  the signal parameters are `zone name` and `zone SOA serial`.
-- ``external-verify`` - The signal ``external_verify`` is emitted when a zone is awaiting
-  external validation before applying the changes; the signal parameter is `zone name`.
-- ``keys-updated`` - The signal ``keys_updated`` is emitted when a DNSSEC key set
-  is updated; the signal parameter is `zone name`.
-- ``ksk-submission`` – The signal ``zone_ksk_submission`` is emitted if there is
-  a ready KSK present when the zone is signed; the signal parameters are
-  `zone name`, `KSK keytag`, and `KSK KASP id`.
+  - ``stopped`` – Emitted when the server shutdown sequence is initiated.
+- ``zone-updated`` – The signal ``zone_updated`` is emitted when a zone has been updated.
+  Parameters: **zone** name and zone SOA **serial**.
+- ``external-verify`` – The signal ``external_verify`` is emitted when a zone is awaiting
+  external validation before applying changes.
+  Parameters: **zone** name and new zone SOA **serial**.
+- ``keys-updated`` – The signal ``keys_updated`` is emitted when a DNSSEC key set
+  is updated.
+  Parameters: **zone** name.
+- ``ksk-submission`` – The signal ``zone_ksk_submission`` is emitted if a ready
+  KSK is present when the zone is signed.
+  Parameters: **zone** name, KSK **keytag**, and KSK KASP **id**.
 - ``dnssec-invalid`` – The signal ``zone_dnssec_invalid`` is emitted when DNSSEC
-  validation fails, or when ZONEMD verification fails; the signal parameters
-  are `zone name`, and `remaining seconds` until an RRSIG expires.
+  validation fails or when ZONEMD verification fails.
+  Parameters: **zone** name and remaining **seconds** until an RRSIG expires.
 
 .. NOTE::
    This function requires systemd version at least 221 or libdbus.
index f6bf00be087283e2fc8c63ce615779f089b028c6..5548330a69d3f54d48df7e16d148c9e26bc7379c 100755 (executable)
@@ -44,8 +44,8 @@ $knotd_interface->connect_to_signal('zone_updated', sub
 
 $knotd_interface->connect_to_signal('external_verify', sub
 {
-    my ($zone) = @_;
-    print "Awaiting external validation for zone=$zone\n";
+    my ($zone, $serial) = @_;
+    print "Awaiting external validation for zone=$zone serial=$serial\n";
 });
 
 $knotd_interface->connect_to_signal('keys_updated', sub
index 8e9dd23087a5e85cb7d9b21b8a1cfee5fa8e21b2..c30e9de34f4a847dfa2e4ae125f94093ec77b654 100755 (executable)
@@ -24,8 +24,8 @@ def sig_updated(sender, path, interface, signal, args):
     print("Updated zone=%s to serial=%d" % (zone, serial))
 
 def sig_external(sender, path, interface, signal, args):
-    (zone) = args
-    print("Awaiting external validation for zone=%s" % (zone))
+    (zone, serial) = args
+    print("Awaiting external validation for zone=%s serial=%u" % (zone, serial))
 
 def sig_keys_upd(sender, path, interface, signal, args):
     (zone) = args
index 8b8c037df8909a222a84a1dc031871b57233837b..1b78afeacdb1348adcd525c93976d914562ce356 100755 (executable)
@@ -17,7 +17,7 @@ cb() {
                echo "Updated zone=${2} to serial=${3}"
                ;;
        external_verify)
-               echo "Awaiting external validation for zone=${2}"
+               echo "Awaiting external validation for zone=${2} serial=${3}"
                ;;
        zone_dnssec_invalid)
                echo "Invalid DNSSEC for zone=${2} remaining=${3} seconds"
index 13623a154687940641ffad1e67bf501677792a68..58f856812a791b3c68efcf1a76172f2a1739e5b8 100644 (file)
@@ -192,14 +192,14 @@ void dbus_emit_zone_updated(const knot_dname_t *zone_name, uint32_t serial)
 #endif // ENABLE_DBUS
 }
 
-void dbus_emit_external_verify(const knot_dname_t *zone_name)
+void dbus_emit_external_verify(const knot_dname_t *zone_name, uint32_t serial)
 {
 #if ENABLE_DBUS
        knot_dname_txt_storage_t buff;
        char *zone_str = knot_dname_to_str(buff, zone_name, sizeof(buff));
        if (zone_str != NULL) {
-               emit_event(KNOT_BUS_EVENT_EXTERNAL, "s",
-                          VALUE_OF(zone_str));
+               emit_event(KNOT_BUS_EVENT_EXTERNAL, "su", VALUE_OF(zone_str),
+                          VALUE_OF(serial));
        }
 #endif // ENABLE_DBUS
 }
index 1033d4656123a61ec0c86f43a1df01ed580ceb93..abc2f2fa013a64699d7141411a8648b531282405 100644 (file)
@@ -54,8 +54,9 @@ void dbus_emit_zone_updated(const knot_dname_t *zone_name, uint32_t serial);
  * \brief Emit event signal that external verify shall take place.
  *
  * \param zone_name   Zone name.
+ * \param serial      Candidate zone SOA serial.
  */
-void dbus_emit_external_verify(const knot_dname_t *zone_name);
+void dbus_emit_external_verify(const knot_dname_t *zone_name, uint32_t serial);
 
 /*!
  * \brief Emit event signal for updated DNSSEC key set.
index c8db835a93b40f128e5e12b651237e0103884e22..2f9d7778b7ac6bff1d614d0f32ec1de551326cf7 100644 (file)
@@ -1084,7 +1084,7 @@ int zone_update_external(conf_t *conf, zone_update_t *update, conf_val_t *ev_id)
        log_zone_notice(update->zone->name, "waiting for external validation");
 
        if (conf->cache.srv_dbus_event & DBUS_EVENT_EXTERNAL) {
-               dbus_emit_external_verify(update->zone->name);
+               dbus_emit_external_verify(update->zone->name, zone_contents_serial(update->new_cont));
        }
 
        val = conf_id_get(conf, C_EXTERNAL, C_TIMEOUT, ev_id);