- ``started`` – Emitted when the server is started and all configured zones (including
catalog zones and their members) are loaded or successfully bootstrapped.
- ``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**.
+- ``zone-updated`` – Two signals may be emitted:
+
+ - ``zone_updated`` – Emitted when a zone has been successfully updated.
+ Parameters: **zone** name and zone SOA **serial**.
+ - ``zone_not_updated`` – Emitted when a zone has not been successfully updated.
+ Parameters: **zone** name.
- ``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**.
print "Updated zone=$zone to serial=$serial\n";
});
+$knotd_interface->connect_to_signal('zone_not_updated', sub
+{
+ my ($zone) = @_;
+ print "Not updated zone=$zone\n";
+});
+
$knotd_interface->connect_to_signal('external_verify', sub
{
my ($zone, $serial) = @_;
(zone, serial) = args
print("Updated zone=%s to serial=%d" % (zone, serial))
+def sig_not_updated(sender, path, interface, signal, args):
+ (zone) = args
+ print("Not updated zone=%s" % (zone))
+
def sig_external(sender, path, interface, signal, args):
(zone, serial) = args
print("Awaiting external validation for zone=%s serial=%u" % (zone, serial))
connect_to_signal("started", sig_started)
connect_to_signal("stopped", sig_stopped)
connect_to_signal("zone_updated", sig_updated)
+ connect_to_signal("zone_not_updated", sig_not_updated)
connect_to_signal("external_verify", sig_external)
connect_to_signal("keys_updated", sig_keys_upd)
connect_to_signal("zone_ksk_submission", sig_submission)
zone_updated)
echo "Updated zone=${2} to serial=${3}"
;;
+ zone_not_updated)
+ echo "Not updated zone=${2}"
+ ;;
external_verify)
echo "Awaiting external validation for zone=${2} serial=${3}"
;;
#endif // ENABLE_DBUS
}
-void dbus_emit_zone_updated(const knot_dname_t *zone_name, uint32_t serial)
+void dbus_emit_zone_updated(const knot_dname_t *zone_name, bool success, 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_ZONE_UPD, "su", VALUE_OF(zone_str),
- VALUE_OF(serial));
+ if (success) {
+ emit_event(KNOT_BUS_EVENT_ZONE_UPD, "su", VALUE_OF(zone_str),
+ VALUE_OF(serial));
+ } else {
+ emit_event(KNOT_BUS_EVENT_ZONE_NOT_UPD, "s", VALUE_OF(zone_str));
+ }
}
#endif // ENABLE_DBUS
}
#define KNOT_BUS_EVENT_STARTED "started"
#define KNOT_BUS_EVENT_STOPPED "stopped"
#define KNOT_BUS_EVENT_ZONE_UPD "zone_updated"
+#define KNOT_BUS_EVENT_ZONE_NOT_UPD "zone_not_updated"
#define KNOT_BUS_EVENT_EXTERNAL "external_verify"
#define KNOT_BUS_EVENT_ZONE_KEYS_UPD "keys_updated"
#define KNOT_BUS_EVENT_ZONE_KSK_SUBM "zone_ksk_submission"
* \brief Emit event signal for updated zones.
*
* \param zone_name Zone name.
+ * \param success Successful update indication (if false, serial isn't used).
* \param serial Current zone SOA serial.
*/
-void dbus_emit_zone_updated(const knot_dname_t *zone_name, uint32_t serial);
+void dbus_emit_zone_updated(const knot_dname_t *zone_name, bool success, uint32_t serial);
/*!
* \brief Emit event signal that external verify shall take place.
}
if (conf->cache.srv_dbus_event & DBUS_EVENT_ZONE_UPDATED) {
- dbus_emit_zone_updated(update->zone->name,
+ dbus_emit_zone_updated(update->zone->name, true,
zone_contents_serial(update->zone->contents));
}
return KNOT_EOK;
error:
ATOMIC_ADD(update->zone->server->stats.zone_update_error, 1);
+ if (conf->cache.srv_dbus_event & DBUS_EVENT_ZONE_UPDATED) {
+ dbus_emit_zone_updated(update->zone->name, false, 0);
+ }
+
return ret;
}