mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Add support for parsing DSYNC scheme mnemonics
Adds dns_dsyncscheme_fromtext, dns_dsyncscheme_totext and dns_dsyncscheme_format. Adds type dns_dsyncscheme_t.
This commit is contained in:
parent
09efe6039c
commit
6e1311c624
27
lib/dns/include/dns/dsync.h
Normal file
27
lib/dns/include/dns/dsync.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MPL-2.0
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* See the COPYRIGHT file distributed with this work for additional
|
||||||
|
* information regarding copyright ownership.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define DNS_DSYNCSCHEME_NOTIFY (1)
|
||||||
|
|
||||||
|
#define DNS_DSYNCSCHEMEFORMAT_SIZE (7)
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dsyncscheme_fromtext(dns_dsyncscheme_t *schemep, isc_textregion_t *source);
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dsyncscheme_totext(dns_dsyncscheme_t scheme, isc_buffer_t *target);
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dsyncscheme_format(dns_dsyncscheme_t scheme, char *cp, unsigned int size);
|
@ -81,6 +81,7 @@ typedef ISC_LIST(dns_dns64_t) dns_dns64list_t;
|
|||||||
typedef struct dns_dnsseckey dns_dnsseckey_t;
|
typedef struct dns_dnsseckey dns_dnsseckey_t;
|
||||||
typedef ISC_LIST(dns_dnsseckey_t) dns_dnsseckeylist_t;
|
typedef ISC_LIST(dns_dnsseckey_t) dns_dnsseckeylist_t;
|
||||||
typedef uint8_t dns_dsdigest_t;
|
typedef uint8_t dns_dsdigest_t;
|
||||||
|
typedef uint8_t dns_dsyncscheme_t;
|
||||||
typedef struct dns_dtdata dns_dtdata_t;
|
typedef struct dns_dtdata dns_dtdata_t;
|
||||||
typedef struct dns_dtenv dns_dtenv_t;
|
typedef struct dns_dtenv dns_dtenv_t;
|
||||||
typedef struct dns_dtmsg dns_dtmsg_t;
|
typedef struct dns_dtmsg dns_dtmsg_t;
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <dns/cert.h>
|
#include <dns/cert.h>
|
||||||
#include <dns/ds.h>
|
#include <dns/ds.h>
|
||||||
#include <dns/dsdigest.h>
|
#include <dns/dsdigest.h>
|
||||||
|
#include <dns/dsync.h>
|
||||||
#include <dns/keyflags.h>
|
#include <dns/keyflags.h>
|
||||||
#include <dns/keyvalues.h>
|
#include <dns/keyvalues.h>
|
||||||
#include <dns/rcode.h>
|
#include <dns/rcode.h>
|
||||||
@ -166,6 +167,8 @@
|
|||||||
{ DNS_DSDIGEST_GOST2012, "GOST2012", 0 }, \
|
{ DNS_DSDIGEST_GOST2012, "GOST2012", 0 }, \
|
||||||
DSDIGESTPRIVATENAMES SENTINEL
|
DSDIGESTPRIVATENAMES SENTINEL
|
||||||
|
|
||||||
|
#define DSYNCSCHEMES { DNS_DSYNCSCHEME_NOTIFY, "NOTIFY", 0 }, SENTINEL
|
||||||
|
|
||||||
struct tbl {
|
struct tbl {
|
||||||
unsigned int value;
|
unsigned int value;
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -179,6 +182,7 @@ static struct tbl secalgs[] = { SECALGNAMES };
|
|||||||
static struct tbl secprotos[] = { SECPROTONAMES };
|
static struct tbl secprotos[] = { SECPROTONAMES };
|
||||||
static struct tbl hashalgs[] = { HASHALGNAMES };
|
static struct tbl hashalgs[] = { HASHALGNAMES };
|
||||||
static struct tbl dsdigests[] = { DSDIGESTNAMES };
|
static struct tbl dsdigests[] = { DSDIGESTNAMES };
|
||||||
|
static struct tbl dsyncschemes[] = { DSYNCSCHEMES };
|
||||||
static struct tbl privatednss[] = { PRIVATEDNSS SENTINEL };
|
static struct tbl privatednss[] = { PRIVATEDNSS SENTINEL };
|
||||||
static struct tbl privateoids[] = { PRIVATEOIDS SENTINEL };
|
static struct tbl privateoids[] = { PRIVATEOIDS SENTINEL };
|
||||||
static struct tbl dstalgorithms[] = { PRIVATEDNSS PRIVATEOIDS SECALGNAMES };
|
static struct tbl dstalgorithms[] = { PRIVATEDNSS PRIVATEOIDS SECALGNAMES };
|
||||||
@ -547,6 +551,41 @@ dns_dsdigest_format(dns_dsdigest_t typ, char *cp, unsigned int size) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DSYNC Scheme
|
||||||
|
*/
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dsyncscheme_fromtext(dns_dsyncscheme_t *schemep, isc_textregion_t *source) {
|
||||||
|
unsigned int value;
|
||||||
|
|
||||||
|
REQUIRE(schemep != NULL);
|
||||||
|
RETERR(dns_mnemonic_fromtext(&value, source, dsyncschemes, 0xff));
|
||||||
|
*schemep = value;
|
||||||
|
return ISC_R_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_dsyncscheme_totext(dns_dsyncscheme_t scheme, isc_buffer_t *target) {
|
||||||
|
return dns_mnemonic_totext(scheme, target, dsyncschemes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dns_dsyncscheme_format(dns_dsyncscheme_t scheme, char *cp, unsigned int size) {
|
||||||
|
isc_buffer_t b;
|
||||||
|
isc_region_t r;
|
||||||
|
isc_result_t result;
|
||||||
|
|
||||||
|
REQUIRE(cp != NULL && size > 0);
|
||||||
|
isc_buffer_init(&b, cp, size - 1);
|
||||||
|
result = dns_dsyncscheme_totext(scheme, &b);
|
||||||
|
isc_buffer_usedregion(&b, &r);
|
||||||
|
r.base[r.length] = 0;
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
r.base[0] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This uses lots of hard coded values, but how often do we actually
|
* This uses lots of hard coded values, but how often do we actually
|
||||||
* add classes?
|
* add classes?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user