/* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: modules/dnstap/dnstap.proto */ #ifndef PROTOBUF_C_modules_2fdnstap_2fdnstap_2eproto__INCLUDED #define PROTOBUF_C_modules_2fdnstap_2fdnstap_2eproto__INCLUDED #include PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1000000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. #elif 1002001 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif typedef struct _Dnstap__Dnstap Dnstap__Dnstap; typedef struct _Dnstap__Message Dnstap__Message; /* --- enums --- */ /* * Identifies which field below is filled in. */ typedef enum _Dnstap__Dnstap__Type { DNSTAP__DNSTAP__TYPE__MESSAGE = 1 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__DNSTAP__TYPE) } Dnstap__Dnstap__Type; typedef enum _Dnstap__Message__Type { /* * AUTH_QUERY is a DNS query message received from a resolver by an * authoritative name server, from the perspective of the authoritative * name server. */ DNSTAP__MESSAGE__TYPE__AUTH_QUERY = 1, /* * AUTH_RESPONSE is a DNS response message sent from an authoritative * name server to a resolver, from the perspective of the authoritative * name server. */ DNSTAP__MESSAGE__TYPE__AUTH_RESPONSE = 2, /* * RESOLVER_QUERY is a DNS query message sent from a resolver to an * authoritative name server, from the perspective of the resolver. * Resolvers typically clear the RD (recursion desired) bit when * sending queries. */ DNSTAP__MESSAGE__TYPE__RESOLVER_QUERY = 3, /* * RESOLVER_RESPONSE is a DNS response message received from an * authoritative name server by a resolver, from the perspective of * the resolver. */ DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE = 4, /* * CLIENT_QUERY is a DNS query message sent from a client to a DNS * server which is expected to perform further recursion, from the * perspective of the DNS server. The client may be a stub resolver or * forwarder or some other type of software which typically sets the RD * (recursion desired) bit when querying the DNS server. The DNS server * may be a simple forwarding proxy or it may be a full recursive * resolver. */ DNSTAP__MESSAGE__TYPE__CLIENT_QUERY = 5, /* * CLIENT_RESPONSE is a DNS response message sent from a DNS server to * a client, from the perspective of the DNS server. The DNS server * typically sets the RA (recursion available) bit when responding. */ DNSTAP__MESSAGE__TYPE__CLIENT_RESPONSE = 6, /* * FORWARDER_QUERY is a DNS query message sent from a downstream DNS * server to an upstream DNS server which is expected to perform * further recursion, from the perspective of the downstream DNS * server. */ DNSTAP__MESSAGE__TYPE__FORWARDER_QUERY = 7, /* * FORWARDER_RESPONSE is a DNS response message sent from an upstream * DNS server performing recursion to a downstream DNS server, from the * perspective of the downstream DNS server. */ DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE = 8, /* * STUB_QUERY is a DNS query message sent from a stub resolver to a DNS * server, from the perspective of the stub resolver. */ DNSTAP__MESSAGE__TYPE__STUB_QUERY = 9, /* * STUB_RESPONSE is a DNS response message sent from a DNS server to a * stub resolver, from the perspective of the stub resolver. */ DNSTAP__MESSAGE__TYPE__STUB_RESPONSE = 10, /* * TOOL_QUERY is a DNS query message sent from a DNS software tool to a * DNS server, from the perspective of the tool. */ DNSTAP__MESSAGE__TYPE__TOOL_QUERY = 11, /* * TOOL_RESPONSE is a DNS response message received by a DNS software * tool from a DNS server, from the perspective of the tool. */ DNSTAP__MESSAGE__TYPE__TOOL_RESPONSE = 12 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__MESSAGE__TYPE) } Dnstap__Message__Type; /* * SocketFamily: the network protocol family of a socket. This specifies how * to interpret "network address" fields. */ typedef enum _Dnstap__SocketFamily { /* * IPv4 (RFC 791) */ DNSTAP__SOCKET_FAMILY__INET = 1, /* * IPv6 (RFC 2460) */ DNSTAP__SOCKET_FAMILY__INET6 = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_FAMILY) } Dnstap__SocketFamily; /* * SocketProtocol: the transport protocol of a socket. This specifies how to * interpret "transport port" fields. */ typedef enum _Dnstap__SocketProtocol { /* * User Datagram Protocol (RFC 768) */ DNSTAP__SOCKET_PROTOCOL__UDP = 1, /* * Transmission Control Protocol (RFC 793) */ DNSTAP__SOCKET_PROTOCOL__TCP = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_PROTOCOL) } Dnstap__SocketProtocol; /* --- messages --- */ /* * "Dnstap": this is the top-level dnstap type, which is a "union" type that * contains other kinds of dnstap payloads, although currently only one type * of dnstap payload is defined. * See: https://developers.google.com/protocol-buffers/docs/techniques#union */ struct _Dnstap__Dnstap { ProtobufCMessage base; /* * DNS server identity. * If enabled, this is the identity string of the DNS server which generated * this message. Typically this would be the same string as returned by an * "NSID" (RFC 5001) query. */ protobuf_c_boolean has_identity; ProtobufCBinaryData identity; /* * DNS server version. * If enabled, this is the version string of the DNS server which generated * this message. Typically this would be the same string as returned by a * "version.bind" query. */ protobuf_c_boolean has_version; ProtobufCBinaryData version; /* * Extra data for this payload. * This field can be used for adding an arbitrary byte-string annotation to * the payload. No encoding or interpretation is applied or enforced. */ protobuf_c_boolean has_extra; ProtobufCBinaryData extra; Dnstap__Dnstap__Type type; /* * One of the following will be filled in. */ Dnstap__Message *message; }; #define DNSTAP__DNSTAP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&dnstap__dnstap__descriptor) \ , 0,{0,NULL}, 0,{0,NULL}, 0,{0,NULL}, 0, NULL } /* * Message: a wire-format (RFC 1035 section 4) DNS message and associated * metadata. Applications generating "Message" payloads should follow * certain requirements based on the MessageType, see below. */ struct _Dnstap__Message { ProtobufCMessage base; /* * One of the Type values described above. */ Dnstap__Message__Type type; /* * One of the SocketFamily values described above. */ protobuf_c_boolean has_socket_family; Dnstap__SocketFamily socket_family; /* * One of the SocketProtocol values described above. */ protobuf_c_boolean has_socket_protocol; Dnstap__SocketProtocol socket_protocol; /* * The network address of the message initiator. * For SocketFamily INET, this field is 4 octets (IPv4 address). * For SocketFamily INET6, this field is 16 octets (IPv6 address). */ protobuf_c_boolean has_query_address; ProtobufCBinaryData query_address; /* * The network address of the message responder. * For SocketFamily INET, this field is 4 octets (IPv4 address). * For SocketFamily INET6, this field is 16 octets (IPv6 address). */ protobuf_c_boolean has_response_address; ProtobufCBinaryData response_address; /* * The transport port of the message initiator. * This is a 16-bit UDP or TCP port number, depending on SocketProtocol. */ protobuf_c_boolean has_query_port; uint32_t query_port; /* * The transport port of the message responder. * This is a 16-bit UDP or TCP port number, depending on SocketProtocol. */ protobuf_c_boolean has_response_port; uint32_t response_port; /* * The time at which the DNS query message was sent or received, depending * on whether this is an AUTH_QUERY, RESOLVER_QUERY, or CLIENT_QUERY. * This is the number of seconds since the UNIX epoch. */ protobuf_c_boolean has_query_time_sec; uint64_t query_time_sec; /* * The time at which the DNS query message was sent or received. * This is the seconds fraction, expressed as a count of nanoseconds. */ protobuf_c_boolean has_query_time_nsec; uint32_t query_time_nsec; /* * The initiator's original wire-format DNS query message, verbatim. */ protobuf_c_boolean has_query_message; ProtobufCBinaryData query_message; /* * The "zone" or "bailiwick" pertaining to the DNS query message. * This is a wire-format DNS domain name. */ protobuf_c_boolean has_query_zone; ProtobufCBinaryData query_zone; /* * The time at which the DNS response message was sent or received, * depending on whether this is an AUTH_RESPONSE, RESOLVER_RESPONSE, or * CLIENT_RESPONSE. * This is the number of seconds since the UNIX epoch. */ protobuf_c_boolean has_response_time_sec; uint64_t response_time_sec; /* * The time at which the DNS response message was sent or received. * This is the seconds fraction, expressed as a count of nanoseconds. */ protobuf_c_boolean has_response_time_nsec; uint32_t response_time_nsec; /* * The responder's original wire-format DNS response message, verbatim. */ protobuf_c_boolean has_response_message; ProtobufCBinaryData response_message; }; #define DNSTAP__MESSAGE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&dnstap__message__descriptor) \ , 0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,{0,NULL} } /* Dnstap__Dnstap methods */ void dnstap__dnstap__init (Dnstap__Dnstap *message); size_t dnstap__dnstap__get_packed_size (const Dnstap__Dnstap *message); size_t dnstap__dnstap__pack (const Dnstap__Dnstap *message, uint8_t *out); size_t dnstap__dnstap__pack_to_buffer (const Dnstap__Dnstap *message, ProtobufCBuffer *buffer); Dnstap__Dnstap * dnstap__dnstap__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void dnstap__dnstap__free_unpacked (Dnstap__Dnstap *message, ProtobufCAllocator *allocator); /* Dnstap__Message methods */ void dnstap__message__init (Dnstap__Message *message); size_t dnstap__message__get_packed_size (const Dnstap__Message *message); size_t dnstap__message__pack (const Dnstap__Message *message, uint8_t *out); size_t dnstap__message__pack_to_buffer (const Dnstap__Message *message, ProtobufCBuffer *buffer); Dnstap__Message * dnstap__message__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void dnstap__message__free_unpacked (Dnstap__Message *message, ProtobufCAllocator *allocator); /* --- per-message closures --- */ typedef void (*Dnstap__Dnstap_Closure) (const Dnstap__Dnstap *message, void *closure_data); typedef void (*Dnstap__Message_Closure) (const Dnstap__Message *message, void *closure_data); /* --- services --- */ /* --- descriptors --- */ extern const ProtobufCEnumDescriptor dnstap__socket_family__descriptor; extern const ProtobufCEnumDescriptor dnstap__socket_protocol__descriptor; extern const ProtobufCMessageDescriptor dnstap__dnstap__descriptor; extern const ProtobufCEnumDescriptor dnstap__dnstap__type__descriptor; extern const ProtobufCMessageDescriptor dnstap__message__descriptor; extern const ProtobufCEnumDescriptor dnstap__message__type__descriptor; PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_modules_2fdnstap_2fdnstap_2eproto__INCLUDED */