From cc33ab2a7009698192407adf16717ef434aa9d38 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Wed, 8 Aug 2012 12:58:02 +0200 Subject: [PATCH] tweaks to make it work --- ex/fks-shield/cache.go | 4 ++-- ex/fks-shield/shield.go | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ex/fks-shield/cache.go b/ex/fks-shield/cache.go index 7655f27f..18c13a55 100644 --- a/ex/fks-shield/cache.go +++ b/ex/fks-shield/cache.go @@ -50,10 +50,10 @@ func (c *Cache) Evict() { if node == nil { continue } - if time.Since(node.Value.(*Packet).ttl) > TTL { + if t := time.Since(node.Value.(*Packet).ttl).Seconds(); t > float64(*flagttl) { c.Radix.Remove(key) if *flaglog { - log.Printf("fks-shield: evicting %s\n", key) + log.Printf("fks-shield: evicting %s after %f\n", key, t) } } } diff --git a/ex/fks-shield/shield.go b/ex/fks-shield/shield.go index c1678f41..1839cb33 100644 --- a/ex/fks-shield/shield.go +++ b/ex/fks-shield/shield.go @@ -15,18 +15,15 @@ var ( server = flag.String("server", "127.0.0.1:53", "remote server address") flagttl = flag.Int("ttl", 30, "ttl (in seconds) for cached packets") flaglog = flag.Bool("log", false, "be more verbose") - TTL time.Duration = 0 - // tsifile = flag.String("tsig", "", "file with tsig secrets (key.:base64)") ) func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) { - if *flaglog { - log.Printf("fks-shield: query") - } - TTL = time.Duration(*flagttl * 1e9) // Check for "special queries" switch { case r.IsNotify(): + if *flaglog { + log.Printf("fks-shield: notify/update") + } fallthrough case r.IsUpdate(): client := new(dns.Client) @@ -35,6 +32,9 @@ func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) { } return } + if *flaglog { + log.Printf("fks-shield: query") + } if p := c.Find(r); p != nil { dns.RawSetId(p, r.MsgHdr.Id) @@ -68,13 +68,14 @@ func main() { // Only listen on UDP go func() { if err := dns.ListenAndServe(*listen, "udp", nil); err != nil { - log.Fatal("fks-shield: failed to setup %s %s", *listen, "udp") + log.Fatalf("fks-shield: failed to setup %s %s", *listen, "udp") } }() go func() { for { // Every 10 sec run the cache cleaner time.Sleep(10 * 1e9) + log.Printf("cache clean") cache.Evict() } }()