Skip to content

Commit

Permalink
EDNS filters
Browse files Browse the repository at this point in the history
- Add filters for EDNS(0) cookies, NSID, EDE and ECS
  • Loading branch information
jelu committed Jul 7, 2023
1 parent 0f22a96 commit 8259f30
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/dns_message.c
Expand Up @@ -241,6 +241,26 @@ static int edns0_filter(const dns_message* m, const void* ctx)
return m->edns.found && m->edns.version == 0;
}

static int edns0_cookie_filter(const dns_message* m, const void* ctx)
{
return m->edns.option.cookie;
}

static int edns0_nsid_filter(const dns_message* m, const void* ctx)
{
return m->edns.option.nsid;
}

static int edns0_ede_filter(const dns_message* m, const void* ctx)
{
return m->edns.option.ede;
}

static int edns0_ecs_filter(const dns_message* m, const void* ctx)
{
return m->edns.option.ecs;
}

/*
* Helpers
*/
Expand Down Expand Up @@ -507,6 +527,10 @@ void dns_message_filters_init(void)
fl = md_array_filter_list_append(fl, md_array_create_filter("priming-query", priming_query_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("servfail-only", servfail_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("edns0-only", edns0_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("edns0-cookie-only", edns0_cookie_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("edns0-nsid-only", edns0_nsid_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("edns0-ede-only", edns0_ede_filter, 0));
fl = md_array_filter_list_append(fl, md_array_create_filter("edns0-ecs-only", edns0_ecs_filter, 0));
(void)md_array_filter_list_append(fl, md_array_create_filter("authentic-data-only", ad_filter, 0));
}

Expand Down
12 changes: 12 additions & 0 deletions src/dsc.conf.5.in
Expand Up @@ -764,6 +764,18 @@ Count only DNS messages with the AD bit is set.
.TP
\fBedns0-only\fR
Count only DNS messages with EDNS(0) options.
.TP
\fBedns0-cookie-only\fR
Count only DNS messages with EDNS(0) Cookie option.
.TP
\fBedns0-nsid-only\fR
Count only DNS messages with EDNS(0) DNS Name Server Identifier option.
.TP
\fBedns0-ede-only\fR
Count only DNS messages with EDNS(0) Extended DNS Errors option.
.TP
\fBedns0-ecs-only\fR
Count only DNS messages with EDNS(0) Client Subnet option.
.SH "QNAME FILTERS"
Defines a custom QNAME-based filter for DNS messages.
If you refer to this named filter on a dataset line, then only queries
Expand Down

0 comments on commit 8259f30

Please sign in to comment.