summaryrefslogtreecommitdiff
path: root/common/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/parse.c')
-rw-r--r--common/parse.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/common/parse.c b/common/parse.c
index 8619f852..386a6321 100644
--- a/common/parse.c
+++ b/common/parse.c
@@ -5058,7 +5058,33 @@ int parse_option_token (rv, cfile, fmt, expr, uniform, lookups)
POST(freeval);
}
break;
-
+
+ case 'k': /* key name */
+ token = peek_token (&val, &len, cfile);
+ if (token == STRING) {
+ token = next_token (&val, &len, cfile);
+ } else {
+ val = parse_host_name(cfile);
+ if (!val) {
+ parse_warn(cfile, "not a valid key name.");
+ skip_to_semi(cfile);
+ return 0;
+ }
+ freeval = ISC_TRUE;
+ }
+
+ if (!make_const_data (&t, (const unsigned char *)val,
+ strlen(val), 1, 1, MDL)) {
+ log_fatal ("No memory key name");
+ }
+
+ if (freeval == ISC_TRUE) {
+ dfree((char *)val, MDL);
+ freeval = ISC_FALSE;
+ }
+
+ break;
+
case 'N':
f = (*fmt) + 1;
g = strchr (*fmt, '.');