dnstap 0.1.7

An implementation of the dnstap protocol
// This file is generated by rust-protobuf 3.0.1. Do not edit
// .proto file is parsed by pure
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]

//! Generated file from `dnstap_pb.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_0_1;

#[derive(PartialEq,Clone,Default,Debug)]
// @@protoc_insertion_point(message:dnstap.Dnstap)
pub struct Dnstap {
    // message fields
    // @@protoc_insertion_point(field:dnstap.Dnstap.identity)
    pub identity: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Dnstap.version)
    pub version: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Dnstap.extra)
    pub extra: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Dnstap.type)
    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<dnstap::Type>>,
    // @@protoc_insertion_point(field:dnstap.Dnstap.message)
    pub message: ::protobuf::MessageField<Message>,
    // special fields
    // @@protoc_insertion_point(special_field:dnstap.Dnstap.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a Dnstap {
    fn default() -> &'a Dnstap {
        <Dnstap as ::protobuf::Message>::default_instance()
    }
}

impl Dnstap {
    pub fn new() -> Dnstap {
        ::std::default::Default::default()
    }

    // optional bytes identity = 1;

    pub fn identity(&self) -> &[u8] {
        match self.identity.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_identity(&mut self) {
        self.identity = ::std::option::Option::None;
    }

    pub fn has_identity(&self) -> bool {
        self.identity.is_some()
    }

    // Param is passed by value, moved
    pub fn set_identity(&mut self, v: ::std::vec::Vec<u8>) {
        self.identity = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_identity(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.identity.is_none() {
            self.identity = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.identity.as_mut().unwrap()
    }

    // Take field
    pub fn take_identity(&mut self) -> ::std::vec::Vec<u8> {
        self.identity.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional bytes version = 2;

    pub fn version(&self) -> &[u8] {
        match self.version.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_version(&mut self) {
        self.version = ::std::option::Option::None;
    }

    pub fn has_version(&self) -> bool {
        self.version.is_some()
    }

    // Param is passed by value, moved
    pub fn set_version(&mut self, v: ::std::vec::Vec<u8>) {
        self.version = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_version(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.version.is_none() {
            self.version = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.version.as_mut().unwrap()
    }

    // Take field
    pub fn take_version(&mut self) -> ::std::vec::Vec<u8> {
        self.version.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional bytes extra = 3;

    pub fn extra(&self) -> &[u8] {
        match self.extra.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_extra(&mut self) {
        self.extra = ::std::option::Option::None;
    }

    pub fn has_extra(&self) -> bool {
        self.extra.is_some()
    }

    // Param is passed by value, moved
    pub fn set_extra(&mut self, v: ::std::vec::Vec<u8>) {
        self.extra = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_extra(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.extra.is_none() {
            self.extra = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.extra.as_mut().unwrap()
    }

    // Take field
    pub fn take_extra(&mut self) -> ::std::vec::Vec<u8> {
        self.extra.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // required .dnstap.Dnstap.Type type = 15;

    pub fn type_(&self) -> dnstap::Type {
        match self.type_ {
            Some(e) => e.enum_value_or(dnstap::Type::MESSAGE),
            None => dnstap::Type::MESSAGE,
        }
    }

    pub fn clear_type_(&mut self) {
        self.type_ = ::std::option::Option::None;
    }

    pub fn has_type(&self) -> bool {
        self.type_.is_some()
    }

    // Param is passed by value, moved
    pub fn set_type(&mut self, v: dnstap::Type) {
        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(5);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "identity",
            |m: &Dnstap| { &m.identity },
            |m: &mut Dnstap| { &mut m.identity },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "version",
            |m: &Dnstap| { &m.version },
            |m: &mut Dnstap| { &mut m.version },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "extra",
            |m: &Dnstap| { &m.extra },
            |m: &mut Dnstap| { &mut m.extra },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "type",
            |m: &Dnstap| { &m.type_ },
            |m: &mut Dnstap| { &mut m.type_ },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Message>(
            "message",
            |m: &Dnstap| { &m.message },
            |m: &mut Dnstap| { &mut m.message },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Dnstap>(
            "Dnstap",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for Dnstap {
    const NAME: &'static str = "Dnstap";

    fn is_initialized(&self) -> bool {
        if self.type_.is_none() {
            return false;
        }
        for v in &self.message {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                10 => {
                    self.identity = ::std::option::Option::Some(is.read_bytes()?);
                },
                18 => {
                    self.version = ::std::option::Option::Some(is.read_bytes()?);
                },
                26 => {
                    self.extra = ::std::option::Option::Some(is.read_bytes()?);
                },
                120 => {
                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                114 => {
                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.message)?;
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.identity.as_ref() {
            my_size += ::protobuf::rt::bytes_size(1, &v);
        }
        if let Some(v) = self.version.as_ref() {
            my_size += ::protobuf::rt::bytes_size(2, &v);
        }
        if let Some(v) = self.extra.as_ref() {
            my_size += ::protobuf::rt::bytes_size(3, &v);
        }
        if let Some(v) = self.type_ {
            my_size += ::protobuf::rt::int32_size(15, v.value());
        }
        if let Some(v) = self.message.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.identity.as_ref() {
            os.write_bytes(1, v)?;
        }
        if let Some(v) = self.version.as_ref() {
            os.write_bytes(2, v)?;
        }
        if let Some(v) = self.extra.as_ref() {
            os.write_bytes(3, v)?;
        }
        if let Some(v) = self.type_ {
            os.write_enum(15, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.message.as_ref() {
            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> Dnstap {
        Dnstap::new()
    }

    fn clear(&mut self) {
        self.identity = ::std::option::Option::None;
        self.version = ::std::option::Option::None;
        self.extra = ::std::option::Option::None;
        self.type_ = ::std::option::Option::None;
        self.message.clear();
        self.special_fields.clear();
    }

    fn default_instance() -> &'static Dnstap {
        static instance: Dnstap = Dnstap {
            identity: ::std::option::Option::None,
            version: ::std::option::Option::None,
            extra: ::std::option::Option::None,
            type_: ::std::option::Option::None,
            message: ::protobuf::MessageField::none(),
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for Dnstap {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("Dnstap").unwrap()).clone()
    }
}

impl ::std::fmt::Display for Dnstap {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for Dnstap {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

/// Nested message and enums of message `Dnstap`
pub mod dnstap {
    #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
    // @@protoc_insertion_point(enum:dnstap.Dnstap.Type)
    pub enum Type {
        // @@protoc_insertion_point(enum_value:dnstap.Dnstap.Type.MESSAGE)
        MESSAGE = 1,
    }

    impl ::protobuf::Enum for Type {
        const NAME: &'static str = "Type";

        fn value(&self) -> i32 {
            *self as i32
        }

        fn from_i32(value: i32) -> ::std::option::Option<Type> {
            match value {
                1 => ::std::option::Option::Some(Type::MESSAGE),
                _ => ::std::option::Option::None
            }
        }

        const VALUES: &'static [Type] = &[
            Type::MESSAGE,
        ];
    }

    impl ::protobuf::EnumFull for Type {
        fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
            static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
            descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("Dnstap.Type").unwrap()).clone()
        }

        fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
            let index = match self {
                Type::MESSAGE => 0,
            };
            Self::enum_descriptor().value_by_index(index)
        }
    }

    // Note, `Default` is implemented although default value is not 0
    impl ::std::default::Default for Type {
        fn default() -> Self {
            Type::MESSAGE
        }
    }

    impl Type {
        pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
            ::protobuf::reflect::GeneratedEnumDescriptorData::new::<Type>("Dnstap.Type")
        }
    }
}

#[derive(PartialEq,Clone,Default,Debug)]
// @@protoc_insertion_point(message:dnstap.Message)
pub struct Message {
    // message fields
    // @@protoc_insertion_point(field:dnstap.Message.type)
    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<message::Type>>,
    // @@protoc_insertion_point(field:dnstap.Message.socket_family)
    pub socket_family: ::std::option::Option<::protobuf::EnumOrUnknown<SocketFamily>>,
    // @@protoc_insertion_point(field:dnstap.Message.socket_protocol)
    pub socket_protocol: ::std::option::Option<::protobuf::EnumOrUnknown<SocketProtocol>>,
    // @@protoc_insertion_point(field:dnstap.Message.query_address)
    pub query_address: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Message.response_address)
    pub response_address: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Message.query_port)
    pub query_port: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:dnstap.Message.response_port)
    pub response_port: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:dnstap.Message.query_time_sec)
    pub query_time_sec: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:dnstap.Message.query_time_nsec)
    pub query_time_nsec: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:dnstap.Message.query_message)
    pub query_message: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Message.query_zone)
    pub query_zone: ::std::option::Option<::std::vec::Vec<u8>>,
    // @@protoc_insertion_point(field:dnstap.Message.response_time_sec)
    pub response_time_sec: ::std::option::Option<u64>,
    // @@protoc_insertion_point(field:dnstap.Message.response_time_nsec)
    pub response_time_nsec: ::std::option::Option<u32>,
    // @@protoc_insertion_point(field:dnstap.Message.response_message)
    pub response_message: ::std::option::Option<::std::vec::Vec<u8>>,
    // special fields
    // @@protoc_insertion_point(special_field:dnstap.Message.special_fields)
    pub special_fields: ::protobuf::SpecialFields,
}

impl<'a> ::std::default::Default for &'a Message {
    fn default() -> &'a Message {
        <Message as ::protobuf::Message>::default_instance()
    }
}

impl Message {
    pub fn new() -> Message {
        ::std::default::Default::default()
    }

    // required .dnstap.Message.Type type = 1;

    pub fn type_(&self) -> message::Type {
        match self.type_ {
            Some(e) => e.enum_value_or(message::Type::AUTH_QUERY),
            None => message::Type::AUTH_QUERY,
        }
    }

    pub fn clear_type_(&mut self) {
        self.type_ = ::std::option::Option::None;
    }

    pub fn has_type(&self) -> bool {
        self.type_.is_some()
    }

    // Param is passed by value, moved
    pub fn set_type(&mut self, v: message::Type) {
        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional .dnstap.SocketFamily socket_family = 2;

    pub fn socket_family(&self) -> SocketFamily {
        match self.socket_family {
            Some(e) => e.enum_value_or(SocketFamily::INET),
            None => SocketFamily::INET,
        }
    }

    pub fn clear_socket_family(&mut self) {
        self.socket_family = ::std::option::Option::None;
    }

    pub fn has_socket_family(&self) -> bool {
        self.socket_family.is_some()
    }

    // Param is passed by value, moved
    pub fn set_socket_family(&mut self, v: SocketFamily) {
        self.socket_family = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional .dnstap.SocketProtocol socket_protocol = 3;

    pub fn socket_protocol(&self) -> SocketProtocol {
        match self.socket_protocol {
            Some(e) => e.enum_value_or(SocketProtocol::UDP),
            None => SocketProtocol::UDP,
        }
    }

    pub fn clear_socket_protocol(&mut self) {
        self.socket_protocol = ::std::option::Option::None;
    }

    pub fn has_socket_protocol(&self) -> bool {
        self.socket_protocol.is_some()
    }

    // Param is passed by value, moved
    pub fn set_socket_protocol(&mut self, v: SocketProtocol) {
        self.socket_protocol = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
    }

    // optional bytes query_address = 4;

    pub fn query_address(&self) -> &[u8] {
        match self.query_address.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_query_address(&mut self) {
        self.query_address = ::std::option::Option::None;
    }

    pub fn has_query_address(&self) -> bool {
        self.query_address.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_address(&mut self, v: ::std::vec::Vec<u8>) {
        self.query_address = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_query_address(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.query_address.is_none() {
            self.query_address = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.query_address.as_mut().unwrap()
    }

    // Take field
    pub fn take_query_address(&mut self) -> ::std::vec::Vec<u8> {
        self.query_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional bytes response_address = 5;

    pub fn response_address(&self) -> &[u8] {
        match self.response_address.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_response_address(&mut self) {
        self.response_address = ::std::option::Option::None;
    }

    pub fn has_response_address(&self) -> bool {
        self.response_address.is_some()
    }

    // Param is passed by value, moved
    pub fn set_response_address(&mut self, v: ::std::vec::Vec<u8>) {
        self.response_address = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_response_address(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.response_address.is_none() {
            self.response_address = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.response_address.as_mut().unwrap()
    }

    // Take field
    pub fn take_response_address(&mut self) -> ::std::vec::Vec<u8> {
        self.response_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional uint32 query_port = 6;

    pub fn query_port(&self) -> u32 {
        self.query_port.unwrap_or(0)
    }

    pub fn clear_query_port(&mut self) {
        self.query_port = ::std::option::Option::None;
    }

    pub fn has_query_port(&self) -> bool {
        self.query_port.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_port(&mut self, v: u32) {
        self.query_port = ::std::option::Option::Some(v);
    }

    // optional uint32 response_port = 7;

    pub fn response_port(&self) -> u32 {
        self.response_port.unwrap_or(0)
    }

    pub fn clear_response_port(&mut self) {
        self.response_port = ::std::option::Option::None;
    }

    pub fn has_response_port(&self) -> bool {
        self.response_port.is_some()
    }

    // Param is passed by value, moved
    pub fn set_response_port(&mut self, v: u32) {
        self.response_port = ::std::option::Option::Some(v);
    }

    // optional uint64 query_time_sec = 8;

    pub fn query_time_sec(&self) -> u64 {
        self.query_time_sec.unwrap_or(0)
    }

    pub fn clear_query_time_sec(&mut self) {
        self.query_time_sec = ::std::option::Option::None;
    }

    pub fn has_query_time_sec(&self) -> bool {
        self.query_time_sec.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_time_sec(&mut self, v: u64) {
        self.query_time_sec = ::std::option::Option::Some(v);
    }

    // optional fixed32 query_time_nsec = 9;

    pub fn query_time_nsec(&self) -> u32 {
        self.query_time_nsec.unwrap_or(0)
    }

    pub fn clear_query_time_nsec(&mut self) {
        self.query_time_nsec = ::std::option::Option::None;
    }

    pub fn has_query_time_nsec(&self) -> bool {
        self.query_time_nsec.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_time_nsec(&mut self, v: u32) {
        self.query_time_nsec = ::std::option::Option::Some(v);
    }

    // optional bytes query_message = 10;

    pub fn query_message(&self) -> &[u8] {
        match self.query_message.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_query_message(&mut self) {
        self.query_message = ::std::option::Option::None;
    }

    pub fn has_query_message(&self) -> bool {
        self.query_message.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_message(&mut self, v: ::std::vec::Vec<u8>) {
        self.query_message = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_query_message(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.query_message.is_none() {
            self.query_message = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.query_message.as_mut().unwrap()
    }

    // Take field
    pub fn take_query_message(&mut self) -> ::std::vec::Vec<u8> {
        self.query_message.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional bytes query_zone = 11;

    pub fn query_zone(&self) -> &[u8] {
        match self.query_zone.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_query_zone(&mut self) {
        self.query_zone = ::std::option::Option::None;
    }

    pub fn has_query_zone(&self) -> bool {
        self.query_zone.is_some()
    }

    // Param is passed by value, moved
    pub fn set_query_zone(&mut self, v: ::std::vec::Vec<u8>) {
        self.query_zone = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_query_zone(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.query_zone.is_none() {
            self.query_zone = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.query_zone.as_mut().unwrap()
    }

    // Take field
    pub fn take_query_zone(&mut self) -> ::std::vec::Vec<u8> {
        self.query_zone.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    // optional uint64 response_time_sec = 12;

    pub fn response_time_sec(&self) -> u64 {
        self.response_time_sec.unwrap_or(0)
    }

    pub fn clear_response_time_sec(&mut self) {
        self.response_time_sec = ::std::option::Option::None;
    }

    pub fn has_response_time_sec(&self) -> bool {
        self.response_time_sec.is_some()
    }

    // Param is passed by value, moved
    pub fn set_response_time_sec(&mut self, v: u64) {
        self.response_time_sec = ::std::option::Option::Some(v);
    }

    // optional fixed32 response_time_nsec = 13;

    pub fn response_time_nsec(&self) -> u32 {
        self.response_time_nsec.unwrap_or(0)
    }

    pub fn clear_response_time_nsec(&mut self) {
        self.response_time_nsec = ::std::option::Option::None;
    }

    pub fn has_response_time_nsec(&self) -> bool {
        self.response_time_nsec.is_some()
    }

    // Param is passed by value, moved
    pub fn set_response_time_nsec(&mut self, v: u32) {
        self.response_time_nsec = ::std::option::Option::Some(v);
    }

    // optional bytes response_message = 14;

    pub fn response_message(&self) -> &[u8] {
        match self.response_message.as_ref() {
            Some(v) => v,
            None => &[],
        }
    }

    pub fn clear_response_message(&mut self) {
        self.response_message = ::std::option::Option::None;
    }

    pub fn has_response_message(&self) -> bool {
        self.response_message.is_some()
    }

    // Param is passed by value, moved
    pub fn set_response_message(&mut self, v: ::std::vec::Vec<u8>) {
        self.response_message = ::std::option::Option::Some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_response_message(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.response_message.is_none() {
            self.response_message = ::std::option::Option::Some(::std::vec::Vec::new());
        }
        self.response_message.as_mut().unwrap()
    }

    // Take field
    pub fn take_response_message(&mut self) -> ::std::vec::Vec<u8> {
        self.response_message.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }

    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
        let mut fields = ::std::vec::Vec::with_capacity(14);
        let mut oneofs = ::std::vec::Vec::with_capacity(0);
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "type",
            |m: &Message| { &m.type_ },
            |m: &mut Message| { &mut m.type_ },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "socket_family",
            |m: &Message| { &m.socket_family },
            |m: &mut Message| { &mut m.socket_family },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "socket_protocol",
            |m: &Message| { &m.socket_protocol },
            |m: &mut Message| { &mut m.socket_protocol },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_address",
            |m: &Message| { &m.query_address },
            |m: &mut Message| { &mut m.query_address },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "response_address",
            |m: &Message| { &m.response_address },
            |m: &mut Message| { &mut m.response_address },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_port",
            |m: &Message| { &m.query_port },
            |m: &mut Message| { &mut m.query_port },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "response_port",
            |m: &Message| { &m.response_port },
            |m: &mut Message| { &mut m.response_port },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_time_sec",
            |m: &Message| { &m.query_time_sec },
            |m: &mut Message| { &mut m.query_time_sec },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_time_nsec",
            |m: &Message| { &m.query_time_nsec },
            |m: &mut Message| { &mut m.query_time_nsec },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_message",
            |m: &Message| { &m.query_message },
            |m: &mut Message| { &mut m.query_message },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "query_zone",
            |m: &Message| { &m.query_zone },
            |m: &mut Message| { &mut m.query_zone },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "response_time_sec",
            |m: &Message| { &m.response_time_sec },
            |m: &mut Message| { &mut m.response_time_sec },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "response_time_nsec",
            |m: &Message| { &m.response_time_nsec },
            |m: &mut Message| { &mut m.response_time_nsec },
        ));
        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
            "response_message",
            |m: &Message| { &m.response_message },
            |m: &mut Message| { &mut m.response_message },
        ));
        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Message>(
            "Message",
            fields,
            oneofs,
        )
    }
}

impl ::protobuf::Message for Message {
    const NAME: &'static str = "Message";

    fn is_initialized(&self) -> bool {
        if self.type_.is_none() {
            return false;
        }
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
        while let Some(tag) = is.read_raw_tag_or_eof()? {
            match tag {
                8 => {
                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                16 => {
                    self.socket_family = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                24 => {
                    self.socket_protocol = ::std::option::Option::Some(is.read_enum_or_unknown()?);
                },
                34 => {
                    self.query_address = ::std::option::Option::Some(is.read_bytes()?);
                },
                42 => {
                    self.response_address = ::std::option::Option::Some(is.read_bytes()?);
                },
                48 => {
                    self.query_port = ::std::option::Option::Some(is.read_uint32()?);
                },
                56 => {
                    self.response_port = ::std::option::Option::Some(is.read_uint32()?);
                },
                64 => {
                    self.query_time_sec = ::std::option::Option::Some(is.read_uint64()?);
                },
                77 => {
                    self.query_time_nsec = ::std::option::Option::Some(is.read_fixed32()?);
                },
                82 => {
                    self.query_message = ::std::option::Option::Some(is.read_bytes()?);
                },
                90 => {
                    self.query_zone = ::std::option::Option::Some(is.read_bytes()?);
                },
                96 => {
                    self.response_time_sec = ::std::option::Option::Some(is.read_uint64()?);
                },
                109 => {
                    self.response_time_nsec = ::std::option::Option::Some(is.read_fixed32()?);
                },
                114 => {
                    self.response_message = ::std::option::Option::Some(is.read_bytes()?);
                },
                tag => {
                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u64 {
        let mut my_size = 0;
        if let Some(v) = self.type_ {
            my_size += ::protobuf::rt::int32_size(1, v.value());
        }
        if let Some(v) = self.socket_family {
            my_size += ::protobuf::rt::int32_size(2, v.value());
        }
        if let Some(v) = self.socket_protocol {
            my_size += ::protobuf::rt::int32_size(3, v.value());
        }
        if let Some(v) = self.query_address.as_ref() {
            my_size += ::protobuf::rt::bytes_size(4, &v);
        }
        if let Some(v) = self.response_address.as_ref() {
            my_size += ::protobuf::rt::bytes_size(5, &v);
        }
        if let Some(v) = self.query_port {
            my_size += ::protobuf::rt::uint32_size(6, v);
        }
        if let Some(v) = self.response_port {
            my_size += ::protobuf::rt::uint32_size(7, v);
        }
        if let Some(v) = self.query_time_sec {
            my_size += ::protobuf::rt::uint64_size(8, v);
        }
        if let Some(v) = self.query_time_nsec {
            my_size += 1 + 4;
        }
        if let Some(v) = self.query_message.as_ref() {
            my_size += ::protobuf::rt::bytes_size(10, &v);
        }
        if let Some(v) = self.query_zone.as_ref() {
            my_size += ::protobuf::rt::bytes_size(11, &v);
        }
        if let Some(v) = self.response_time_sec {
            my_size += ::protobuf::rt::uint64_size(12, v);
        }
        if let Some(v) = self.response_time_nsec {
            my_size += 1 + 4;
        }
        if let Some(v) = self.response_message.as_ref() {
            my_size += ::protobuf::rt::bytes_size(14, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
        self.special_fields.cached_size().set(my_size as u32);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
        if let Some(v) = self.type_ {
            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.socket_family {
            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.socket_protocol {
            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
        }
        if let Some(v) = self.query_address.as_ref() {
            os.write_bytes(4, v)?;
        }
        if let Some(v) = self.response_address.as_ref() {
            os.write_bytes(5, v)?;
        }
        if let Some(v) = self.query_port {
            os.write_uint32(6, v)?;
        }
        if let Some(v) = self.response_port {
            os.write_uint32(7, v)?;
        }
        if let Some(v) = self.query_time_sec {
            os.write_uint64(8, v)?;
        }
        if let Some(v) = self.query_time_nsec {
            os.write_fixed32(9, v)?;
        }
        if let Some(v) = self.query_message.as_ref() {
            os.write_bytes(10, v)?;
        }
        if let Some(v) = self.query_zone.as_ref() {
            os.write_bytes(11, v)?;
        }
        if let Some(v) = self.response_time_sec {
            os.write_uint64(12, v)?;
        }
        if let Some(v) = self.response_time_nsec {
            os.write_fixed32(13, v)?;
        }
        if let Some(v) = self.response_message.as_ref() {
            os.write_bytes(14, v)?;
        }
        os.write_unknown_fields(self.special_fields.unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn special_fields(&self) -> &::protobuf::SpecialFields {
        &self.special_fields
    }

    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
        &mut self.special_fields
    }

    fn new() -> Message {
        Message::new()
    }

    fn clear(&mut self) {
        self.type_ = ::std::option::Option::None;
        self.socket_family = ::std::option::Option::None;
        self.socket_protocol = ::std::option::Option::None;
        self.query_address = ::std::option::Option::None;
        self.response_address = ::std::option::Option::None;
        self.query_port = ::std::option::Option::None;
        self.response_port = ::std::option::Option::None;
        self.query_time_sec = ::std::option::Option::None;
        self.query_time_nsec = ::std::option::Option::None;
        self.query_message = ::std::option::Option::None;
        self.query_zone = ::std::option::Option::None;
        self.response_time_sec = ::std::option::Option::None;
        self.response_time_nsec = ::std::option::Option::None;
        self.response_message = ::std::option::Option::None;
        self.special_fields.clear();
    }

    fn default_instance() -> &'static Message {
        static instance: Message = Message {
            type_: ::std::option::Option::None,
            socket_family: ::std::option::Option::None,
            socket_protocol: ::std::option::Option::None,
            query_address: ::std::option::Option::None,
            response_address: ::std::option::Option::None,
            query_port: ::std::option::Option::None,
            response_port: ::std::option::Option::None,
            query_time_sec: ::std::option::Option::None,
            query_time_nsec: ::std::option::Option::None,
            query_message: ::std::option::Option::None,
            query_zone: ::std::option::Option::None,
            response_time_sec: ::std::option::Option::None,
            response_time_nsec: ::std::option::Option::None,
            response_message: ::std::option::Option::None,
            special_fields: ::protobuf::SpecialFields::new(),
        };
        &instance
    }
}

impl ::protobuf::MessageFull for Message {
    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().message_by_package_relative_name("Message").unwrap()).clone()
    }
}

impl ::std::fmt::Display for Message {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for Message {
    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}

/// Nested message and enums of message `Message`
pub mod message {
    #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
    // @@protoc_insertion_point(enum:dnstap.Message.Type)
    pub enum Type {
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.AUTH_QUERY)
        AUTH_QUERY = 1,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.AUTH_RESPONSE)
        AUTH_RESPONSE = 2,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.RESOLVER_QUERY)
        RESOLVER_QUERY = 3,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.RESOLVER_RESPONSE)
        RESOLVER_RESPONSE = 4,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.CLIENT_QUERY)
        CLIENT_QUERY = 5,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.CLIENT_RESPONSE)
        CLIENT_RESPONSE = 6,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.FORWARDER_QUERY)
        FORWARDER_QUERY = 7,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.FORWARDER_RESPONSE)
        FORWARDER_RESPONSE = 8,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.STUB_QUERY)
        STUB_QUERY = 9,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.STUB_RESPONSE)
        STUB_RESPONSE = 10,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.TOOL_QUERY)
        TOOL_QUERY = 11,
        // @@protoc_insertion_point(enum_value:dnstap.Message.Type.TOOL_RESPONSE)
        TOOL_RESPONSE = 12,
    }

    impl ::protobuf::Enum for Type {
        const NAME: &'static str = "Type";

        fn value(&self) -> i32 {
            *self as i32
        }

        fn from_i32(value: i32) -> ::std::option::Option<Type> {
            match value {
                1 => ::std::option::Option::Some(Type::AUTH_QUERY),
                2 => ::std::option::Option::Some(Type::AUTH_RESPONSE),
                3 => ::std::option::Option::Some(Type::RESOLVER_QUERY),
                4 => ::std::option::Option::Some(Type::RESOLVER_RESPONSE),
                5 => ::std::option::Option::Some(Type::CLIENT_QUERY),
                6 => ::std::option::Option::Some(Type::CLIENT_RESPONSE),
                7 => ::std::option::Option::Some(Type::FORWARDER_QUERY),
                8 => ::std::option::Option::Some(Type::FORWARDER_RESPONSE),
                9 => ::std::option::Option::Some(Type::STUB_QUERY),
                10 => ::std::option::Option::Some(Type::STUB_RESPONSE),
                11 => ::std::option::Option::Some(Type::TOOL_QUERY),
                12 => ::std::option::Option::Some(Type::TOOL_RESPONSE),
                _ => ::std::option::Option::None
            }
        }

        const VALUES: &'static [Type] = &[
            Type::AUTH_QUERY,
            Type::AUTH_RESPONSE,
            Type::RESOLVER_QUERY,
            Type::RESOLVER_RESPONSE,
            Type::CLIENT_QUERY,
            Type::CLIENT_RESPONSE,
            Type::FORWARDER_QUERY,
            Type::FORWARDER_RESPONSE,
            Type::STUB_QUERY,
            Type::STUB_RESPONSE,
            Type::TOOL_QUERY,
            Type::TOOL_RESPONSE,
        ];
    }

    impl ::protobuf::EnumFull for Type {
        fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
            static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
            descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("Message.Type").unwrap()).clone()
        }

        fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
            let index = match self {
                Type::AUTH_QUERY => 0,
                Type::AUTH_RESPONSE => 1,
                Type::RESOLVER_QUERY => 2,
                Type::RESOLVER_RESPONSE => 3,
                Type::CLIENT_QUERY => 4,
                Type::CLIENT_RESPONSE => 5,
                Type::FORWARDER_QUERY => 6,
                Type::FORWARDER_RESPONSE => 7,
                Type::STUB_QUERY => 8,
                Type::STUB_RESPONSE => 9,
                Type::TOOL_QUERY => 10,
                Type::TOOL_RESPONSE => 11,
            };
            Self::enum_descriptor().value_by_index(index)
        }
    }

    // Note, `Default` is implemented although default value is not 0
    impl ::std::default::Default for Type {
        fn default() -> Self {
            Type::AUTH_QUERY
        }
    }

    impl Type {
        pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
            ::protobuf::reflect::GeneratedEnumDescriptorData::new::<Type>("Message.Type")
        }
    }
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:dnstap.SocketFamily)
pub enum SocketFamily {
    // @@protoc_insertion_point(enum_value:dnstap.SocketFamily.INET)
    INET = 1,
    // @@protoc_insertion_point(enum_value:dnstap.SocketFamily.INET6)
    INET6 = 2,
}

impl ::protobuf::Enum for SocketFamily {
    const NAME: &'static str = "SocketFamily";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<SocketFamily> {
        match value {
            1 => ::std::option::Option::Some(SocketFamily::INET),
            2 => ::std::option::Option::Some(SocketFamily::INET6),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [SocketFamily] = &[
        SocketFamily::INET,
        SocketFamily::INET6,
    ];
}

impl ::protobuf::EnumFull for SocketFamily {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("SocketFamily").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = match self {
            SocketFamily::INET => 0,
            SocketFamily::INET6 => 1,
        };
        Self::enum_descriptor().value_by_index(index)
    }
}

// Note, `Default` is implemented although default value is not 0
impl ::std::default::Default for SocketFamily {
    fn default() -> Self {
        SocketFamily::INET
    }
}

impl SocketFamily {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<SocketFamily>("SocketFamily")
    }
}

#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
// @@protoc_insertion_point(enum:dnstap.SocketProtocol)
pub enum SocketProtocol {
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.UDP)
    UDP = 1,
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.TCP)
    TCP = 2,
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.DOT)
    DOT = 3,
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.DOH)
    DOH = 4,
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.DNSCryptUDP)
    DNSCryptUDP = 5,
    // @@protoc_insertion_point(enum_value:dnstap.SocketProtocol.DNSCryptTCP)
    DNSCryptTCP = 6,
}

impl ::protobuf::Enum for SocketProtocol {
    const NAME: &'static str = "SocketProtocol";

    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<SocketProtocol> {
        match value {
            1 => ::std::option::Option::Some(SocketProtocol::UDP),
            2 => ::std::option::Option::Some(SocketProtocol::TCP),
            3 => ::std::option::Option::Some(SocketProtocol::DOT),
            4 => ::std::option::Option::Some(SocketProtocol::DOH),
            5 => ::std::option::Option::Some(SocketProtocol::DNSCryptUDP),
            6 => ::std::option::Option::Some(SocketProtocol::DNSCryptTCP),
            _ => ::std::option::Option::None
        }
    }

    const VALUES: &'static [SocketProtocol] = &[
        SocketProtocol::UDP,
        SocketProtocol::TCP,
        SocketProtocol::DOT,
        SocketProtocol::DOH,
        SocketProtocol::DNSCryptUDP,
        SocketProtocol::DNSCryptTCP,
    ];
}

impl ::protobuf::EnumFull for SocketProtocol {
    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
        descriptor.get(|| file_descriptor().enum_by_package_relative_name("SocketProtocol").unwrap()).clone()
    }

    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
        let index = match self {
            SocketProtocol::UDP => 0,
            SocketProtocol::TCP => 1,
            SocketProtocol::DOT => 2,
            SocketProtocol::DOH => 3,
            SocketProtocol::DNSCryptUDP => 4,
            SocketProtocol::DNSCryptTCP => 5,
        };
        Self::enum_descriptor().value_by_index(index)
    }
}

// Note, `Default` is implemented although default value is not 0
impl ::std::default::Default for SocketProtocol {
    fn default() -> Self {
        SocketProtocol::UDP
    }
}

impl SocketProtocol {
    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<SocketProtocol>("SocketProtocol")
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x0fdnstap_pb.proto\x12\x06dnstap\"\xbd\x01\n\x06Dnstap\x12\x1a\n\x08i\
    dentity\x18\x01\x20\x01(\x0cR\x08identity\x12\x18\n\x07version\x18\x02\
    \x20\x01(\x0cR\x07version\x12\x14\n\x05extra\x18\x03\x20\x01(\x0cR\x05ex\
    tra\x12'\n\x04type\x18\x0f\x20\x02(\x0e2\x13.dnstap.Dnstap.TypeR\x04type\
    \x12)\n\x07message\x18\x0e\x20\x01(\x0b2\x0f.dnstap.MessageR\x07message\
    \"\x13\n\x04Type\x12\x0b\n\x07MESSAGE\x10\x01\"\xcb\x06\n\x07Message\x12\
    (\n\x04type\x18\x01\x20\x02(\x0e2\x14.dnstap.Message.TypeR\x04type\x129\
    \n\rsocket_family\x18\x02\x20\x01(\x0e2\x14.dnstap.SocketFamilyR\x0csock\
    etFamily\x12?\n\x0fsocket_protocol\x18\x03\x20\x01(\x0e2\x16.dnstap.Sock\
    etProtocolR\x0esocketProtocol\x12#\n\rquery_address\x18\x04\x20\x01(\x0c\
    R\x0cqueryAddress\x12)\n\x10response_address\x18\x05\x20\x01(\x0cR\x0fre\
    sponseAddress\x12\x1d\n\nquery_port\x18\x06\x20\x01(\rR\tqueryPort\x12#\
    \n\rresponse_port\x18\x07\x20\x01(\rR\x0cresponsePort\x12$\n\x0equery_ti\
    me_sec\x18\x08\x20\x01(\x04R\x0cqueryTimeSec\x12&\n\x0fquery_time_nsec\
    \x18\t\x20\x01(\x07R\rqueryTimeNsec\x12#\n\rquery_message\x18\n\x20\x01(\
    \x0cR\x0cqueryMessage\x12\x1d\n\nquery_zone\x18\x0b\x20\x01(\x0cR\tquery\
    Zone\x12*\n\x11response_time_sec\x18\x0c\x20\x01(\x04R\x0fresponseTimeSe\
    c\x12,\n\x12response_time_nsec\x18\r\x20\x01(\x07R\x10responseTimeNsec\
    \x12)\n\x10response_message\x18\x0e\x20\x01(\x0cR\x0fresponseMessage\"\
    \xee\x01\n\x04Type\x12\x0e\n\nAUTH_QUERY\x10\x01\x12\x11\n\rAUTH_RESPONS\
    E\x10\x02\x12\x12\n\x0eRESOLVER_QUERY\x10\x03\x12\x15\n\x11RESOLVER_RESP\
    ONSE\x10\x04\x12\x10\n\x0cCLIENT_QUERY\x10\x05\x12\x13\n\x0fCLIENT_RESPO\
    NSE\x10\x06\x12\x13\n\x0fFORWARDER_QUERY\x10\x07\x12\x16\n\x12FORWARDER_\
    RESPONSE\x10\x08\x12\x0e\n\nSTUB_QUERY\x10\t\x12\x11\n\rSTUB_RESPONSE\
    \x10\n\x12\x0e\n\nTOOL_QUERY\x10\x0b\x12\x11\n\rTOOL_RESPONSE\x10\x0c*#\
    \n\x0cSocketFamily\x12\x08\n\x04INET\x10\x01\x12\t\n\x05INET6\x10\x02*V\
    \n\x0eSocketProtocol\x12\x07\n\x03UDP\x10\x01\x12\x07\n\x03TCP\x10\x02\
    \x12\x07\n\x03DOT\x10\x03\x12\x07\n\x03DOH\x10\x04\x12\x0f\n\x0bDNSCrypt\
    UDP\x10\x05\x12\x0f\n\x0bDNSCryptTCP\x10\x06b\x06proto2\
";

/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
    file_descriptor_proto_lazy.get(|| {
        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
    })
}

/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
    file_descriptor.get(|| {
        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
            let mut deps = ::std::vec::Vec::with_capacity(0);
            let mut messages = ::std::vec::Vec::with_capacity(2);
            messages.push(Dnstap::generated_message_descriptor_data());
            messages.push(Message::generated_message_descriptor_data());
            let mut enums = ::std::vec::Vec::with_capacity(4);
            enums.push(SocketFamily::generated_enum_descriptor_data());
            enums.push(SocketProtocol::generated_enum_descriptor_data());
            enums.push(dnstap::Type::generated_enum_descriptor_data());
            enums.push(message::Type::generated_enum_descriptor_data());
            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
                file_descriptor_proto(),
                deps,
                messages,
                enums,
            )
        });
        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
    })
}