[9.20] chg: dev: Minor refactor of dst code

Convert the defines to enums. Initialize the tags more explicitly and less ugly.

Backport of MR !11000

Merge branch 'backport-matthijs-ugly-kid-joe-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11038
This commit is contained in:
Matthijs Mekking 2025-10-01 13:09:14 +00:00
commit c6acbaa020
6 changed files with 166 additions and 123 deletions

View file

@ -99,30 +99,44 @@
goto cleanup; \
}
#define NUMERIC_NTAGS (DST_MAX_NUMERIC + 1)
static const char *numerictags[NUMERIC_NTAGS] = {
"Predecessor:", "Successor:", "MaxTTL:", "RollPeriod:",
"Lifetime:", "DSPubCount:", "DSRemCount:"
static const char *numerictags[DST_MAX_NUMERIC] = {
[DST_NUM_PREDECESSOR] = "Predecessor:",
[DST_NUM_SUCCESSOR] = "Successor:",
[DST_NUM_MAXTTL] = "MaxTTL:",
[DST_NUM_ROLLPERIOD] = "RollPeriod:",
[DST_NUM_LIFETIME] = "Lifetime:",
[DST_NUM_DSPUBCOUNT] = "DSPubCount:",
[DST_NUM_DSDELCOUNT] = "DSRemCount:",
};
#define BOOLEAN_NTAGS (DST_MAX_BOOLEAN + 1)
static const char *booleantags[BOOLEAN_NTAGS] = { "KSK:", "ZSK:" };
#define TIMING_NTAGS (DST_MAX_TIMES + 1)
static const char *timingtags[TIMING_NTAGS] = {
"Generated:", "Published:", "Active:", "Revoked:",
"Retired:", "Removed:",
"DSPublish:", "SyncPublish:", "SyncDelete:",
"DNSKEYChange:", "ZRRSIGChange:", "KRRSIGChange:", "DSChange:",
"DSRemoved:", "ZRRSIGPublish", "ZRRSIGRemoved"
static const char *booleantags[DST_MAX_BOOLEAN] = {
[DST_BOOL_KSK] = "KSK:",
[DST_BOOL_ZSK] = "ZSK:",
};
#define KEYSTATES_NTAGS (DST_MAX_KEYSTATES + 1)
static const char *keystatestags[KEYSTATES_NTAGS] = {
"DNSKEYState:", "ZRRSIGState:", "KRRSIGState:", "DSState:", "GoalState:"
static const char *timingtags[DST_MAX_TIMES] = {
[DST_TIME_CREATED] = "Generated:",
[DST_TIME_PUBLISH] = "Published:",
[DST_TIME_ACTIVATE] = "Active:",
[DST_TIME_REVOKE] = "Revoked:",
[DST_TIME_INACTIVE] = "Retired:",
[DST_TIME_DELETE] = "Removed:",
[DST_TIME_DSPUBLISH] = "DSPublish:",
[DST_TIME_SYNCPUBLISH] = "SyncPublish:",
[DST_TIME_SYNCDELETE] = "SyncDelete:",
[DST_TIME_DNSKEY] = "DNSKEYChange:",
[DST_TIME_ZRRSIG] = "ZRRSIGChange:",
[DST_TIME_KRRSIG] = "KRRSIGChange:",
[DST_TIME_DS] = "DSChange:",
[DST_TIME_DSDELETE] = "DSRemoved:",
[DST_TIME_SIGPUBLISH] = "ZRRSIGPublish:",
[DST_TIME_SIGDELETE] = "ZZRRSIGDelete:",
};
static const char *keystatestags[DST_MAX_KEYSTATES] = {
[DST_KEY_DNSKEY] = "DNSKEYState:", [DST_KEY_ZRRSIG] = "ZRRSIGState:",
[DST_KEY_KRRSIG] = "KRRSIGState:", [DST_KEY_DS] = "DSState:",
[DST_KEY_GOAL] = "GoalState:",
};
#define KEYSTATES_NVALUES 4
@ -1089,7 +1103,7 @@ isc_result_t
dst_key_getbool(const dst_key_t *key, int type, bool *valuep) {
REQUIRE(VALID_KEY(key));
REQUIRE(valuep != NULL);
REQUIRE(type <= DST_MAX_BOOLEAN);
REQUIRE(type < DST_MAX_BOOLEAN);
isc_mutex_lock(&(((dst_key_t *)key)->mdlock));
if (!key->boolset[type]) {
@ -1105,7 +1119,7 @@ dst_key_getbool(const dst_key_t *key, int type, bool *valuep) {
void
dst_key_setbool(dst_key_t *key, int type, bool value) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_BOOLEAN);
REQUIRE(type < DST_MAX_BOOLEAN);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || !key->boolset[type] ||
@ -1118,7 +1132,7 @@ dst_key_setbool(dst_key_t *key, int type, bool value) {
void
dst_key_unsetbool(dst_key_t *key, int type) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_BOOLEAN);
REQUIRE(type < DST_MAX_BOOLEAN);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || key->boolset[type];
@ -1130,7 +1144,7 @@ isc_result_t
dst_key_getnum(const dst_key_t *key, int type, uint32_t *valuep) {
REQUIRE(VALID_KEY(key));
REQUIRE(valuep != NULL);
REQUIRE(type <= DST_MAX_NUMERIC);
REQUIRE(type < DST_MAX_NUMERIC);
isc_mutex_lock(&(((dst_key_t *)key)->mdlock));
if (!key->numset[type]) {
@ -1146,7 +1160,7 @@ dst_key_getnum(const dst_key_t *key, int type, uint32_t *valuep) {
void
dst_key_setnum(dst_key_t *key, int type, uint32_t value) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_NUMERIC);
REQUIRE(type < DST_MAX_NUMERIC);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || !key->numset[type] ||
@ -1159,7 +1173,7 @@ dst_key_setnum(dst_key_t *key, int type, uint32_t value) {
void
dst_key_unsetnum(dst_key_t *key, int type) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_NUMERIC);
REQUIRE(type < DST_MAX_NUMERIC);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || key->numset[type];
@ -1171,7 +1185,7 @@ isc_result_t
dst_key_gettime(const dst_key_t *key, int type, isc_stdtime_t *timep) {
REQUIRE(VALID_KEY(key));
REQUIRE(timep != NULL);
REQUIRE(type <= DST_MAX_TIMES);
REQUIRE(type < DST_MAX_TIMES);
isc_mutex_lock(&(((dst_key_t *)key)->mdlock));
if (!key->timeset[type]) {
@ -1186,7 +1200,7 @@ dst_key_gettime(const dst_key_t *key, int type, isc_stdtime_t *timep) {
void
dst_key_settime(dst_key_t *key, int type, isc_stdtime_t when) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_TIMES);
REQUIRE(type < DST_MAX_TIMES);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || !key->timeset[type] ||
@ -1199,7 +1213,7 @@ dst_key_settime(dst_key_t *key, int type, isc_stdtime_t when) {
void
dst_key_unsettime(dst_key_t *key, int type) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_TIMES);
REQUIRE(type < DST_MAX_TIMES);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || key->timeset[type];
@ -1211,7 +1225,7 @@ isc_result_t
dst_key_getstate(const dst_key_t *key, int type, dst_key_state_t *statep) {
REQUIRE(VALID_KEY(key));
REQUIRE(statep != NULL);
REQUIRE(type <= DST_MAX_KEYSTATES);
REQUIRE(type < DST_MAX_KEYSTATES);
isc_mutex_lock(&(((dst_key_t *)key)->mdlock));
if (!key->keystateset[type]) {
@ -1227,7 +1241,7 @@ dst_key_getstate(const dst_key_t *key, int type, dst_key_state_t *statep) {
void
dst_key_setstate(dst_key_t *key, int type, dst_key_state_t state) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_KEYSTATES);
REQUIRE(type < DST_MAX_KEYSTATES);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || !key->keystateset[type] ||
@ -1240,7 +1254,7 @@ dst_key_setstate(dst_key_t *key, int type, dst_key_state_t state) {
void
dst_key_unsetstate(dst_key_t *key, int type) {
REQUIRE(VALID_KEY(key));
REQUIRE(type <= DST_MAX_KEYSTATES);
REQUIRE(type < DST_MAX_KEYSTATES);
isc_mutex_lock(&key->mdlock);
key->modified = key->modified || key->keystateset[type];
@ -1751,22 +1765,22 @@ find_metadata(const char *s, const char *tags[], int ntags) {
static int
find_numericdata(const char *s) {
return find_metadata(s, numerictags, NUMERIC_NTAGS);
return find_metadata(s, numerictags, DST_MAX_NUMERIC);
}
static int
find_booleandata(const char *s) {
return find_metadata(s, booleantags, BOOLEAN_NTAGS);
return find_metadata(s, booleantags, DST_MAX_BOOLEAN);
}
static int
find_timingdata(const char *s) {
return find_metadata(s, timingtags, TIMING_NTAGS);
return find_metadata(s, timingtags, DST_MAX_TIMES);
}
static int
find_keystatedata(const char *s) {
return find_metadata(s, keystatestags, KEYSTATES_NTAGS);
return find_metadata(s, keystatestags, DST_MAX_KEYSTATES);
}
static isc_result_t
@ -1858,7 +1872,7 @@ dst_key_read_state(const char *filename, isc_mem_t *mctx, dst_key_t **keyp) {
/* Numeric metadata */
tag = find_numericdata(DST_AS_STR(token));
if (tag >= 0) {
INSIST(tag < NUMERIC_NTAGS);
INSIST(tag < DST_MAX_NUMERIC);
NEXTTOKEN(lex, opt | ISC_LEXOPT_NUMBER, &token);
if (token.type != isc_tokentype_number) {
@ -1872,7 +1886,7 @@ dst_key_read_state(const char *filename, isc_mem_t *mctx, dst_key_t **keyp) {
/* Boolean metadata */
tag = find_booleandata(DST_AS_STR(token));
if (tag >= 0) {
INSIST(tag < BOOLEAN_NTAGS);
INSIST(tag < DST_MAX_BOOLEAN);
NEXTTOKEN(lex, opt, &token);
if (token.type != isc_tokentype_string) {
@ -1894,7 +1908,7 @@ dst_key_read_state(const char *filename, isc_mem_t *mctx, dst_key_t **keyp) {
if (tag >= 0) {
uint32_t when;
INSIST(tag < TIMING_NTAGS);
INSIST(tag < DST_MAX_TIMES);
NEXTTOKEN(lex, opt, &token);
if (token.type != isc_tokentype_string) {
@ -1915,7 +1929,7 @@ dst_key_read_state(const char *filename, isc_mem_t *mctx, dst_key_t **keyp) {
if (tag >= 0) {
dst_key_state_t state;
INSIST(tag < KEYSTATES_NTAGS);
INSIST(tag < DST_MAX_KEYSTATES);
NEXTTOKEN(lex, opt, &token);
if (token.type != isc_tokentype_string) {
@ -2422,7 +2436,7 @@ dst_key_is_unused(const dst_key_t *key) {
* None of the key timing metadata, except Created, may be set. Key
* state times may be set only if their respective state is HIDDEN.
*/
for (int i = 0; i < DST_MAX_TIMES + 1; i++) {
for (int i = 0; i < DST_MAX_TIMES; i++) {
state_type_set = false;
switch (i) {
@ -2743,7 +2757,7 @@ dst_key_copy_metadata(dst_key_t *to, dst_key_t *from) {
REQUIRE(VALID_KEY(to));
REQUIRE(VALID_KEY(from));
for (int i = 0; i < DST_MAX_TIMES + 1; i++) {
for (int i = 0; i < DST_MAX_TIMES; i++) {
result = dst_key_gettime(from, i, &when);
if (result == ISC_R_SUCCESS) {
dst_key_settime(to, i, when);
@ -2752,7 +2766,7 @@ dst_key_copy_metadata(dst_key_t *to, dst_key_t *from) {
}
}
for (int i = 0; i < DST_MAX_NUMERIC + 1; i++) {
for (int i = 0; i < DST_MAX_NUMERIC; i++) {
result = dst_key_getnum(from, i, &num);
if (result == ISC_R_SUCCESS) {
dst_key_setnum(to, i, num);
@ -2761,7 +2775,7 @@ dst_key_copy_metadata(dst_key_t *to, dst_key_t *from) {
}
}
for (int i = 0; i < DST_MAX_BOOLEAN + 1; i++) {
for (int i = 0; i < DST_MAX_BOOLEAN; i++) {
result = dst_key_getbool(from, i, &yesno);
if (result == ISC_R_SUCCESS) {
dst_key_setbool(to, i, yesno);
@ -2770,7 +2784,7 @@ dst_key_copy_metadata(dst_key_t *to, dst_key_t *from) {
}
}
for (int i = 0; i < DST_MAX_KEYSTATES + 1; i++) {
for (int i = 0; i < DST_MAX_KEYSTATES; i++) {
result = dst_key_getstate(from, i, &state);
if (result == ISC_R_SUCCESS) {
dst_key_setstate(to, i, state);

View file

@ -104,21 +104,20 @@ struct dst_key {
} pkeypair;
} keydata; /*%< pointer to key in crypto pkg fmt */
isc_stdtime_t times[DST_MAX_TIMES + 1]; /*%< timing metadata */
bool timeset[DST_MAX_TIMES + 1]; /*%< data set? */
isc_stdtime_t times[DST_MAX_TIMES]; /*%< timing metadata */
bool timeset[DST_MAX_TIMES]; /*%< data set? */
uint32_t nums[DST_MAX_NUMERIC + 1]; /*%< numeric metadata
* */
bool numset[DST_MAX_NUMERIC + 1]; /*%< data set? */
uint32_t nums[DST_MAX_NUMERIC]; /*%< numeric metadata
* */
bool numset[DST_MAX_NUMERIC]; /*%< data set? */
bool bools[DST_MAX_BOOLEAN + 1]; /*%< boolean metadata
* */
bool boolset[DST_MAX_BOOLEAN + 1]; /*%< data set? */
bool bools[DST_MAX_BOOLEAN]; /*%< boolean metadata
* */
bool boolset[DST_MAX_BOOLEAN]; /*%< data set? */
dst_key_state_t keystates[DST_MAX_KEYSTATES + 1]; /*%< key states
* */
bool keystateset[DST_MAX_KEYSTATES + 1]; /*%< data
* set? */
dst_key_state_t keystates[DST_MAX_KEYSTATES]; /*%< key states
* */
bool keystateset[DST_MAX_KEYSTATES]; /*%< data set? */
bool kasp; /*%< key has kasp state */
bool inactive; /*%< private key not present as it is

View file

@ -52,16 +52,33 @@
#define PRIVATE_KEY_STR "Private-key-format:"
#define ALGORITHM_STR "Algorithm:"
#define TIMING_NTAGS (DST_MAX_TIMES + 1)
static const char *timetags[TIMING_NTAGS] = {
"Created:", "Publish:", "Activate:", "Revoke:", "Inactive:",
"Delete:", "DSPublish:", "SyncPublish:", "SyncDelete:", NULL,
NULL, NULL, NULL, NULL, NULL
static const char *timetags[DST_MAX_TIMES] = {
[DST_TIME_CREATED] = "Created:",
[DST_TIME_PUBLISH] = "Publish:",
[DST_TIME_ACTIVATE] = "Activate:",
[DST_TIME_REVOKE] = "Revoke:",
[DST_TIME_INACTIVE] = "Inactive:",
[DST_TIME_DELETE] = "Delete:",
[DST_TIME_DSPUBLISH] = "DSPublish:",
[DST_TIME_SYNCPUBLISH] = "SyncPublish:",
[DST_TIME_SYNCDELETE] = "SyncDelete:",
[DST_TIME_DNSKEY] = NULL,
[DST_TIME_ZRRSIG] = NULL,
[DST_TIME_KRRSIG] = NULL,
[DST_TIME_DS] = NULL,
[DST_TIME_DSDELETE] = NULL,
[DST_TIME_SIGPUBLISH] = NULL,
[DST_TIME_SIGDELETE] = NULL,
};
#define NUMERIC_NTAGS (DST_MAX_NUMERIC + 1)
static const char *numerictags[NUMERIC_NTAGS] = {
"Predecessor:", "Successor:", "MaxTTL:", "RollPeriod:", NULL, NULL, NULL
static const char *numerictags[DST_MAX_NUMERIC] = {
[DST_NUM_PREDECESSOR] = "Predecessor:",
[DST_NUM_SUCCESSOR] = "Successor:",
[DST_NUM_MAXTTL] = "MaxTTL:",
[DST_NUM_ROLLPERIOD] = "RollPeriod:",
[DST_NUM_LIFETIME] = NULL,
[DST_NUM_DSPUBCOUNT] = NULL,
[DST_NUM_DSDELCOUNT] = NULL,
};
struct parse_map {
@ -151,12 +168,12 @@ find_metadata(const char *s, const char *tags[], int ntags) {
static int
find_timedata(const char *s) {
return find_metadata(s, timetags, TIMING_NTAGS);
return find_metadata(s, timetags, DST_MAX_TIMES);
}
static int
find_numericdata(const char *s) {
return find_metadata(s, numerictags, NUMERIC_NTAGS);
return find_metadata(s, numerictags, DST_MAX_NUMERIC);
}
static int
@ -489,7 +506,7 @@ dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
/* Numeric metadata */
tag = find_numericdata(DST_AS_STR(token));
if (tag >= 0) {
INSIST(tag < NUMERIC_NTAGS);
INSIST(tag < DST_MAX_NUMERIC);
NEXTTOKEN(lex, opt | ISC_LEXOPT_NUMBER, &token);
if (token.type != isc_tokentype_number) {
@ -504,7 +521,7 @@ dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
/* Timing metadata */
tag = find_timedata(DST_AS_STR(token));
if (tag >= 0) {
INSIST(tag < TIMING_NTAGS);
INSIST(tag < DST_MAX_TIMES);
NEXTTOKEN(lex, opt, &token);
if (token.type != isc_tokentype_string) {
@ -721,7 +738,7 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
/* Add the metadata tags */
if (major > 1 || (major == 1 && minor >= 3)) {
for (i = 0; i < NUMERIC_NTAGS; i++) {
for (i = 0; i < DST_MAX_NUMERIC; i++) {
result = dst_key_getnum(key, i, &value);
if (result != ISC_R_SUCCESS) {
continue;
@ -730,7 +747,7 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
fprintf(fp, "%s %u\n", numerictags[i], value);
}
}
for (i = 0; i < TIMING_NTAGS; i++) {
for (i = 0; i < DST_MAX_TIMES; i++) {
result = dst_key_gettime(key, i, &when);
if (result != ISC_R_SUCCESS) {
continue;

View file

@ -133,46 +133,58 @@ typedef enum dst_algorithm {
#define DST_TYPE_TEMPLATE 0x10000000
/* Key timing metadata definitions */
#define DST_TIME_CREATED 0
#define DST_TIME_PUBLISH 1
#define DST_TIME_ACTIVATE 2
#define DST_TIME_REVOKE 3
#define DST_TIME_INACTIVE 4
#define DST_TIME_DELETE 5
#define DST_TIME_DSPUBLISH 6
#define DST_TIME_SYNCPUBLISH 7
#define DST_TIME_SYNCDELETE 8
#define DST_TIME_DNSKEY 9
#define DST_TIME_ZRRSIG 10
#define DST_TIME_KRRSIG 11
#define DST_TIME_DS 12
#define DST_TIME_DSDELETE 13
#define DST_TIME_SIGPUBLISH 14
#define DST_TIME_SIGDELETE 15
#define DST_MAX_TIMES 15
enum {
DST_TIME_CREATED = 0,
DST_TIME_PUBLISH = 1,
DST_TIME_ACTIVATE = 2,
DST_TIME_REVOKE = 3,
DST_TIME_INACTIVE = 4,
DST_TIME_DELETE = 5,
DST_TIME_DSPUBLISH = 6,
DST_TIME_SYNCPUBLISH = 7,
DST_TIME_SYNCDELETE = 8,
DST_TIME_DNSKEY = 9,
DST_TIME_ZRRSIG = 10,
DST_TIME_KRRSIG = 11,
DST_TIME_DS = 12,
DST_TIME_DSDELETE = 13,
DST_TIME_SIGPUBLISH = 14,
DST_TIME_SIGDELETE = 15,
DST_MAX_TIMES = 16 /* MUST BE LAST */
};
/* Numeric metadata definitions */
#define DST_NUM_PREDECESSOR 0
#define DST_NUM_SUCCESSOR 1
#define DST_NUM_MAXTTL 2
#define DST_NUM_ROLLPERIOD 3
#define DST_NUM_LIFETIME 4
#define DST_NUM_DSPUBCOUNT 5
#define DST_NUM_DSDELCOUNT 6
#define DST_MAX_NUMERIC 6
enum {
DST_NUM_PREDECESSOR = 0,
DST_NUM_SUCCESSOR = 1,
DST_NUM_MAXTTL = 2,
DST_NUM_ROLLPERIOD = 3,
DST_NUM_LIFETIME = 4,
DST_NUM_DSPUBCOUNT = 5,
DST_NUM_DSDELCOUNT = 6,
DST_MAX_NUMERIC = 7 /* MUST BE LAST */
};
/* Boolean metadata definitions */
#define DST_BOOL_KSK 0
#define DST_BOOL_ZSK 1
#define DST_MAX_BOOLEAN 1
enum {
DST_BOOL_KSK = 0,
DST_BOOL_ZSK = 1,
DST_MAX_BOOLEAN = 2 /* MUST BE LAST */
};
/* Key state metadata definitions */
#define DST_KEY_DNSKEY 0
#define DST_KEY_ZRRSIG 1
#define DST_KEY_KRRSIG 2
#define DST_KEY_DS 3
#define DST_KEY_GOAL 4
#define DST_MAX_KEYSTATES 4
enum {
DST_KEY_DNSKEY = 0,
DST_KEY_ZRRSIG = 1,
DST_KEY_KRRSIG = 2,
DST_KEY_DS = 3,
DST_KEY_GOAL = 4,
DST_MAX_KEYSTATES = 5 /* MUST BE LAST */
};
/*
* Current format version number of the private key parser.
@ -907,7 +919,7 @@ dst_key_getbool(const dst_key_t *key, int type, bool *valuep);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_BOOLEAN
* "type" is smaller than DST_MAX_BOOLEAN
* "valuep" is not null.
*/
@ -918,7 +930,7 @@ dst_key_setbool(dst_key_t *key, int type, bool value);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_BOOLEAN
* "type" is smaller than DST_MAX_BOOLEAN
*/
void
@ -928,7 +940,7 @@ dst_key_unsetbool(dst_key_t *key, int type);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_BOOLEAN
* "type" is smaller than DST_MAX_BOOLEAN
*/
isc_result_t
@ -938,7 +950,7 @@ dst_key_getnum(const dst_key_t *key, int type, uint32_t *valuep);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_NUMERIC
* "type" is smaller than DST_MAX_NUMERIC
* "valuep" is not null.
*/
@ -949,7 +961,7 @@ dst_key_setnum(dst_key_t *key, int type, uint32_t value);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_NUMERIC
* "type" is smaller than DST_MAX_NUMERIC
*/
void
@ -959,7 +971,7 @@ dst_key_unsetnum(dst_key_t *key, int type);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_NUMERIC
* "type" is smaller than DST_MAX_NUMERIC
*/
isc_result_t
@ -969,7 +981,7 @@ dst_key_gettime(const dst_key_t *key, int type, isc_stdtime_t *timep);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_TIMES
* "type" is smaller than DST_MAX_TIMES
* "timep" is not null.
*/
@ -980,7 +992,7 @@ dst_key_settime(dst_key_t *key, int type, isc_stdtime_t when);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_TIMES
* "type" is smaller than DST_MAX_TIMES
*/
void
@ -990,7 +1002,7 @@ dst_key_unsettime(dst_key_t *key, int type);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_TIMES
* "type" is smaller than DST_MAX_TIMES
*/
isc_result_t
@ -1000,7 +1012,7 @@ dst_key_getstate(const dst_key_t *key, int type, dst_key_state_t *statep);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_KEYSTATES
* "type" is smaller than DST_MAX_KEYSTATES
* "statep" is not null.
*/
@ -1012,7 +1024,7 @@ dst_key_setstate(dst_key_t *key, int type, dst_key_state_t state);
* Requires:
* "key" is a valid key.
* "state" is a valid state.
* "type" is no larger than DST_MAX_KEYSTATES
* "type" is smaller than DST_MAX_KEYSTATES
*/
void
@ -1022,7 +1034,7 @@ dst_key_unsetstate(dst_key_t *key, int type);
*
* Requires:
* "key" is a valid key.
* "type" is no larger than DST_MAX_KEYSTATES
* "type" is smaller than DST_MAX_KEYSTATES
*/
isc_result_t

View file

@ -77,14 +77,15 @@
#define NA DST_KEY_STATE_NA
/* Quickly get key state timing metadata. */
#define NUM_KEYSTATES (DST_MAX_KEYSTATES)
static int keystatetimes[NUM_KEYSTATES] = { DST_TIME_DNSKEY, DST_TIME_ZRRSIG,
DST_TIME_KRRSIG, DST_TIME_DS };
static int keystatetimes[] = { DST_TIME_DNSKEY, DST_TIME_ZRRSIG,
DST_TIME_KRRSIG, DST_TIME_DS };
#define NUM_KEYSTATES (int)ARRAY_SIZE(keystatetimes)
/* Readable key state types and values. */
static const char *keystatetags[NUM_KEYSTATES] = { "DNSKEY", "ZRRSIG", "KRRSIG",
"DS" };
static const char *keystatestrings[4] = { "HIDDEN", "RUMOURED", "OMNIPRESENT",
"UNRETENTIVE" };
static const char *keystatestrings[] = { "HIDDEN", "RUMOURED", "OMNIPRESENT",
"UNRETENTIVE" };
static void
log_key_overflow(dst_key_t *key, const char *what) {

View file

@ -20575,7 +20575,7 @@ next_keyevent(dst_key_t *key, isc_stdtime_t *timep) {
now = *timep;
for (i = 0; i <= DST_MAX_TIMES; i++) {
for (i = 0; i < DST_MAX_TIMES; i++) {
result = dst_key_gettime(key, i, &event);
if (result == ISC_R_SUCCESS && event > now &&
(then == 0 || event < then))