Fix the examples

This commit is contained in:
Miek Gieben 2011-03-24 09:31:50 +01:00
parent 87845a9cb1
commit ae3aedec99
3 changed files with 29 additions and 61 deletions

View File

@ -5,7 +5,7 @@ axfr \
reflect \
funkensturm \
xfrprx \
ds2key \
key2ds \
all:
for i in $(EXAMPLES); do gomake -C $$i; done

View File

@ -9,7 +9,6 @@ package main
import (
"os"
"flag"
"net"
"fmt"
"dns"
"os/signal"
@ -142,30 +141,15 @@ func doFunkensturm(pkt *dns.Msg) ([]byte, os.Error) {
return out, nil
}
func replyUDP(c *net.UDPConn, a net.Addr, i *dns.Msg) {
func reply(c *dns.Conn, i *dns.Msg) {
out, err := doFunkensturm(i)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.String())
return
}
if out != nil {
dns.SendUDP(out, c, a)
c.Write(out)
}
// nothing is send back
}
func replyTCP(c *net.TCPConn, a net.Addr, i *dns.Msg) {
out, err := doFunkensturm(i)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err.String())
return
}
if out != nil {
dns.SendTCP(out, c, a)
}
// nothing is send back
}
// split 127.0.0.1:53 into components
@ -180,29 +164,13 @@ func splitAddrPort(s string) (a, p string) {
}
func tcp(addr string, e chan os.Error) {
a, err := net.ResolveTCPAddr(addr)
if err != nil {
e <- err
}
l, err := net.ListenTCP("tcp", a)
if err != nil {
e <- err
}
err = dns.ServeTCP(l, replyTCP)
err := dns.ListenAndServeTCP(addr, reply)
e <- err
return
}
func udp(addr string, e chan os.Error) {
a, err := net.ResolveUDPAddr(addr)
if err != nil {
e <- err
}
l, err := net.ListenUDP("udp", a)
if err != nil {
e <- err
}
err = dns.ServeUDP(l, replyUDP)
err := dns.ListenAndServeUDP(addr, reply)
e <- err
return
}

View File

@ -27,35 +27,35 @@ import (
func reply(c *dns.Conn, in *dns.Msg) []byte {
m := new(dns.Msg)
m.SetReply(in.MsgHdr.Id)
m.SetReply(in)
m.Question = make([]dns.Question, 1)
m.Answer = make([]dns.RR, 1)
m.Extra = make([]dns.RR, 1)
// Copy the question.
// Copy the question.
m.Question[0] = in.Question[0]
// Some foo to check if we are called through ip6 or ip4.
// We add the correct reply RR.
var ad net.IP
if c.UDP != nil {
ad = c.Addr.(*net.UDPAddr).IP
} else {
ad = c.Addr.(*net.TCPAddr).IP
}
// Some foo to check if we are called through ip6 or ip4.
// We add the correct reply RR.
var ad net.IP
if c.UDP != nil {
ad = c.Addr.(*net.UDPAddr).IP
} else {
ad = c.Addr.(*net.TCPAddr).IP
}
if ad.To4() != nil {
r := new(dns.RR_A)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
r.A = ad
m.Answer[0] = r
} else {
r := new(dns.RR_AAAA)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0}
r.AAAA = ad
m.Answer[0] = r
}
if ad.To4() != nil {
r := new(dns.RR_A)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
r.A = ad
m.Answer[0] = r
} else {
r := new(dns.RR_AAAA)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0}
r.AAAA = ad
m.Answer[0] = r
}
t := new(dns.RR_TXT)
t.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 0}
@ -67,12 +67,12 @@ func reply(c *dns.Conn, in *dns.Msg) []byte {
m.Extra[0] = t
b, _ := m.Pack()
return b
return b
}
func handle(c *dns.Conn, in *dns.Msg) {
if in.MsgHdr.Response == true {
return // We don't do responses
return // We don't do responses
}
answer := reply(c, in)
c.Write(answer)
@ -85,7 +85,7 @@ func tcp(addr string, e chan os.Error) {
}
func udp(addr string, e chan os.Error) {
err := dns.ListenAndServeUDP(addr, handle)
err := dns.ListenAndServeUDP(addr, handle)
e <- err
return
}