Uploaded image for project: 'Support'
  1. Support
  2. SUPPORT-60

datecounter not behaving as expected

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: OpenDNSSEC 1.4.0
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:

      8.1-RELEASE FreeBSD 8.1-RELEASE

      Description

      Using 'datecounter' as a zone serial policy usually has the added benefit of
      seeing at a glance when (the day) the zone was last generated. This
      benefit is lost in the current opendnssec-1.4.0.

      The date portion of the serial number is not replaced at midnight as
      expected (in fact it is never replaced unless the signerd is restarted).

      Relevant example log entries:

      May 9 19:10:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050921
      May 9 19:50:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050922
      May 9 20:50:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050923
      May 9 22:30:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050924

      May 10 00:10:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050925
      May 10 00:50:04 janus ods-signerd: [adapter] zone is set soa serial to 2013050926
      May 10 01:10:04 janus ods-signerd: [adapter] zone is set soa serial to 2013050927
      May 10 02:10:05 janus ods-signerd: [adapter] zone is set soa serial to 2013050928

      If 'datecounter' is configured - opendnssec-1.4.0/signer/src/signer/namedb.c is
      not properly setting 'db->intserial' (unless 'db->is_initialized' is false - signerd
      just restarted?).

      Applying the following patch

          • namedb.c 2013-05-12 16:54:06.000000000 +0000
          • namedb.c.orig 2013-05-12 10:32:46.000000000 +0000
            ***************
          • 254,260 ****
            if (update > 0x7FFFFFFF) { update = 0x7FFFFFFF; }
            ! if (!db->is_initialized || (ods_strcmp(format, "datecounter") == 0)) { db->intserial = soa; } else {
            db->intserial += update; /* automatically does % 2^32 */
            — 254,260 ----
            if (update > 0x7FFFFFFF) { update = 0x7FFFFFFF; }

            ! if (!db->is_initialized)

            { db->intserial = soa; }

            else {
            db->intserial += update; /* automatically does % 2^32 */

      restores the "correct" behaviour of 'datecounter' :

      May 12 20:30:05 janus ods-signerd: [adapter] zone is set soa serial to 2013051215
      May 12 22:30:05 janus ods-signerd: [zone] zone is set soa serial to 2013051216
      May 12 23:10:05 janus ods-signerd: [adapter] zone is set soa serial to 2013051217
      May 12 23:30:05 janus ods-signerd: [adapter] zone is set soa serial to 2013051218

      May 13 00:30:05 janus ods-signerd: [adapter] zone is set soa serial to 2013051301
      May 13 02:30:05 janus ods-signerd: [zone] zone is set soa serial to 2013051302
      May 13 04:30:05 janus ods-signerd: [zone] zone is set soa serial to 2013051303
      May 13 06:30:05 janus ods-signerd: [zone] zone is set soa serial to 2013051304

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              matthijs Matthijs Mekking
              Reporter:
              marius Marius Olafsson
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: