From 61524c58020d03b22e750e8bf7a1871acbfdb8c0 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 10 Feb 2022 10:43:16 +0100 Subject: Merging upstream version 0.3.3. Signed-off-by: Daniel Baumann --- src/dnswire/dnstap.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 3 deletions(-) (limited to 'src/dnswire') diff --git a/src/dnswire/dnstap.h b/src/dnswire/dnstap.h index 97da495..7a01898 100644 --- a/src/dnswire/dnstap.h +++ b/src/dnswire/dnstap.h @@ -52,6 +52,8 @@ enum dnstap_message_type { DNSTAP_MESSAGE_TYPE_STUB_RESPONSE = 10, DNSTAP_MESSAGE_TYPE_TOOL_QUERY = 11, DNSTAP_MESSAGE_TYPE_TOOL_RESPONSE = 12, + DNSTAP_MESSAGE_TYPE_UPDATE_QUERY = 13, + DNSTAP_MESSAGE_TYPE_UPDATE_RESPONSE = 14, }; extern const char* const DNSTAP_MESSAGE_TYPE_STRING[]; @@ -63,15 +65,42 @@ enum dnstap_socket_family { extern const char* const DNSTAP_SOCKET_FAMILY_STRING[]; enum dnstap_socket_protocol { - DNSTAP_SOCKET_PROTOCOL_UNKNOWN = 0, - DNSTAP_SOCKET_PROTOCOL_UDP = 1, - DNSTAP_SOCKET_PROTOCOL_TCP = 2, + DNSTAP_SOCKET_PROTOCOL_UNKNOWN = 0, + DNSTAP_SOCKET_PROTOCOL_UDP = 1, + DNSTAP_SOCKET_PROTOCOL_TCP = 2, + DNSTAP_SOCKET_PROTOCOL_DOT = 3, + DNSTAP_SOCKET_PROTOCOL_DOH = 4, + DNSTAP_SOCKET_PROTOCOL_DNSCryptUDP = 5, + DNSTAP_SOCKET_PROTOCOL_DNSCryptTCP = 6, }; extern const char* const DNSTAP_SOCKET_PROTOCOL_STRING[]; +enum dnstap_policy_action { + DNSTAP_POLICY_ACTION_UNKNOWN = 0, + DNSTAP_POLICY_ACTION_NXDOMAIN = 1, + DNSTAP_POLICY_ACTION_NODATA = 2, + DNSTAP_POLICY_ACTION_PASS = 3, + DNSTAP_POLICY_ACTION_DROP = 4, + DNSTAP_POLICY_ACTION_TRUNCATE = 5, + DNSTAP_POLICY_ACTION_LOCAL_DATA = 6, +}; +extern const char* const DNSTAP_POLICY_ACTION_STRING[]; + +enum dnstap_policy_match { + DNSTAP_POLICY_MATCH_UNKNOWN = 0, + DNSTAP_POLICY_MATCH_QNAME = 1, + DNSTAP_POLICY_MATCH_CLIENT_IP = 2, + DNSTAP_POLICY_MATCH_RESPONSE_IP = 3, + DNSTAP_POLICY_MATCH_NS_NAME = 4, + DNSTAP_POLICY_MATCH_NS_IP = 5, +}; +extern const char* const DNSTAP_POLICY_MATCH_STRING[]; + struct dnstap { Dnstap__Dnstap dnstap; Dnstap__Message message; + Dnstap__Policy policy; + bool _policy_type_alloced; Dnstap__Dnstap* unpacked_dnstap; }; @@ -80,6 +109,7 @@ struct dnstap { { \ .dnstap = DNSTAP__DNSTAP__INIT, \ .message = DNSTAP__MESSAGE__INIT, \ + .policy = DNSTAP__POLICY__INIT, \ .unpacked_dnstap = 0, \ } @@ -140,6 +170,39 @@ struct dnstap { (d).message.socket_protocol = (enum _Dnstap__SocketProtocol)DNSTAP_MESSAGE_TYPE_UNKNOWN; \ } +#define dnstap_message_has_policy(d) ((d).dnstap.message->policy != 0) +#define dnstap_message_use_policy(d) (d).dnstap.message->policy = &(d).policy +void dnstap_message_clear_policy(struct dnstap*); +#define dnstap_message_policy_set_action(d, v) \ + switch (v) { \ + case DNSTAP_POLICY_ACTION_NXDOMAIN: \ + case DNSTAP_POLICY_ACTION_NODATA: \ + case DNSTAP_POLICY_ACTION_PASS: \ + case DNSTAP_POLICY_ACTION_DROP: \ + case DNSTAP_POLICY_ACTION_TRUNCATE: \ + case DNSTAP_POLICY_ACTION_LOCAL_DATA: \ + (d).policy.has_action = true; \ + (d).policy.action = (enum _Dnstap__Policy__Action)v; \ + break; \ + default: \ + (d).policy.has_action = false; \ + (d).policy.action = (enum _Dnstap__Policy__Action)DNSTAP_POLICY_ACTION_UNKNOWN; \ + } +#define dnstap_message_policy_set_match(d, v) \ + switch (v) { \ + case DNSTAP_POLICY_MATCH_QNAME: \ + case DNSTAP_POLICY_MATCH_CLIENT_IP: \ + case DNSTAP_POLICY_MATCH_RESPONSE_IP: \ + case DNSTAP_POLICY_MATCH_NS_NAME: \ + case DNSTAP_POLICY_MATCH_NS_IP: \ + (d).policy.has_match = true; \ + (d).policy.match = (enum _Dnstap__Policy__Match)v; \ + break; \ + default: \ + (d).policy.has_match = false; \ + (d).policy.match = (enum _Dnstap__Policy__Match)DNSTAP_POLICY_MATCH_UNKNOWN; \ + } + int dnstap_decode_protobuf(struct dnstap*, const uint8_t*, size_t); // int dnstap_decode_cbor(struct dnstap*, const uint8_t*, size_t); -- cgit v1.2.3