diff options
author | 2017-07-24 23:12:50 +0200 | |
---|---|---|
committer | 2017-07-24 14:12:50 -0700 | |
commit | 1b7492be6e07f4b8306c0b4a56d79f37485ae61c (patch) | |
tree | 02510da5a7cf228821373a8090bac29055764aba /vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go | |
parent | f33b02689c564c1de8774f7f99d2400231a76069 (diff) | |
download | coredns-1b7492be6e07f4b8306c0b4a56d79f37485ae61c.tar.gz coredns-1b7492be6e07f4b8306c0b4a56d79f37485ae61c.tar.zst coredns-1b7492be6e07f4b8306c0b4a56d79f37485ae61c.zip |
WIP: middleware/dnstap (#711)
middleware/dnstap add
Diffstat (limited to 'vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go')
-rw-r--r-- | vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go b/vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go new file mode 100644 index 000000000..443e46cdb --- /dev/null +++ b/vendor/github.com/dnstap/golang-dnstap/FrameStreamSockInput.go @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2013-2014 by Farsight Security, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dnstap + +import ( + "log" + "net" + "os" +) + +type FrameStreamSockInput struct { + wait chan bool + listener net.Listener +} + +func NewFrameStreamSockInput(listener net.Listener) (input *FrameStreamSockInput) { + input = new(FrameStreamSockInput) + input.listener = listener + return +} + +func NewFrameStreamSockInputFromPath(socketPath string) (input *FrameStreamSockInput, err error) { + os.Remove(socketPath) + listener, err := net.Listen("unix", socketPath) + if err != nil { + return + } + return NewFrameStreamSockInput(listener), nil +} + +func (input *FrameStreamSockInput) ReadInto(output chan []byte) { + for { + conn, err := input.listener.Accept() + if err != nil { + log.Printf("net.Listener.Accept() failed: %s\n", err) + continue + } + i, err := NewFrameStreamInput(conn, true) + if err != nil { + log.Printf("dnstap.NewFrameStreamInput() failed: %s\n", err) + continue + } + log.Printf("dnstap.FrameStreamSockInput: accepted a socket connection\n") + go i.ReadInto(output) + } +} + +func (input *FrameStreamSockInput) Wait() { + select {} +} |