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:",
+static const char *booleantags[DST_MAX_BOOLEAN] = {
+ [DST_BOOL_KSK] = "KSK:",
+ [DST_BOOL_ZSK] = "ZSK:",
+};
- "DSRemoved:", "ZRRSIGPublish", "ZRRSIGRemoved"
+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:",
};
-#define KEYSTATES_NTAGS (DST_MAX_KEYSTATES + 1)
-static const char *keystatestags[KEYSTATES_NTAGS] = {
- "DNSKEYState:", "ZRRSIGState:", "KRRSIGState:", "DSState:", "GoalState:"
+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
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]) {
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] ||
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];
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]) {
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] ||
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];
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]) {
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] ||
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];
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]) {
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] ||
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];
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
/* 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) {
/* 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) {
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) {
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) {
* 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) {
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);
}
}
- 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);
}
}
- 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);
}
}
- 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);
#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 {
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
/* 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) {
/* 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) {
/* 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;
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;
#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.
*
* 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.
*/
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_BOOLEAN
+ * "type" is smaller than DST_MAX_BOOLEAN
*/
void
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_BOOLEAN
+ * "type" is smaller than DST_MAX_BOOLEAN
*/
isc_result_t
*
* 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.
*/
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_NUMERIC
+ * "type" is smaller than DST_MAX_NUMERIC
*/
void
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_NUMERIC
+ * "type" is smaller than DST_MAX_NUMERIC
*/
isc_result_t
*
* 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.
*/
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_TIMES
+ * "type" is smaller than DST_MAX_TIMES
*/
void
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_TIMES
+ * "type" is smaller than DST_MAX_TIMES
*/
isc_result_t
*
* 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.
*/
* 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
*
* Requires:
* "key" is a valid key.
- * "type" is no larger than DST_MAX_KEYSTATES
+ * "type" is smaller than DST_MAX_KEYSTATES
*/
isc_result_t