resolved: rr - print formated timestamps in RRSIG
This commit is contained in:
parent
1bf968f363
commit
7c6423e191
1
TODO
1
TODO
|
@ -343,7 +343,6 @@ Features:
|
||||||
we always process them before we process client requests
|
we always process them before we process client requests
|
||||||
- DNSSEC
|
- DNSSEC
|
||||||
- add display of private key types (http://tools.ietf.org/html/rfc4034#appendix-A.1.1)?
|
- add display of private key types (http://tools.ietf.org/html/rfc4034#appendix-A.1.1)?
|
||||||
- add nice formatting of DNS timestamps
|
|
||||||
- DNS
|
- DNS
|
||||||
- search paths
|
- search paths
|
||||||
- mDNS/DNS-SD
|
- mDNS/DNS-SD
|
||||||
|
|
|
@ -474,6 +474,21 @@ static char* format_location(uint32_t latitude, uint32_t longitude, uint32_t alt
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int format_timestamp_dns(char *buf, size_t l, time_t sec) {
|
||||||
|
struct tm tm;
|
||||||
|
|
||||||
|
assert(buf);
|
||||||
|
assert(l > strlen("YYYYMMDDHHmmSS"));
|
||||||
|
|
||||||
|
if (!gmtime_r(&sec, &tm))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (strftime(buf, l, "%Y%m%d%H%M%S", &tm) <= 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) {
|
int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) {
|
||||||
_cleanup_free_ char *k = NULL, *t = NULL;
|
_cleanup_free_ char *k = NULL, *t = NULL;
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -625,6 +640,7 @@ int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) {
|
||||||
|
|
||||||
case DNS_TYPE_RRSIG: {
|
case DNS_TYPE_RRSIG: {
|
||||||
const char *type, *alg;
|
const char *type, *alg;
|
||||||
|
char expiration[strlen("YYYYMMDDHHmmSS") + 1], inception[strlen("YYYYMMDDHHmmSS") + 1];
|
||||||
|
|
||||||
type = dns_type_to_string(rr->rrsig.type_covered);
|
type = dns_type_to_string(rr->rrsig.type_covered);
|
||||||
alg = dnssec_algorithm_to_string(rr->rrsig.algorithm);
|
alg = dnssec_algorithm_to_string(rr->rrsig.algorithm);
|
||||||
|
@ -633,10 +649,18 @@ int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) {
|
||||||
if (!t)
|
if (!t)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
r = format_timestamp_dns(expiration, sizeof(expiration), rr->rrsig.expiration);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
r = format_timestamp_dns(inception, sizeof(inception), rr->rrsig.inception);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
/* TYPE?? follows
|
/* TYPE?? follows
|
||||||
* http://tools.ietf.org/html/rfc3597#section-5 */
|
* http://tools.ietf.org/html/rfc3597#section-5 */
|
||||||
|
|
||||||
r = asprintf(&s, "%s %s%.*u %.*s%.*u %u %u %u %u %u %s %s",
|
r = asprintf(&s, "%s %s%.*u %.*s%.*u %u %u %s %s %u %s %s",
|
||||||
k,
|
k,
|
||||||
type ?: "TYPE",
|
type ?: "TYPE",
|
||||||
type ? 0 : 1, type ? 0u : (unsigned) rr->rrsig.type_covered,
|
type ? 0 : 1, type ? 0u : (unsigned) rr->rrsig.type_covered,
|
||||||
|
@ -644,8 +668,8 @@ int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) {
|
||||||
alg ? 0 : 1, alg ? 0u : (unsigned) rr->rrsig.algorithm,
|
alg ? 0 : 1, alg ? 0u : (unsigned) rr->rrsig.algorithm,
|
||||||
rr->rrsig.labels,
|
rr->rrsig.labels,
|
||||||
rr->rrsig.original_ttl,
|
rr->rrsig.original_ttl,
|
||||||
rr->rrsig.expiration,
|
expiration,
|
||||||
rr->rrsig.inception,
|
inception,
|
||||||
rr->rrsig.key_tag,
|
rr->rrsig.key_tag,
|
||||||
rr->rrsig.signer,
|
rr->rrsig.signer,
|
||||||
t);
|
t);
|
||||||
|
|
Loading…
Reference in New Issue