all configs now support broadcasting

This commit is contained in:
Miek Gieben 2011-01-27 22:50:22 +01:00
parent 20d27dc598
commit c68989e9e0
5 changed files with 29 additions and 72 deletions

View File

@ -29,9 +29,12 @@ func match(m *dns.Msg, d int) (*dns.Msg, bool) {
func send(m *dns.Msg, ok bool) *dns.Msg {
switch ok {
case true, false:
qr[0] <- resolver.Msg{m, nil, nil}
in := <-qr[0]
return in.Dns
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns // return the last
}
return nil
}

View File

@ -1,59 +0,0 @@
package main
// Broadcast to multiple servers
import (
"dns"
"dns/resolver"
)
func match(m *dns.Msg, d int) (*dns.Msg, bool) {
// Matching criteria
switch d {
case IN:
// nothing
case OUT:
// Note that when sending back only the mangling is important
// the actual return code of these function isn't checked by
// funkensturm
}
// Packet Mangling
switch d {
case IN:
// nothing
case OUT:
// nothing
}
return m, true
}
func send(m *dns.Msg, ok bool) *dns.Msg {
switch ok {
case true, false:
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns // return the last
}
return nil
}
// Return the configration
func funkensturm() *Funkensturm {
f := new(Funkensturm)
// Nothing to set up
f.Setup = func() bool { return true }
// 1 match function, use AND as op (doesn't matter in this case)
f.Matches = make([]Match, 1)
f.Matches[0].Op = AND
f.Matches[0].Func = match
// 1 action
f.Actions = make([]Action, 1)
f.Actions[0].Func = send
return f
}

View File

@ -58,13 +58,20 @@ func delay(m *dns.Msg, ok bool) *dns.Msg {
return nil
} else {
fmt.Fprintf(os.Stderr, "Info: Ok: let it through\n")
qr[0] <- resolver.Msg{m, nil, nil}
in := <-qr[0]
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns
}
case false:
qr[0] <- resolver.Msg{m, nil, nil}
in := <-qr[0]
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns
return in.Dns
}
return nil

View File

@ -29,9 +29,12 @@ func match(m *dns.Msg, d int) (*dns.Msg, bool) {
func send(m *dns.Msg, ok bool) *dns.Msg {
switch ok {
case true, false:
qr[0] <- resolver.Msg{m, nil, nil}
in := <-qr[0]
return in.Dns
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns
}
return nil
}

View File

@ -62,9 +62,12 @@ func match(m *dns.Msg, d int) (*dns.Msg, bool) {
func send(m *dns.Msg, ok bool) *dns.Msg {
switch ok {
case true, false:
qr[0] <- resolver.Msg{m, nil, nil}
in := <-qr[0]
return in.Dns
var in resolver.Msg
for _, r := range qr {
r <- resolver.Msg{m, nil, nil}
in = <-r
}
return in.Dns // return the last
}
return nil
}