powerdns_protobuf

package module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2024 License: MIT Imports: 10 Imported by: 1

README

Go version

go-powerdns-protobuf

PowerDNS encoder and decoder protobuf implementation in Golang

Installation

go get -u github.com/dmachard/go-powerdns-protobuf

Usage example

Example to use the PowerDNS protobuf decoder

var dm_ref = []byte{8, 1, 26, 10, 112, 111, 119, 101, 114, 100, 110, 115, 112, 98, 32, 1, 40, 5, 160, 1, 144, 78, 168, 1, 53}


dm := &PBDNSMessage{}

err := proto.Unmarshal(dm_ref, dm)
if err != nil {
    fmt.Println("error on decode powerdns protobuf message %s", err)
}

Example to use the owerDNS protobuf encoder

dm := &PBDNSMessage{}

dm.Reset()

dm.ServerIdentity = []byte("powerdnspb")
dm.Type = PBDNSMessage_DNSQueryType.Enum()

dm.SocketProtocol = PBDNSMessage_DNSCryptUDP.Enum()
dm.SocketFamily = PBDNSMessage_INET.Enum()
dm.FromPort = proto.Uint32(10000)
dm.ToPort = proto.Uint32(53)

wiremessage, err := proto.Marshal(dm)
if err != nil {
    fmt.Println("error on encode powerdns protobuf message %s", err)
}

Testing

$ go test -v
=== RUN   TestMarshal
--- PASS: TestMarshal (0.00s)
=== RUN   TestUnmarshal
--- PASS: TestUnmarshal (0.00s)
PASS
ok      github.com/dmachard/go-powerdns-protobuf        0.002s

Benchmark

$ go test -bench=.
goos: linux
goarch: amd64
pkg: github.com/dmachard/go-powerdns-protobuf
cpu: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
BenchmarkUnmarshal-4     3656814               293.5 ns/op
BenchmarkMarshal-4       3185277               344.2 ns/op
PASS
ok      github.com/dmachard/go-powerdns-protobuf        2.892s

Development

Add the proto schema as git submodule

git submodule add https://github.com/PowerDNS/dnsmessage

Update golang version

go mod edit -go=1.23
go mod tidy

Download the latest release of protoc and protoc-gen-go

export PROTOC_VER=28.1
export GITHUB_URL=https://github.com/protocolbuffers
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
wget $GITHUB_URL/protobuf/releases/download/v$PROTOC_VER/protoc-$PROTOC_VER-linux-x86_64.zip
unzip protoc-$PROTOC_VER-linux-x86_64.zip

Edit and past the following line in the dnsmessage.proto

option go_package = "github.com/dmachard/go-powerdns-protobuf;powerdns_protobuf";

Generate the golang package

cd dnsmessage/
../bin/protoc --proto_path=. --go_out=../ --go_opt=paths=source_relative --plugin protoc-gen-go=$(go env GOPATH)/bin/protoc-gen-go dnsmessage.proto 

Documentation

Index

Constants

View Source
const DATA_FRAME_LENGTH_MAX = 65535

Variables

View Source
var (
	PBDNSMessage_Type_name = map[int32]string{
		1: "DNSQueryType",
		2: "DNSResponseType",
		3: "DNSOutgoingQueryType",
		4: "DNSIncomingResponseType",
	}
	PBDNSMessage_Type_value = map[string]int32{
		"DNSQueryType":            1,
		"DNSResponseType":         2,
		"DNSOutgoingQueryType":    3,
		"DNSIncomingResponseType": 4,
	}
)

Enum value maps for PBDNSMessage_Type.

View Source
var (
	PBDNSMessage_SocketFamily_name = map[int32]string{
		1: "INET",
		2: "INET6",
	}
	PBDNSMessage_SocketFamily_value = map[string]int32{
		"INET":  1,
		"INET6": 2,
	}
)

Enum value maps for PBDNSMessage_SocketFamily.

View Source
var (
	PBDNSMessage_SocketProtocol_name = map[int32]string{
		1: "UDP",
		2: "TCP",
		3: "DOT",
		4: "DOH",
		5: "DNSCryptUDP",
		6: "DNSCryptTCP",
		7: "DOQ",
	}
	PBDNSMessage_SocketProtocol_value = map[string]int32{
		"UDP":         1,
		"TCP":         2,
		"DOT":         3,
		"DOH":         4,
		"DNSCryptUDP": 5,
		"DNSCryptTCP": 6,
		"DOQ":         7,
	}
)

Enum value maps for PBDNSMessage_SocketProtocol.

View Source
var (
	PBDNSMessage_HTTPVersion_name = map[int32]string{
		1: "HTTP1",
		2: "HTTP2",
		3: "HTTP3",
	}
	PBDNSMessage_HTTPVersion_value = map[string]int32{
		"HTTP1": 1,
		"HTTP2": 2,
		"HTTP3": 3,
	}
)

Enum value maps for PBDNSMessage_HTTPVersion.

View Source
var (
	PBDNSMessage_PolicyType_name = map[int32]string{
		1: "UNKNOWN",
		2: "QNAME",
		3: "CLIENTIP",
		4: "RESPONSEIP",
		5: "NSDNAME",
		6: "NSIP",
	}
	PBDNSMessage_PolicyType_value = map[string]int32{
		"UNKNOWN":    1,
		"QNAME":      2,
		"CLIENTIP":   3,
		"RESPONSEIP": 4,
		"NSDNAME":    5,
		"NSIP":       6,
	}
)

Enum value maps for PBDNSMessage_PolicyType.

View Source
var (
	PBDNSMessage_PolicyKind_name = map[int32]string{
		1: "NoAction",
		2: "Drop",
		3: "NXDOMAIN",
		4: "NODATA",
		5: "Truncate",
		6: "Custom",
	}
	PBDNSMessage_PolicyKind_value = map[string]int32{
		"NoAction": 1,
		"Drop":     2,
		"NXDOMAIN": 3,
		"NODATA":   4,
		"Truncate": 5,
		"Custom":   6,
	}
)

Enum value maps for PBDNSMessage_PolicyKind.

View Source
var (
	PBDNSMessage_VState_name = map[int32]string{
		1:  "Indeterminate",
		2:  "Insecure",
		3:  "Secure",
		4:  "BogusNoValidDNSKEY",
		5:  "BogusInvalidDenial",
		6:  "BogusUnableToGetDSs",
		7:  "BogusUnableToGetDNSKEYs",
		8:  "BogusSelfSignedDS",
		9:  "BogusNoRRSIG",
		10: "BogusNoValidRRSIG",
		11: "BogusMissingNegativeIndication",
		12: "BogusSignatureNotYetValid",
		13: "BogusSignatureExpired",
		14: "BogusUnsupportedDNSKEYAlgo",
		15: "BogusUnsupportedDSDigestType",
		16: "BogusNoZoneKeyBitSet",
		17: "BogusRevokedDNSKEY",
		18: "BogusInvalidDNSKEYProtocol",
	}
	PBDNSMessage_VState_value = map[string]int32{
		"Indeterminate":                  1,
		"Insecure":                       2,
		"Secure":                         3,
		"BogusNoValidDNSKEY":             4,
		"BogusInvalidDenial":             5,
		"BogusUnableToGetDSs":            6,
		"BogusUnableToGetDNSKEYs":        7,
		"BogusSelfSignedDS":              8,
		"BogusNoRRSIG":                   9,
		"BogusNoValidRRSIG":              10,
		"BogusMissingNegativeIndication": 11,
		"BogusSignatureNotYetValid":      12,
		"BogusSignatureExpired":          13,
		"BogusUnsupportedDNSKEYAlgo":     14,
		"BogusUnsupportedDSDigestType":   15,
		"BogusNoZoneKeyBitSet":           16,
		"BogusRevokedDNSKEY":             17,
		"BogusInvalidDNSKEYProtocol":     18,
	}
)

Enum value maps for PBDNSMessage_VState.

View Source
var (
	PBDNSMessage_EventType_name = map[int32]string{
		0:   "CustomEvent",
		1:   "ReqRecv",
		2:   "PCacheCheck",
		3:   "AnswerSent",
		100: "SyncRes",
		101: "LuaGetTag",
		102: "LuaGetTagFFI",
		103: "LuaIPFilter",
		104: "LuaPreRPZ",
		105: "LuaPreResolve",
		106: "LuaPreOutQuery",
		107: "LuaPostResolve",
		108: "LuaNoData",
		109: "LuaNXDomain",
		110: "LuaPostResolveFFI",
	}
	PBDNSMessage_EventType_value = map[string]int32{
		"CustomEvent":       0,
		"ReqRecv":           1,
		"PCacheCheck":       2,
		"AnswerSent":        3,
		"SyncRes":           100,
		"LuaGetTag":         101,
		"LuaGetTagFFI":      102,
		"LuaIPFilter":       103,
		"LuaPreRPZ":         104,
		"LuaPreResolve":     105,
		"LuaPreOutQuery":    106,
		"LuaPostResolve":    107,
		"LuaNoData":         108,
		"LuaNXDomain":       109,
		"LuaPostResolveFFI": 110,
	}
)

Enum value maps for PBDNSMessage_EventType.

View Source
var ErrPayloadTooLarge = errors.New("protobuf payload too large error")
View Source
var File_dnsmessage_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type PBDNSMessage

type PBDNSMessage struct {
	Type                    *PBDNSMessage_Type           `protobuf:"varint,1,req,name=type,enum=PBDNSMessage_Type" json:"type,omitempty"` // Type of event
	MessageId               []byte                       `protobuf:"bytes,2,opt,name=messageId" json:"messageId,omitempty"`               // UUID, shared by the query and the response
	ServerIdentity          []byte                       `protobuf:"bytes,3,opt,name=serverIdentity" json:"serverIdentity,omitempty"`     // ID of the server emitting the protobuf message
	SocketFamily            *PBDNSMessage_SocketFamily   `protobuf:"varint,4,opt,name=socketFamily,enum=PBDNSMessage_SocketFamily" json:"socketFamily,omitempty"`
	SocketProtocol          *PBDNSMessage_SocketProtocol `protobuf:"varint,5,opt,name=socketProtocol,enum=PBDNSMessage_SocketProtocol" json:"socketProtocol,omitempty"`
	From                    []byte                       `protobuf:"bytes,6,opt,name=from" json:"from,omitempty"`           // DNS requestor (client) as 4 (IPv4) or 16 (IPv6) raw bytes in network byte order
	To                      []byte                       `protobuf:"bytes,7,opt,name=to" json:"to,omitempty"`               // DNS responder (server) as 4 (IPv4) or 16 (IPv6) raw bytes in network byte order
	InBytes                 *uint64                      `protobuf:"varint,8,opt,name=inBytes" json:"inBytes,omitempty"`    // Size of the query or response on the wire
	TimeSec                 *uint32                      `protobuf:"varint,9,opt,name=timeSec" json:"timeSec,omitempty"`    // Time of message reception (seconds since epoch)
	TimeUsec                *uint32                      `protobuf:"varint,10,opt,name=timeUsec" json:"timeUsec,omitempty"` // Time of message reception (additional micro-seconds)
	Id                      *uint32                      `protobuf:"varint,11,opt,name=id" json:"id,omitempty"`             // ID of the query/response as found in the DNS header
	Question                *PBDNSMessage_DNSQuestion    `protobuf:"bytes,12,opt,name=question" json:"question,omitempty"`  // DNS query received from client
	Response                *PBDNSMessage_DNSResponse    `protobuf:"bytes,13,opt,name=response" json:"response,omitempty"`
	OriginalRequestorSubnet []byte                       `protobuf:"bytes,14,opt,name=originalRequestorSubnet" json:"originalRequestorSubnet,omitempty"` // EDNS Client Subnet value (4 or 16 raw bytes in network byte order)
	RequestorId             *string                      `protobuf:"bytes,15,opt,name=requestorId" json:"requestorId,omitempty"`                         // Username of the requestor
	InitialRequestId        []byte                       `protobuf:"bytes,16,opt,name=initialRequestId" json:"initialRequestId,omitempty"`               // UUID of the incoming query that initiated this outgoing query or incoming response
	DeviceId                []byte                       `protobuf:"bytes,17,opt,name=deviceId" json:"deviceId,omitempty"`                               // Device ID of the requestor (could be mac address IP address or e.g. IMEI, format implementation dependent)
	NewlyObservedDomain     *bool                        `protobuf:"varint,18,opt,name=newlyObservedDomain" json:"newlyObservedDomain,omitempty"`        // True if the domain has not been seen before
	DeviceName              *string                      `protobuf:"bytes,19,opt,name=deviceName" json:"deviceName,omitempty"`                           // Device name of the requestor
	FromPort                *uint32                      `protobuf:"varint,20,opt,name=fromPort" json:"fromPort,omitempty"`                              // Source port of the DNS query (client)
	ToPort                  *uint32                      `protobuf:"varint,21,opt,name=toPort" json:"toPort,omitempty"`                                  // Destination port of the DNS query (server)
	Meta                    []*PBDNSMessage_Meta         `protobuf:"bytes,22,rep,name=meta" json:"meta,omitempty"`                                       // Arbitrary meta-data - to be used in future rather than adding new fields all the time
	Trace                   []*PBDNSMessage_Event        `protobuf:"bytes,23,rep,name=trace" json:"trace,omitempty"`
	HttpVersion             *PBDNSMessage_HTTPVersion    `protobuf:"varint,24,opt,name=httpVersion,enum=PBDNSMessage_HTTPVersion" json:"httpVersion,omitempty"` // HTTP version used for DNS over HTTP
	WorkerId                *uint64                      `protobuf:"varint,25,opt,name=workerId" json:"workerId,omitempty"`                                     // Thread id
	PacketCacheHit          *bool                        `protobuf:"varint,26,opt,name=packetCacheHit" json:"packetCacheHit,omitempty"`                         // Was it a packet cache hit?
	OutgoingQueries         *uint32                      `protobuf:"varint,27,opt,name=outgoingQueries" json:"outgoingQueries,omitempty"`                       // Number of outgoing queries used to answer the query
	// contains filtered or unexported fields
}

func (*PBDNSMessage) Descriptor deprecated

func (*PBDNSMessage) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage.ProtoReflect.Descriptor instead.

func (*PBDNSMessage) GetDeviceId

func (x *PBDNSMessage) GetDeviceId() []byte

func (*PBDNSMessage) GetDeviceName

func (x *PBDNSMessage) GetDeviceName() string

func (*PBDNSMessage) GetFrom

func (x *PBDNSMessage) GetFrom() []byte

func (*PBDNSMessage) GetFromPort

func (x *PBDNSMessage) GetFromPort() uint32

func (*PBDNSMessage) GetHttpVersion added in v1.1.0

func (x *PBDNSMessage) GetHttpVersion() PBDNSMessage_HTTPVersion

func (*PBDNSMessage) GetId

func (x *PBDNSMessage) GetId() uint32

func (*PBDNSMessage) GetInBytes

func (x *PBDNSMessage) GetInBytes() uint64

func (*PBDNSMessage) GetInitialRequestId

func (x *PBDNSMessage) GetInitialRequestId() []byte

func (*PBDNSMessage) GetMessageId

func (x *PBDNSMessage) GetMessageId() []byte

func (*PBDNSMessage) GetMeta

func (x *PBDNSMessage) GetMeta() []*PBDNSMessage_Meta

func (*PBDNSMessage) GetNewlyObservedDomain

func (x *PBDNSMessage) GetNewlyObservedDomain() bool

func (*PBDNSMessage) GetOriginalRequestorSubnet

func (x *PBDNSMessage) GetOriginalRequestorSubnet() []byte

func (*PBDNSMessage) GetOutgoingQueries added in v1.2.0

func (x *PBDNSMessage) GetOutgoingQueries() uint32

func (*PBDNSMessage) GetPacketCacheHit added in v1.2.0

func (x *PBDNSMessage) GetPacketCacheHit() bool

func (*PBDNSMessage) GetQuestion

func (x *PBDNSMessage) GetQuestion() *PBDNSMessage_DNSQuestion

func (*PBDNSMessage) GetRequestorId

func (x *PBDNSMessage) GetRequestorId() string

func (*PBDNSMessage) GetResponse

func (x *PBDNSMessage) GetResponse() *PBDNSMessage_DNSResponse

func (*PBDNSMessage) GetServerIdentity

func (x *PBDNSMessage) GetServerIdentity() []byte

func (*PBDNSMessage) GetSocketFamily

func (x *PBDNSMessage) GetSocketFamily() PBDNSMessage_SocketFamily

func (*PBDNSMessage) GetSocketProtocol

func (x *PBDNSMessage) GetSocketProtocol() PBDNSMessage_SocketProtocol

func (*PBDNSMessage) GetTimeSec

func (x *PBDNSMessage) GetTimeSec() uint32

func (*PBDNSMessage) GetTimeUsec

func (x *PBDNSMessage) GetTimeUsec() uint32

func (*PBDNSMessage) GetTo

func (x *PBDNSMessage) GetTo() []byte

func (*PBDNSMessage) GetToPort

func (x *PBDNSMessage) GetToPort() uint32

func (*PBDNSMessage) GetTrace

func (x *PBDNSMessage) GetTrace() []*PBDNSMessage_Event

func (*PBDNSMessage) GetType

func (x *PBDNSMessage) GetType() PBDNSMessage_Type

func (*PBDNSMessage) GetWorkerId added in v1.2.0

func (x *PBDNSMessage) GetWorkerId() uint64

func (*PBDNSMessage) ProtoMessage

func (*PBDNSMessage) ProtoMessage()

func (*PBDNSMessage) ProtoReflect

func (x *PBDNSMessage) ProtoReflect() protoreflect.Message

func (*PBDNSMessage) Reset

func (x *PBDNSMessage) Reset()

func (*PBDNSMessage) String

func (x *PBDNSMessage) String() string

type PBDNSMessageList

type PBDNSMessageList struct {
	Msg []*PBDNSMessage `protobuf:"bytes,1,rep,name=msg" json:"msg,omitempty"`
	// contains filtered or unexported fields
}

func (*PBDNSMessageList) Descriptor deprecated

func (*PBDNSMessageList) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessageList.ProtoReflect.Descriptor instead.

func (*PBDNSMessageList) GetMsg

func (x *PBDNSMessageList) GetMsg() []*PBDNSMessage

func (*PBDNSMessageList) ProtoMessage

func (*PBDNSMessageList) ProtoMessage()

func (*PBDNSMessageList) ProtoReflect

func (x *PBDNSMessageList) ProtoReflect() protoreflect.Message

func (*PBDNSMessageList) Reset

func (x *PBDNSMessageList) Reset()

func (*PBDNSMessageList) String

func (x *PBDNSMessageList) String() string

type PBDNSMessage_DNSQuestion

type PBDNSMessage_DNSQuestion struct {
	QName  *string `protobuf:"bytes,1,opt,name=qName" json:"qName,omitempty"`    // Fully qualified DNS name (with trailing dot)
	QType  *uint32 `protobuf:"varint,2,opt,name=qType" json:"qType,omitempty"`   // https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4
	QClass *uint32 `protobuf:"varint,3,opt,name=qClass" json:"qClass,omitempty"` // Typically 1 (IN), see https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-2
	// contains filtered or unexported fields
}

func (*PBDNSMessage_DNSQuestion) Descriptor deprecated

func (*PBDNSMessage_DNSQuestion) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_DNSQuestion.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_DNSQuestion) GetQClass

func (x *PBDNSMessage_DNSQuestion) GetQClass() uint32

func (*PBDNSMessage_DNSQuestion) GetQName

func (x *PBDNSMessage_DNSQuestion) GetQName() string

func (*PBDNSMessage_DNSQuestion) GetQType

func (x *PBDNSMessage_DNSQuestion) GetQType() uint32

func (*PBDNSMessage_DNSQuestion) ProtoMessage

func (*PBDNSMessage_DNSQuestion) ProtoMessage()

func (*PBDNSMessage_DNSQuestion) ProtoReflect

func (x *PBDNSMessage_DNSQuestion) ProtoReflect() protoreflect.Message

func (*PBDNSMessage_DNSQuestion) Reset

func (x *PBDNSMessage_DNSQuestion) Reset()

func (*PBDNSMessage_DNSQuestion) String

func (x *PBDNSMessage_DNSQuestion) String() string

type PBDNSMessage_DNSResponse

type PBDNSMessage_DNSResponse struct {
	Rcode                *uint32                           `protobuf:"varint,1,opt,name=rcode" json:"rcode,omitempty"`                                                       // DNS Response code, or 65536 for a network error including a timeout
	Rrs                  []*PBDNSMessage_DNSResponse_DNSRR `protobuf:"bytes,2,rep,name=rrs" json:"rrs,omitempty"`                                                            // DNS resource records in response
	AppliedPolicy        *string                           `protobuf:"bytes,3,opt,name=appliedPolicy" json:"appliedPolicy,omitempty"`                                        // Filtering policy (RPZ or Lua) applied
	Tags                 []string                          `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"`                                                          // Additional tags applied
	QueryTimeSec         *uint32                           `protobuf:"varint,5,opt,name=queryTimeSec" json:"queryTimeSec,omitempty"`                                         // Time of the corresponding query reception (seconds since epoch)
	QueryTimeUsec        *uint32                           `protobuf:"varint,6,opt,name=queryTimeUsec" json:"queryTimeUsec,omitempty"`                                       // Time of the corresponding query reception (additional micro-seconds)
	AppliedPolicyType    *PBDNSMessage_PolicyType          `protobuf:"varint,7,opt,name=appliedPolicyType,enum=PBDNSMessage_PolicyType" json:"appliedPolicyType,omitempty"`  // Type of the filtering policy (RPZ or Lua) applied
	AppliedPolicyTrigger *string                           `protobuf:"bytes,8,opt,name=appliedPolicyTrigger" json:"appliedPolicyTrigger,omitempty"`                          // The RPZ trigger
	AppliedPolicyHit     *string                           `protobuf:"bytes,9,opt,name=appliedPolicyHit" json:"appliedPolicyHit,omitempty"`                                  // The value (qname or IP) that caused the hit
	AppliedPolicyKind    *PBDNSMessage_PolicyKind          `protobuf:"varint,10,opt,name=appliedPolicyKind,enum=PBDNSMessage_PolicyKind" json:"appliedPolicyKind,omitempty"` // The Kind (RPZ action) applied by the hit
	ValidationState      *PBDNSMessage_VState              `protobuf:"varint,11,opt,name=validationState,enum=PBDNSMessage_VState" json:"validationState,omitempty"`         // The DNSSEC Validation State
	// contains filtered or unexported fields
}

func (*PBDNSMessage_DNSResponse) Descriptor deprecated

func (*PBDNSMessage_DNSResponse) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_DNSResponse.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_DNSResponse) GetAppliedPolicy

func (x *PBDNSMessage_DNSResponse) GetAppliedPolicy() string

func (*PBDNSMessage_DNSResponse) GetAppliedPolicyHit

func (x *PBDNSMessage_DNSResponse) GetAppliedPolicyHit() string

func (*PBDNSMessage_DNSResponse) GetAppliedPolicyKind

func (x *PBDNSMessage_DNSResponse) GetAppliedPolicyKind() PBDNSMessage_PolicyKind

func (*PBDNSMessage_DNSResponse) GetAppliedPolicyTrigger

func (x *PBDNSMessage_DNSResponse) GetAppliedPolicyTrigger() string

func (*PBDNSMessage_DNSResponse) GetAppliedPolicyType

func (x *PBDNSMessage_DNSResponse) GetAppliedPolicyType() PBDNSMessage_PolicyType

func (*PBDNSMessage_DNSResponse) GetQueryTimeSec

func (x *PBDNSMessage_DNSResponse) GetQueryTimeSec() uint32

func (*PBDNSMessage_DNSResponse) GetQueryTimeUsec

func (x *PBDNSMessage_DNSResponse) GetQueryTimeUsec() uint32

func (*PBDNSMessage_DNSResponse) GetRcode

func (x *PBDNSMessage_DNSResponse) GetRcode() uint32

func (*PBDNSMessage_DNSResponse) GetRrs

func (*PBDNSMessage_DNSResponse) GetTags

func (x *PBDNSMessage_DNSResponse) GetTags() []string

func (*PBDNSMessage_DNSResponse) GetValidationState

func (x *PBDNSMessage_DNSResponse) GetValidationState() PBDNSMessage_VState

func (*PBDNSMessage_DNSResponse) ProtoMessage

func (*PBDNSMessage_DNSResponse) ProtoMessage()

func (*PBDNSMessage_DNSResponse) ProtoReflect

func (x *PBDNSMessage_DNSResponse) ProtoReflect() protoreflect.Message

func (*PBDNSMessage_DNSResponse) Reset

func (x *PBDNSMessage_DNSResponse) Reset()

func (*PBDNSMessage_DNSResponse) String

func (x *PBDNSMessage_DNSResponse) String() string

type PBDNSMessage_DNSResponse_DNSRR

type PBDNSMessage_DNSResponse_DNSRR struct {
	Name  *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`    // Fully qualified DNS name (with trailing dot)
	Type  *uint32 `protobuf:"varint,2,opt,name=type" json:"type,omitempty"`   // https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4
	Class *uint32 `protobuf:"varint,3,opt,name=class" json:"class,omitempty"` // Typically 1 (IN), see https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-2
	Ttl   *uint32 `protobuf:"varint,4,opt,name=ttl" json:"ttl,omitempty"`     // TTL in seconds
	Rdata []byte  `protobuf:"bytes,5,opt,name=rdata" json:"rdata,omitempty"`  // raw address bytes in network byte order for A & AAAA; text representation for others, with fully qualified (trailing dot) domain names
	Udr   *bool   `protobuf:"varint,6,opt,name=udr" json:"udr,omitempty"`     // True if this is the first time this RR has been seen for this question
	// contains filtered or unexported fields
}

See exportTypes in https://docs.powerdns.com/recursor/lua-config/protobuf.html#protobufServer for the list of supported resource record types.

func (*PBDNSMessage_DNSResponse_DNSRR) Descriptor deprecated

func (*PBDNSMessage_DNSResponse_DNSRR) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_DNSResponse_DNSRR.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_DNSResponse_DNSRR) GetClass

func (x *PBDNSMessage_DNSResponse_DNSRR) GetClass() uint32

func (*PBDNSMessage_DNSResponse_DNSRR) GetName

func (*PBDNSMessage_DNSResponse_DNSRR) GetRdata

func (x *PBDNSMessage_DNSResponse_DNSRR) GetRdata() []byte

func (*PBDNSMessage_DNSResponse_DNSRR) GetTtl

func (*PBDNSMessage_DNSResponse_DNSRR) GetType

func (*PBDNSMessage_DNSResponse_DNSRR) GetUdr

func (*PBDNSMessage_DNSResponse_DNSRR) ProtoMessage

func (*PBDNSMessage_DNSResponse_DNSRR) ProtoMessage()

func (*PBDNSMessage_DNSResponse_DNSRR) ProtoReflect

func (*PBDNSMessage_DNSResponse_DNSRR) Reset

func (x *PBDNSMessage_DNSResponse_DNSRR) Reset()

func (*PBDNSMessage_DNSResponse_DNSRR) String

type PBDNSMessage_Event

type PBDNSMessage_Event struct {
	Ts        *int64                  `protobuf:"varint,1,req,name=ts" json:"ts,omitempty"`                                   // Timestamp in ns relative to time of creation of event trace data structure
	Event     *PBDNSMessage_EventType `protobuf:"varint,2,req,name=event,enum=PBDNSMessage_EventType" json:"event,omitempty"` // Type of event
	Start     *bool                   `protobuf:"varint,3,req,name=start" json:"start,omitempty"`                             // true for "start" events, false for "completed" events
	BoolVal   *bool                   `protobuf:"varint,4,opt,name=boolVal" json:"boolVal,omitempty"`                         // Below are optional values associated with events
	IntVal    *int64                  `protobuf:"varint,5,opt,name=intVal" json:"intVal,omitempty"`
	StringVal *string                 `protobuf:"bytes,6,opt,name=stringVal" json:"stringVal,omitempty"`
	BytesVal  []byte                  `protobuf:"bytes,7,opt,name=bytesVal" json:"bytesVal,omitempty"`
	Custom    *string                 `protobuf:"bytes,8,opt,name=custom" json:"custom,omitempty"` // The name of the event for custom events
	// contains filtered or unexported fields
}

func (*PBDNSMessage_Event) Descriptor deprecated

func (*PBDNSMessage_Event) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_Event.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_Event) GetBoolVal

func (x *PBDNSMessage_Event) GetBoolVal() bool

func (*PBDNSMessage_Event) GetBytesVal

func (x *PBDNSMessage_Event) GetBytesVal() []byte

func (*PBDNSMessage_Event) GetCustom

func (x *PBDNSMessage_Event) GetCustom() string

func (*PBDNSMessage_Event) GetEvent

func (*PBDNSMessage_Event) GetIntVal

func (x *PBDNSMessage_Event) GetIntVal() int64

func (*PBDNSMessage_Event) GetStart

func (x *PBDNSMessage_Event) GetStart() bool

func (*PBDNSMessage_Event) GetStringVal

func (x *PBDNSMessage_Event) GetStringVal() string

func (*PBDNSMessage_Event) GetTs

func (x *PBDNSMessage_Event) GetTs() int64

func (*PBDNSMessage_Event) ProtoMessage

func (*PBDNSMessage_Event) ProtoMessage()

func (*PBDNSMessage_Event) ProtoReflect

func (x *PBDNSMessage_Event) ProtoReflect() protoreflect.Message

func (*PBDNSMessage_Event) Reset

func (x *PBDNSMessage_Event) Reset()

func (*PBDNSMessage_Event) String

func (x *PBDNSMessage_Event) String() string

type PBDNSMessage_EventType

type PBDNSMessage_EventType int32

The well known EventTrace event numbers

const (
	// Range 0..99: Generic events
	PBDNSMessage_CustomEvent PBDNSMessage_EventType = 0 // A custom event
	PBDNSMessage_ReqRecv     PBDNSMessage_EventType = 1 // A request was received
	PBDNSMessage_PCacheCheck PBDNSMessage_EventType = 2 // A packet cache check was initiated or completed; value: bool cacheHit
	PBDNSMessage_AnswerSent  PBDNSMessage_EventType = 3 // An answer was sent to the client
	// Range 100: Recursor events
	PBDNSMessage_SyncRes           PBDNSMessage_EventType = 100 // Recursor Syncres main function has started or completed; value: int rcode
	PBDNSMessage_LuaGetTag         PBDNSMessage_EventType = 101 // Events below mark start or end of Lua hook calls; value: return value of hook
	PBDNSMessage_LuaGetTagFFI      PBDNSMessage_EventType = 102
	PBDNSMessage_LuaIPFilter       PBDNSMessage_EventType = 103
	PBDNSMessage_LuaPreRPZ         PBDNSMessage_EventType = 104
	PBDNSMessage_LuaPreResolve     PBDNSMessage_EventType = 105
	PBDNSMessage_LuaPreOutQuery    PBDNSMessage_EventType = 106
	PBDNSMessage_LuaPostResolve    PBDNSMessage_EventType = 107
	PBDNSMessage_LuaNoData         PBDNSMessage_EventType = 108
	PBDNSMessage_LuaNXDomain       PBDNSMessage_EventType = 109
	PBDNSMessage_LuaPostResolveFFI PBDNSMessage_EventType = 110
)

func (PBDNSMessage_EventType) Descriptor

func (PBDNSMessage_EventType) Enum

func (PBDNSMessage_EventType) EnumDescriptor deprecated

func (PBDNSMessage_EventType) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_EventType.Descriptor instead.

func (PBDNSMessage_EventType) Number

func (PBDNSMessage_EventType) String

func (x PBDNSMessage_EventType) String() string

func (PBDNSMessage_EventType) Type

func (*PBDNSMessage_EventType) UnmarshalJSON deprecated

func (x *PBDNSMessage_EventType) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_HTTPVersion added in v1.1.0

type PBDNSMessage_HTTPVersion int32
const (
	PBDNSMessage_HTTP1 PBDNSMessage_HTTPVersion = 1 // HTTP/1.1
	PBDNSMessage_HTTP2 PBDNSMessage_HTTPVersion = 2 // HTTP/2
	PBDNSMessage_HTTP3 PBDNSMessage_HTTPVersion = 3 // HTTP/3
)

func (PBDNSMessage_HTTPVersion) Descriptor added in v1.1.0

func (PBDNSMessage_HTTPVersion) Enum added in v1.1.0

func (PBDNSMessage_HTTPVersion) EnumDescriptor deprecated added in v1.1.0

func (PBDNSMessage_HTTPVersion) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_HTTPVersion.Descriptor instead.

func (PBDNSMessage_HTTPVersion) Number added in v1.1.0

func (PBDNSMessage_HTTPVersion) String added in v1.1.0

func (x PBDNSMessage_HTTPVersion) String() string

func (PBDNSMessage_HTTPVersion) Type added in v1.1.0

func (*PBDNSMessage_HTTPVersion) UnmarshalJSON deprecated added in v1.1.0

func (x *PBDNSMessage_HTTPVersion) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_Meta

type PBDNSMessage_Meta struct {
	Key   *string                 `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` // MUST be unique, so if you have multiple values they must be aggregated into one Meta
	Value *PBDNSMessage_MetaValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
	// contains filtered or unexported fields
}

func (*PBDNSMessage_Meta) Descriptor deprecated

func (*PBDNSMessage_Meta) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_Meta.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_Meta) GetKey

func (x *PBDNSMessage_Meta) GetKey() string

func (*PBDNSMessage_Meta) GetValue

func (*PBDNSMessage_Meta) ProtoMessage

func (*PBDNSMessage_Meta) ProtoMessage()

func (*PBDNSMessage_Meta) ProtoReflect

func (x *PBDNSMessage_Meta) ProtoReflect() protoreflect.Message

func (*PBDNSMessage_Meta) Reset

func (x *PBDNSMessage_Meta) Reset()

func (*PBDNSMessage_Meta) String

func (x *PBDNSMessage_Meta) String() string

type PBDNSMessage_MetaValue

type PBDNSMessage_MetaValue struct {
	StringVal []string `protobuf:"bytes,1,rep,name=stringVal" json:"stringVal,omitempty"`
	IntVal    []int64  `protobuf:"varint,2,rep,name=intVal" json:"intVal,omitempty"`
	// contains filtered or unexported fields
}

func (*PBDNSMessage_MetaValue) Descriptor deprecated

func (*PBDNSMessage_MetaValue) Descriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_MetaValue.ProtoReflect.Descriptor instead.

func (*PBDNSMessage_MetaValue) GetIntVal

func (x *PBDNSMessage_MetaValue) GetIntVal() []int64

func (*PBDNSMessage_MetaValue) GetStringVal

func (x *PBDNSMessage_MetaValue) GetStringVal() []string

func (*PBDNSMessage_MetaValue) ProtoMessage

func (*PBDNSMessage_MetaValue) ProtoMessage()

func (*PBDNSMessage_MetaValue) ProtoReflect

func (x *PBDNSMessage_MetaValue) ProtoReflect() protoreflect.Message

func (*PBDNSMessage_MetaValue) Reset

func (x *PBDNSMessage_MetaValue) Reset()

func (*PBDNSMessage_MetaValue) String

func (x *PBDNSMessage_MetaValue) String() string

type PBDNSMessage_PolicyKind

type PBDNSMessage_PolicyKind int32

func (PBDNSMessage_PolicyKind) Descriptor

func (PBDNSMessage_PolicyKind) Enum

func (PBDNSMessage_PolicyKind) EnumDescriptor deprecated

func (PBDNSMessage_PolicyKind) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_PolicyKind.Descriptor instead.

func (PBDNSMessage_PolicyKind) Number

func (PBDNSMessage_PolicyKind) String

func (x PBDNSMessage_PolicyKind) String() string

func (PBDNSMessage_PolicyKind) Type

func (*PBDNSMessage_PolicyKind) UnmarshalJSON deprecated

func (x *PBDNSMessage_PolicyKind) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_PolicyType

type PBDNSMessage_PolicyType int32
const (
	PBDNSMessage_UNKNOWN    PBDNSMessage_PolicyType = 1 // No RPZ policy applied, or unknown type
	PBDNSMessage_QNAME      PBDNSMessage_PolicyType = 2 // Policy matched on the QName
	PBDNSMessage_CLIENTIP   PBDNSMessage_PolicyType = 3 // Policy matched on the client IP
	PBDNSMessage_RESPONSEIP PBDNSMessage_PolicyType = 4 // Policy matched on one of the IPs contained in the answer
	PBDNSMessage_NSDNAME    PBDNSMessage_PolicyType = 5 // Policy matched on the name of one nameserver involved
	PBDNSMessage_NSIP       PBDNSMessage_PolicyType = 6 // Policy matched on the IP of one nameserver involved
)

func (PBDNSMessage_PolicyType) Descriptor

func (PBDNSMessage_PolicyType) Enum

func (PBDNSMessage_PolicyType) EnumDescriptor deprecated

func (PBDNSMessage_PolicyType) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_PolicyType.Descriptor instead.

func (PBDNSMessage_PolicyType) Number

func (PBDNSMessage_PolicyType) String

func (x PBDNSMessage_PolicyType) String() string

func (PBDNSMessage_PolicyType) Type

func (*PBDNSMessage_PolicyType) UnmarshalJSON deprecated

func (x *PBDNSMessage_PolicyType) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_SocketFamily

type PBDNSMessage_SocketFamily int32
const (
	PBDNSMessage_INET  PBDNSMessage_SocketFamily = 1 // IPv4 (RFC 791)
	PBDNSMessage_INET6 PBDNSMessage_SocketFamily = 2 // IPv6 (RFC 2460)
)

func (PBDNSMessage_SocketFamily) Descriptor

func (PBDNSMessage_SocketFamily) Enum

func (PBDNSMessage_SocketFamily) EnumDescriptor deprecated

func (PBDNSMessage_SocketFamily) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_SocketFamily.Descriptor instead.

func (PBDNSMessage_SocketFamily) Number

func (PBDNSMessage_SocketFamily) String

func (x PBDNSMessage_SocketFamily) String() string

func (PBDNSMessage_SocketFamily) Type

func (*PBDNSMessage_SocketFamily) UnmarshalJSON deprecated

func (x *PBDNSMessage_SocketFamily) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_SocketProtocol

type PBDNSMessage_SocketProtocol int32
const (
	PBDNSMessage_UDP         PBDNSMessage_SocketProtocol = 1 // User Datagram Protocol (RFC 768)
	PBDNSMessage_TCP         PBDNSMessage_SocketProtocol = 2 // Transmission Control Protocol (RFC 793)
	PBDNSMessage_DOT         PBDNSMessage_SocketProtocol = 3 // DNS over TLS (RFC 7858)
	PBDNSMessage_DOH         PBDNSMessage_SocketProtocol = 4 // DNS over HTTPS (RFC 8484)
	PBDNSMessage_DNSCryptUDP PBDNSMessage_SocketProtocol = 5 // DNSCrypt over UDP (https://dnscrypt.info/protocol)
	PBDNSMessage_DNSCryptTCP PBDNSMessage_SocketProtocol = 6 // DNSCrypt over TCP (https://dnscrypt.info/protocol)
	PBDNSMessage_DOQ         PBDNSMessage_SocketProtocol = 7 // DNS over QUIC (RFC 9250)
)

func (PBDNSMessage_SocketProtocol) Descriptor

func (PBDNSMessage_SocketProtocol) Enum

func (PBDNSMessage_SocketProtocol) EnumDescriptor deprecated

func (PBDNSMessage_SocketProtocol) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_SocketProtocol.Descriptor instead.

func (PBDNSMessage_SocketProtocol) Number

func (PBDNSMessage_SocketProtocol) String

func (PBDNSMessage_SocketProtocol) Type

func (*PBDNSMessage_SocketProtocol) UnmarshalJSON deprecated

func (x *PBDNSMessage_SocketProtocol) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_Type

type PBDNSMessage_Type int32
const (
	PBDNSMessage_DNSQueryType            PBDNSMessage_Type = 1 // Query received by the service
	PBDNSMessage_DNSResponseType         PBDNSMessage_Type = 2 // Response returned by the service
	PBDNSMessage_DNSOutgoingQueryType    PBDNSMessage_Type = 3 // Query sent out by the service to a remote server
	PBDNSMessage_DNSIncomingResponseType PBDNSMessage_Type = 4 // Response returned by the remote server
)

func (PBDNSMessage_Type) Descriptor

func (PBDNSMessage_Type) Enum

func (PBDNSMessage_Type) EnumDescriptor deprecated

func (PBDNSMessage_Type) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_Type.Descriptor instead.

func (PBDNSMessage_Type) Number

func (PBDNSMessage_Type) String

func (x PBDNSMessage_Type) String() string

func (PBDNSMessage_Type) Type

func (*PBDNSMessage_Type) UnmarshalJSON deprecated

func (x *PBDNSMessage_Type) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type PBDNSMessage_VState

type PBDNSMessage_VState int32
const (
	PBDNSMessage_Indeterminate                  PBDNSMessage_VState = 1
	PBDNSMessage_Insecure                       PBDNSMessage_VState = 2
	PBDNSMessage_Secure                         PBDNSMessage_VState = 3
	PBDNSMessage_BogusNoValidDNSKEY             PBDNSMessage_VState = 4
	PBDNSMessage_BogusInvalidDenial             PBDNSMessage_VState = 5
	PBDNSMessage_BogusUnableToGetDSs            PBDNSMessage_VState = 6
	PBDNSMessage_BogusUnableToGetDNSKEYs        PBDNSMessage_VState = 7
	PBDNSMessage_BogusSelfSignedDS              PBDNSMessage_VState = 8
	PBDNSMessage_BogusNoRRSIG                   PBDNSMessage_VState = 9
	PBDNSMessage_BogusNoValidRRSIG              PBDNSMessage_VState = 10
	PBDNSMessage_BogusMissingNegativeIndication PBDNSMessage_VState = 11
	PBDNSMessage_BogusSignatureNotYetValid      PBDNSMessage_VState = 12
	PBDNSMessage_BogusSignatureExpired          PBDNSMessage_VState = 13
	PBDNSMessage_BogusUnsupportedDNSKEYAlgo     PBDNSMessage_VState = 14
	PBDNSMessage_BogusUnsupportedDSDigestType   PBDNSMessage_VState = 15
	PBDNSMessage_BogusNoZoneKeyBitSet           PBDNSMessage_VState = 16
	PBDNSMessage_BogusRevokedDNSKEY             PBDNSMessage_VState = 17
	PBDNSMessage_BogusInvalidDNSKEYProtocol     PBDNSMessage_VState = 18
)

func (PBDNSMessage_VState) Descriptor

func (PBDNSMessage_VState) Enum

func (PBDNSMessage_VState) EnumDescriptor deprecated

func (PBDNSMessage_VState) EnumDescriptor() ([]byte, []int)

Deprecated: Use PBDNSMessage_VState.Descriptor instead.

func (PBDNSMessage_VState) Number

func (PBDNSMessage_VState) String

func (x PBDNSMessage_VState) String() string

func (PBDNSMessage_VState) Type

func (*PBDNSMessage_VState) UnmarshalJSON deprecated

func (x *PBDNSMessage_VState) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type ProtoPayload added in v0.0.2

type ProtoPayload struct {
	// contains filtered or unexported fields
}

func (ProtoPayload) Data added in v0.0.2

func (pl ProtoPayload) Data() []byte

func (ProtoPayload) Len added in v0.0.2

func (pl ProtoPayload) Len() int

type ProtoStream added in v0.0.2

type ProtoStream struct {
	// contains filtered or unexported fields
}

func NewProtobufStream added in v0.0.2

func NewProtobufStream(reader *bufio.Reader, conn net.Conn, readtimeout time.Duration) *ProtoStream

func (ProtoStream) ProcessStream added in v0.0.2

func (ps ProtoStream) ProcessStream(ch chan []byte) (err error)

func (ProtoStream) RecvPayload added in v0.0.2

func (ps ProtoStream) RecvPayload(timeout bool) (*ProtoPayload, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL