From ae3aedec995c61f462139dc614e5d7b829f42013 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Thu, 24 Mar 2011 09:31:50 +0100 Subject: [PATCH] Fix the examples --- _examples/Makefile | 2 +- _examples/funkensturm/funkensturm.go | 40 +++-------------------- _examples/reflect/reflect.go | 48 ++++++++++++++-------------- 3 files changed, 29 insertions(+), 61 deletions(-) diff --git a/_examples/Makefile b/_examples/Makefile index 26fc0be9..57b9e71d 100644 --- a/_examples/Makefile +++ b/_examples/Makefile @@ -5,7 +5,7 @@ axfr \ reflect \ funkensturm \ xfrprx \ -ds2key \ +key2ds \ all: for i in $(EXAMPLES); do gomake -C $$i; done diff --git a/_examples/funkensturm/funkensturm.go b/_examples/funkensturm/funkensturm.go index fdecc2a4..ba985075 100644 --- a/_examples/funkensturm/funkensturm.go +++ b/_examples/funkensturm/funkensturm.go @@ -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 } diff --git a/_examples/reflect/reflect.go b/_examples/reflect/reflect.go index 4cd7dbcc..cf877ed3 100644 --- a/_examples/reflect/reflect.go +++ b/_examples/reflect/reflect.go @@ -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 }