From 665f12a744dea29a4e5437ecca918ed5d57b5744 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 12 Apr 2018 00:09:40 +0000 Subject: Add CAA record support --- src/libs6dns/s6dns_message_get_caa.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/libs6dns/s6dns_message_get_caa.c (limited to 'src/libs6dns/s6dns_message_get_caa.c') diff --git a/src/libs6dns/s6dns_message_get_caa.c b/src/libs6dns/s6dns_message_get_caa.c new file mode 100644 index 0000000..a97b8c0 --- /dev/null +++ b/src/libs6dns/s6dns_message_get_caa.c @@ -0,0 +1,24 @@ +/* ISC license. */ + +#include +#include +#include +#include +#include + +int s6dns_message_get_caa (s6dns_message_rr_caa_t *caa, char const *packet, unsigned int packetlen, unsigned int *pos, uint16_t rdlength) +{ + unsigned char taglen ; + if (rdlength < 4) return (errno = EPROTO, 0) ; + if (*pos + rdlength > packetlen) return (errno = EPROTO, 0) ; + caa->flags = packet[(*pos)++] ; + taglen = packet[(*pos)++] ; + if (rdlength < taglen + 3 || rdlength > taglen + 257) return (errno = EPROTO, 0) ; + memcpy(caa->tag, packet + *pos, taglen) ; + caa->tag[taglen] = 0 ; + *pos += taglen ; + memcpy(caa->value, packet + *pos, rdlength - taglen - 2) ; + caa->value[rdlength - taglen - 1] = 0 ; + *pos += rdlength - taglen - 2 ; + return 1 ; +} -- cgit v1.3.1