From e80f9bda7f6b4400ecc0153eb81c66dcff5ba16c Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Fri, 17 Aug 2018 08:22:29 +0100 Subject: [PATCH] Use the replds client instead of going through clientutil --- manager.go | 6 +- storage.go | 7 +- .../ai3/go-common/clientutil/backend.go | 111 +- .../ai3/go-common/clientutil/balancer.go | 271 ++ .../ai3/go-common/clientutil/cpu.prof | Bin 0 -> 4566 bytes .../ai3/go-common/clientutil/dns.go | 98 + .../ai3/go-common/clientutil/doc.go | 37 + .../ai3/go-common/clientutil/error.go | 35 + .../ai3/go-common/clientutil/json.go | 45 - .../ai3/go-common/clientutil/retry.go | 92 - .../ai3/go-common/clientutil/track.go | 123 + .../ai3/go-common/clientutil/transport.go | 175 +- vendor/git.autistici.org/ai3/go-common/pwtool | Bin 2316456 -> 0 bytes vendor/git.autistici.org/ai3/replds/client.go | 6 +- vendor/git.autistici.org/ai3/replds/server.go | 2 +- vendor/github.com/cenkalti/backoff/README.md | 2 +- vendor/github.com/cenkalti/backoff/context.go | 3 +- vendor/github.com/cenkalti/backoff/retry.go | 1 - vendor/github.com/cenkalti/backoff/ticker.go | 2 - vendor/github.com/cenkalti/backoff/tries.go | 4 +- .../github.com/golang/protobuf/proto/Makefile | 43 + .../github.com/golang/protobuf/proto/clone.go | 46 +- .../golang/protobuf/proto/decode.go | 668 +++- .../golang/protobuf/proto/discard.go | 350 --- .../golang/protobuf/proto/encode.go | 1191 +++++++- .../github.com/golang/protobuf/proto/equal.go | 30 +- .../golang/protobuf/proto/extensions.go | 204 +- .../github.com/golang/protobuf/proto/lib.go | 70 +- .../golang/protobuf/proto/message_set.go | 81 +- .../golang/protobuf/proto/pointer_reflect.go | 595 ++-- .../golang/protobuf/proto/pointer_unsafe.go | 366 +-- .../golang/protobuf/proto/properties.go | 424 ++- .../golang/protobuf/proto/table_marshal.go | 2681 ----------------- .../golang/protobuf/proto/table_merge.go | 654 ---- .../golang/protobuf/proto/table_unmarshal.go | 1967 ------------ .../github.com/golang/protobuf/proto/text.go | 61 +- .../golang/protobuf/proto/text_parser.go | 77 +- vendor/github.com/miekg/dns/AUTHORS | 1 + vendor/github.com/miekg/dns/CONTRIBUTORS | 9 + vendor/github.com/miekg/dns/COPYRIGHT | 9 + vendor/github.com/miekg/dns/LICENSE | 32 + vendor/github.com/miekg/dns/README.md | 149 + vendor/github.com/miekg/dns/client.go | 378 +++ vendor/github.com/miekg/dns/clientconfig.go | 99 + vendor/github.com/miekg/dns/defaults.go | 278 ++ vendor/github.com/miekg/dns/dns.go | 100 + vendor/github.com/miekg/dns/dnssec.go | 659 ++++ vendor/github.com/miekg/dns/dnssec_keygen.go | 156 + vendor/github.com/miekg/dns/dnssec_keyscan.go | 249 ++ vendor/github.com/miekg/dns/dnssec_privkey.go | 85 + vendor/github.com/miekg/dns/doc.go | 251 ++ vendor/github.com/miekg/dns/edns.go | 514 ++++ vendor/github.com/miekg/dns/format.go | 96 + vendor/github.com/miekg/dns/labels.go | 162 + vendor/github.com/miekg/dns/msg.go | 2030 +++++++++++++ vendor/github.com/miekg/dns/nsecx.go | 112 + vendor/github.com/miekg/dns/privaterr.go | 117 + vendor/github.com/miekg/dns/rawmsg.go | 95 + vendor/github.com/miekg/dns/sanitize.go | 84 + vendor/github.com/miekg/dns/scanner.go | 43 + vendor/github.com/miekg/dns/server.go | 717 +++++ vendor/github.com/miekg/dns/sig0.go | 216 ++ vendor/github.com/miekg/dns/singleinflight.go | 57 + vendor/github.com/miekg/dns/tlsa.go | 86 + vendor/github.com/miekg/dns/tsig.go | 333 ++ vendor/github.com/miekg/dns/types.go | 1741 +++++++++++ vendor/github.com/miekg/dns/udp.go | 58 + vendor/github.com/miekg/dns/udp_linux.go | 63 + vendor/github.com/miekg/dns/udp_other.go | 17 + vendor/github.com/miekg/dns/udp_windows.go | 34 + vendor/github.com/miekg/dns/update.go | 94 + vendor/github.com/miekg/dns/xfr.go | 244 ++ vendor/github.com/miekg/dns/zgenerate.go | 158 + vendor/github.com/miekg/dns/zscan.go | 972 ++++++ vendor/github.com/miekg/dns/zscan_rr.go | 2270 ++++++++++++++ .../prometheus/common/model/time.go | 3 + vendor/golang.org/x/crypto/acme/acme.go | 420 +-- vendor/golang.org/x/crypto/acme/http.go | 281 ++ vendor/golang.org/x/crypto/acme/types.go | 8 +- vendor/gopkg.in/yaml.v2/LICENSE | 208 +- vendor/vendor.json | 86 +- 81 files changed, 16883 insertions(+), 7419 deletions(-) create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/balancer.go create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/cpu.prof create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/dns.go create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/doc.go create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/error.go delete mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/json.go delete mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/retry.go create mode 100644 vendor/git.autistici.org/ai3/go-common/clientutil/track.go delete mode 100755 vendor/git.autistici.org/ai3/go-common/pwtool create mode 100644 vendor/github.com/golang/protobuf/proto/Makefile delete mode 100644 vendor/github.com/golang/protobuf/proto/discard.go delete mode 100644 vendor/github.com/golang/protobuf/proto/table_marshal.go delete mode 100644 vendor/github.com/golang/protobuf/proto/table_merge.go delete mode 100644 vendor/github.com/golang/protobuf/proto/table_unmarshal.go create mode 100644 vendor/github.com/miekg/dns/AUTHORS create mode 100644 vendor/github.com/miekg/dns/CONTRIBUTORS create mode 100644 vendor/github.com/miekg/dns/COPYRIGHT create mode 100644 vendor/github.com/miekg/dns/LICENSE create mode 100644 vendor/github.com/miekg/dns/README.md create mode 100644 vendor/github.com/miekg/dns/client.go create mode 100644 vendor/github.com/miekg/dns/clientconfig.go create mode 100644 vendor/github.com/miekg/dns/defaults.go create mode 100644 vendor/github.com/miekg/dns/dns.go create mode 100644 vendor/github.com/miekg/dns/dnssec.go create mode 100644 vendor/github.com/miekg/dns/dnssec_keygen.go create mode 100644 vendor/github.com/miekg/dns/dnssec_keyscan.go create mode 100644 vendor/github.com/miekg/dns/dnssec_privkey.go create mode 100644 vendor/github.com/miekg/dns/doc.go create mode 100644 vendor/github.com/miekg/dns/edns.go create mode 100644 vendor/github.com/miekg/dns/format.go create mode 100644 vendor/github.com/miekg/dns/labels.go create mode 100644 vendor/github.com/miekg/dns/msg.go create mode 100644 vendor/github.com/miekg/dns/nsecx.go create mode 100644 vendor/github.com/miekg/dns/privaterr.go create mode 100644 vendor/github.com/miekg/dns/rawmsg.go create mode 100644 vendor/github.com/miekg/dns/sanitize.go create mode 100644 vendor/github.com/miekg/dns/scanner.go create mode 100644 vendor/github.com/miekg/dns/server.go create mode 100644 vendor/github.com/miekg/dns/sig0.go create mode 100644 vendor/github.com/miekg/dns/singleinflight.go create mode 100644 vendor/github.com/miekg/dns/tlsa.go create mode 100644 vendor/github.com/miekg/dns/tsig.go create mode 100644 vendor/github.com/miekg/dns/types.go create mode 100644 vendor/github.com/miekg/dns/udp.go create mode 100644 vendor/github.com/miekg/dns/udp_linux.go create mode 100644 vendor/github.com/miekg/dns/udp_other.go create mode 100644 vendor/github.com/miekg/dns/udp_windows.go create mode 100644 vendor/github.com/miekg/dns/update.go create mode 100644 vendor/github.com/miekg/dns/xfr.go create mode 100644 vendor/github.com/miekg/dns/zgenerate.go create mode 100644 vendor/github.com/miekg/dns/zscan.go create mode 100644 vendor/github.com/miekg/dns/zscan_rr.go create mode 100644 vendor/golang.org/x/crypto/acme/http.go diff --git a/manager.go b/manager.go index 76910d12..a2f099ed 100644 --- a/manager.go +++ b/manager.go @@ -17,7 +17,7 @@ import ( "sync" "time" - "git.autistici.org/ai3/go-common/clientutil" + "git.autistici.org/ai3/replds" "github.com/prometheus/client_golang/prometheus" ) @@ -109,13 +109,13 @@ func NewManager(config *Config, certGen CertGenerator) (*Manager, error) { if config.ReplDS == nil { m.storage = ds } else { - be, err := clientutil.NewBackend(config.ReplDS) + r, err := replds.NewPublicClient(config.ReplDS) if err != nil { return nil, err } m.storage = &replStorage{ dirStorage: ds, - replClient: be, + replClient: r, } } diff --git a/storage.go b/storage.go index b94d6545..9641fe67 100644 --- a/storage.go +++ b/storage.go @@ -16,7 +16,6 @@ import ( "strings" "time" - "git.autistici.org/ai3/go-common/clientutil" "git.autistici.org/ai3/replds" ) @@ -93,7 +92,7 @@ func dumpCertsAndKey(cn string, der [][]byte, key crypto.Signer) (map[string][]b // certificates to replds instead. type replStorage struct { *dirStorage - replClient clientutil.Backend + replClient replds.PublicClient } func (d *replStorage) PutCert(cn string, der [][]byte, key crypto.Signer) error { @@ -115,8 +114,8 @@ func (d *replStorage) PutCert(cn string, der [][]byte, key crypto.Signer) error ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) defer cancel() - var resp replds.SetNodesResponse - if err := clientutil.DoJSONHTTPRequest(ctx, d.replClient.Client(""), d.replClient.URL("")+"/api/set_nodes", req, &resp); err != nil { + resp, err := d.replClient.SetNodes(ctx, &req) + if err != nil { return err } if resp.HostsOk < 1 { diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/backend.go b/vendor/git.autistici.org/ai3/go-common/clientutil/backend.go index 1f49a7e5..6580d0eb 100644 --- a/vendor/git.autistici.org/ai3/go-common/clientutil/backend.go +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/backend.go @@ -1,15 +1,10 @@ package clientutil import ( - "crypto/tls" - "fmt" - "net/http" - "net/url" - "sync" - "time" + "context" ) -// BackendConfig specifies the configuration to access a service. +// BackendConfig specifies the configuration of a service backend. // // Services with multiple backends can be replicated or partitioned, // depending on a configuration switch, making it a deployment-time @@ -18,102 +13,30 @@ import ( // 'shard' parameter on their APIs. type BackendConfig struct { URL string `yaml:"url"` - Sharded bool `yaml:"sharded"` TLSConfig *TLSClientConfig `yaml:"tls_config"` + Sharded bool `yaml:"sharded"` + Debug bool `yaml:"debug"` } // Backend is a runtime class that provides http Clients for use with // a specific service backend. If the service can't be partitioned, -// pass an empty string to the Client method. +// pass an empty string to the Call method. type Backend interface { - // URL for the service for a specific shard. - URL(string) string + // Call a remote method. The sharding behavior is the following: + // + // Services that support sharding (partitioning) should always + // include the shard ID in their Call() requests. Users can + // then configure backends to be sharded or not in their + // Config. When invoking Call with a shard ID on a non-sharded + // service, the shard ID is simply ignored. Invoking Call + // *without* a shard ID on a sharded service is an error. + Call(context.Context, string, string, interface{}, interface{}) error - // Client that can be used to make a request to the service. - Client(string) *http.Client + // Close all resources associated with the backend. + Close() } // NewBackend returns a new Backend with the given config. func NewBackend(config *BackendConfig) (Backend, error) { - u, err := url.Parse(config.URL) - if err != nil { - return nil, err - } - - var tlsConfig *tls.Config - if config.TLSConfig != nil { - tlsConfig, err = config.TLSConfig.TLSConfig() - if err != nil { - return nil, err - } - } - - if config.Sharded { - return &replicatedClient{ - u: u, - c: newHTTPClient(u, tlsConfig), - }, nil - } - return &shardedClient{ - baseURL: u, - tlsConfig: tlsConfig, - urls: make(map[string]*url.URL), - shards: make(map[string]*http.Client), - }, nil -} - -type replicatedClient struct { - c *http.Client - u *url.URL -} - -func (r *replicatedClient) Client(_ string) *http.Client { return r.c } -func (r *replicatedClient) URL(_ string) string { return r.u.String() } - -type shardedClient struct { - baseURL *url.URL - tlsConfig *tls.Config - mx sync.Mutex - urls map[string]*url.URL - shards map[string]*http.Client -} - -func (s *shardedClient) getShardURL(shard string) *url.URL { - if shard == "" { - return s.baseURL - } - u, ok := s.urls[shard] - if !ok { - var tmp = *s.baseURL - tmp.Host = fmt.Sprintf("%s.%s", shard, tmp.Host) - u = &tmp - s.urls[shard] = u - } - return u -} - -func (s *shardedClient) URL(shard string) string { - s.mx.Lock() - defer s.mx.Unlock() - return s.getShardURL(shard).String() -} - -func (s *shardedClient) Client(shard string) *http.Client { - s.mx.Lock() - defer s.mx.Unlock() - - client, ok := s.shards[shard] - if !ok { - u := s.getShardURL(shard) - client = newHTTPClient(u, s.tlsConfig) - s.shards[shard] = client - } - return client -} - -func newHTTPClient(u *url.URL, tlsConfig *tls.Config) *http.Client { - return &http.Client{ - Transport: NewTransport([]string{u.Host}, tlsConfig, nil), - Timeout: 30 * time.Second, - } + return newBalancedBackend(config, defaultResolver) } diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/balancer.go b/vendor/git.autistici.org/ai3/go-common/clientutil/balancer.go new file mode 100644 index 00000000..9d9b7dd6 --- /dev/null +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/balancer.go @@ -0,0 +1,271 @@ +package clientutil + +import ( + "bytes" + "context" + "crypto/tls" + "encoding/json" + "errors" + "fmt" + "log" + "math/rand" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "time" + + "github.com/cenkalti/backoff" +) + +// Our own narrow logger interface. +type logger interface { + Printf(string, ...interface{}) +} + +// A nilLogger is used when Config.Debug is false. +type nilLogger struct{} + +func (l nilLogger) Printf(_ string, _ ...interface{}) {} + +// Parameters that define the exponential backoff algorithm used. +var ( + ExponentialBackOffInitialInterval = 100 * time.Millisecond + ExponentialBackOffMultiplier = 1.4142 +) + +// newExponentialBackOff creates a backoff.ExponentialBackOff object +// with our own default values. +func newExponentialBackOff() *backoff.ExponentialBackOff { + b := backoff.NewExponentialBackOff() + b.InitialInterval = ExponentialBackOffInitialInterval + b.Multiplier = ExponentialBackOffMultiplier + + // Set MaxElapsedTime to 0 because we expect the overall + // timeout to be dictated by the request Context. + b.MaxElapsedTime = 0 + + return b +} + +// Balancer for HTTP connections. It will round-robin across available +// backends, trying to avoid ones that are erroring out, until one +// succeeds or returns a permanent error. +// +// This object should not be used for load balancing of individual +// HTTP requests: it doesn't do anything smart beyond trying to avoid +// broken targets. It's meant to provide a *reliable* connection to a +// set of equivalent services for HA purposes. +type balancedBackend struct { + *backendTracker + *transportCache + baseURI *url.URL + sharded bool + resolver resolver + log logger +} + +func newBalancedBackend(config *BackendConfig, resolver resolver) (*balancedBackend, error) { + u, err := url.Parse(config.URL) + if err != nil { + return nil, err + } + + var tlsConfig *tls.Config + if config.TLSConfig != nil { + tlsConfig, err = config.TLSConfig.TLSConfig() + if err != nil { + return nil, err + } + } + + var logger logger = &nilLogger{} + if config.Debug { + logger = log.New(os.Stderr, fmt.Sprintf("backend %s: ", u.Host), 0) + } + return &balancedBackend{ + backendTracker: newBackendTracker(u.Host, resolver, logger), + transportCache: newTransportCache(tlsConfig), + sharded: config.Sharded, + baseURI: u, + resolver: resolver, + log: logger, + }, nil +} + +// Call the backend. Makes an HTTP POST request to the specified uri, +// with a JSON-encoded request body. It will attempt to decode the +// response body as JSON. +func (b *balancedBackend) Call(ctx context.Context, shard, path string, req, resp interface{}) error { + data, err := json.Marshal(req) + if err != nil { + return err + } + + var tg targetGenerator = b.backendTracker + if b.sharded && shard != "" { + tg = newShardedGenerator(shard, b.baseURI.Host, b.resolver) + } + seq := newSequence(tg) + b.log.Printf("%016x: initialized", seq.ID()) + + var httpResp *http.Response + err = backoff.Retry(func() error { + req, rerr := b.newJSONRequest(path, shard, data) + if rerr != nil { + return rerr + } + httpResp, rerr = b.do(ctx, seq, req) + return rerr + }, backoff.WithContext(newExponentialBackOff(), ctx)) + if err != nil { + return err + } + defer httpResp.Body.Close() // nolint + + if httpResp.Header.Get("Content-Type") != "application/json" { + return errors.New("not a JSON response") + } + + if resp == nil { + return nil + } + return json.NewDecoder(httpResp.Body).Decode(resp) +} + +// Return the URI to be used for the request. This is used both in the +// Host HTTP header and as the TLS server name used to pick a server +// certificate (if using TLS). +func (b *balancedBackend) getURIForRequest(shard, path string) string { + u := *b.baseURI + if b.sharded && shard != "" { + u.Host = fmt.Sprintf("%s.%s", shard, u.Host) + } + u.Path = appendPath(u.Path, path) + return u.String() +} + +// Build a http.Request object. +func (b *balancedBackend) newJSONRequest(path, shard string, data []byte) (*http.Request, error) { + req, err := http.NewRequest("POST", b.getURIForRequest(shard, path), bytes.NewReader(data)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Content-Length", strconv.FormatInt(int64(len(data)), 10)) + return req, nil +} + +// Select a new target from the given sequence and send the request to +// it. Wrap HTTP errors in a RemoteError object. +func (b *balancedBackend) do(ctx context.Context, seq *sequence, req *http.Request) (resp *http.Response, err error) { + target, terr := seq.Next() + if terr != nil { + return + } + + b.log.Printf("sequence %016x: connecting to %s", seq.ID(), target) + client := &http.Client{ + Transport: b.transportCache.getTransport(target), + } + resp, err = client.Do(req.WithContext(ctx)) + if err == nil && resp.StatusCode != 200 { + err = remoteErrorFromResponse(resp) + if !isStatusTemporary(resp.StatusCode) { + err = backoff.Permanent(err) + } + resp.Body.Close() // nolint + resp = nil + } + + seq.Done(target, err) + return +} + +var errNoTargets = errors.New("no available backends") + +type targetGenerator interface { + getTargets() []string + setStatus(string, bool) +} + +// A replicatedSequence repeatedly iterates over available backends in order of +// preference. Once in a while it refreshes its list of available +// targets. +type sequence struct { + id uint64 + tg targetGenerator + targets []string + pos int +} + +func newSequence(tg targetGenerator) *sequence { + return &sequence{ + id: rand.Uint64(), + tg: tg, + targets: tg.getTargets(), + } +} + +func (s *sequence) ID() uint64 { return s.id } + +func (s *sequence) reloadTargets() { + targets := s.tg.getTargets() + if len(targets) > 0 { + s.targets = targets + s.pos = 0 + } +} + +// Next returns the next target. +func (s *sequence) Next() (t string, err error) { + if s.pos >= len(s.targets) { + s.reloadTargets() + if len(s.targets) == 0 { + err = errNoTargets + return + } + } + t = s.targets[s.pos] + s.pos++ + return +} + +func (s *sequence) Done(t string, err error) { + s.tg.setStatus(t, err == nil) +} + +// A shardedGenerator returns a single sharded target to a sequence. +type shardedGenerator struct { + id uint64 + addrs []string +} + +func newShardedGenerator(shard, base string, resolver resolver) *shardedGenerator { + return &shardedGenerator{ + id: rand.Uint64(), + addrs: resolver.ResolveIP(fmt.Sprintf("%s.%s", shard, base)), + } +} + +func (g *shardedGenerator) getTargets() []string { return g.addrs } +func (g *shardedGenerator) setStatus(_ string, _ bool) {} + +// Concatenate two URI paths. +func appendPath(a, b string) string { + if strings.HasSuffix(a, "/") && strings.HasPrefix(b, "/") { + return a + b[1:] + } + return a + b +} + +// Some HTTP status codes are treated are temporary errors. +func isStatusTemporary(code int) bool { + switch code { + case http.StatusTooManyRequests, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout: + return true + default: + return false + } +} diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/cpu.prof b/vendor/git.autistici.org/ai3/go-common/clientutil/cpu.prof new file mode 100644 index 0000000000000000000000000000000000000000..89fe0a7d104f6c1ca9466d218abbfe393d431402 GIT binary patch literal 4566 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 literal 0 HcmV?d00001 diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/dns.go b/vendor/git.autistici.org/ai3/go-common/clientutil/dns.go new file mode 100644 index 00000000..ed30f873 --- /dev/null +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/dns.go @@ -0,0 +1,98 @@ +package clientutil + +import ( + "log" + "net" + "sync" + "time" + + "golang.org/x/sync/singleflight" +) + +type resolver interface { + ResolveIP(string) []string +} + +type dnsResolver struct{} + +func (r *dnsResolver) ResolveIP(hostport string) []string { + var resolved []string + host, port, err := net.SplitHostPort(hostport) + if err != nil { + log.Printf("error parsing %s: %v", hostport, err) + return nil + } + hostIPs, err := net.LookupIP(host) + if err != nil { + log.Printf("error resolving %s: %v", host, err) + return nil + } + for _, ip := range hostIPs { + resolved = append(resolved, net.JoinHostPort(ip.String(), port)) + } + return resolved +} + +var defaultResolver = newDNSCache(&dnsResolver{}) + +type cacheDatum struct { + addrs []string + deadline time.Time +} + +type dnsCache struct { + resolver resolver + sf singleflight.Group + mx sync.RWMutex + cache map[string]cacheDatum +} + +func newDNSCache(resolver resolver) *dnsCache { + return &dnsCache{ + resolver: resolver, + cache: make(map[string]cacheDatum), + } +} + +func (c *dnsCache) get(host string) ([]string, bool) { + d, ok := c.cache[host] + if !ok { + return nil, false + } + return d.addrs, d.deadline.After(time.Now()) +} + +func (c *dnsCache) update(host string) []string { + v, _, _ := c.sf.Do(host, func() (interface{}, error) { + addrs := c.resolver.ResolveIP(host) + // By uncommenting this, we stop caching negative results. + // if len(addrs) == 0 { + // return nil, nil + // } + c.mx.Lock() + c.cache[host] = cacheDatum{ + addrs: addrs, + deadline: time.Now().Add(60 * time.Second), + } + c.mx.Unlock() + return addrs, nil + }) + return v.([]string) +} + +func (c *dnsCache) ResolveIP(host string) []string { + c.mx.RLock() + addrs, ok := c.get(host) + c.mx.RUnlock() + + if ok { + return addrs + } + + if len(addrs) > 0 { + go c.update(host) + return addrs + } + + return c.update(host) +} diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/doc.go b/vendor/git.autistici.org/ai3/go-common/clientutil/doc.go new file mode 100644 index 00000000..421915b6 --- /dev/null +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/doc.go @@ -0,0 +1,37 @@ +// Package clientutil implements a very simple style of JSON RPC. +// +// Requests and responses are both encoded in JSON, and they should +// have the "application/json" Content-Type. +// +// HTTP response statuses other than 200 indicate an error: in this +// case, the response body may contain (in plain text) further details +// about the error. Some HTTP status codes are considered temporary +// errors (incl. 429 for throttling). The client will retry requests, +// if targets are available, until the context expires - so it's quite +// important to remember to set a timeout on the context given to the +// Call() function! +// +// The client handles both replicated services and sharded +// (partitioned) services. Users of this package that want to support +// sharded deployments are supposed to pass a shard ID to every +// Call(). At the deployment stage, sharding can be enabled via the +// configuration. +// +// For replicated services, the client will expect the provided +// hostname to resolve to one or more IP addresses, in which case it +// will pick a random IP address on every new request, while +// remembering which addresses have had errors and trying to avoid +// them. It will however send an occasional request to the failed +// targets, to see if they've come back. +// +// For sharded services, the client makes simple HTTP requests to the +// specific target identified by the shard. It does this by prepending +// the shard ID to the backend hostname (so a request to "example.com" +// with shard ID "1" becomes a request to "1.example.com"). +// +// The difference with other JSON-RPC implementations is that we use a +// different URI for every method, and we force the usage of +// request/response types. This makes it easy for projects to +// eventually migrate to GRPC. +// +package clientutil diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/error.go b/vendor/git.autistici.org/ai3/go-common/clientutil/error.go new file mode 100644 index 00000000..f011e162 --- /dev/null +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/error.go @@ -0,0 +1,35 @@ +package clientutil + +import ( + "fmt" + "io/ioutil" + "net/http" +) + +// RemoteError represents a HTTP error from the server. The status +// code and response body can be retrieved with the StatusCode() and +// Body() methods. +type RemoteError struct { + statusCode int + body string +} + +func remoteErrorFromResponse(resp *http.Response) *RemoteError { + // Optimistically read the response body, ignoring errors. + var body string + if data, err := ioutil.ReadAll(resp.Body); err == nil { + body = string(data) + } + return &RemoteError{statusCode: resp.StatusCode, body: body} +} + +// Error implements the error interface. +func (e *RemoteError) Error() string { + return fmt.Sprintf("%d - %s", e.statusCode, e.body) +} + +// StatusCode returns the HTTP status code. +func (e *RemoteError) StatusCode() int { return e.statusCode } + +// Body returns the response body. +func (e *RemoteError) Body() string { return e.body } diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/json.go b/vendor/git.autistici.org/ai3/go-common/clientutil/json.go deleted file mode 100644 index 5fc1ab2e..00000000 --- a/vendor/git.autistici.org/ai3/go-common/clientutil/json.go +++ /dev/null @@ -1,45 +0,0 @@ -package clientutil - -import ( - "bytes" - "context" - "encoding/json" - "errors" - "fmt" - "net/http" -) - -// DoJSONHTTPRequest makes an HTTP POST request to the specified uri, -// with a JSON-encoded request body. It will attempt to decode the -// response body as JSON. -func DoJSONHTTPRequest(ctx context.Context, client *http.Client, uri string, req, resp interface{}) error { - data, err := json.Marshal(req) - if err != nil { - return err - } - - httpReq, err := http.NewRequest("POST", uri, bytes.NewReader(data)) - if err != nil { - return err - } - httpReq.Header.Set("Content-Type", "application/json") - httpReq = httpReq.WithContext(ctx) - - httpResp, err := RetryHTTPDo(client, httpReq, NewExponentialBackOff()) - if err != nil { - return err - } - defer httpResp.Body.Close() - - if httpResp.StatusCode != 200 { - return fmt.Errorf("HTTP status %d", httpResp.StatusCode) - } - if httpResp.Header.Get("Content-Type") != "application/json" { - return errors.New("not a JSON response") - } - - if resp == nil { - return nil - } - return json.NewDecoder(httpResp.Body).Decode(resp) -} diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/retry.go b/vendor/git.autistici.org/ai3/go-common/clientutil/retry.go deleted file mode 100644 index 3ca7b51a..00000000 --- a/vendor/git.autistici.org/ai3/go-common/clientutil/retry.go +++ /dev/null @@ -1,92 +0,0 @@ -package clientutil - -import ( - "errors" - "net/http" - "time" - - "github.com/cenkalti/backoff" -) - -// NewExponentialBackOff creates a backoff.ExponentialBackOff object -// with our own default values. -func NewExponentialBackOff() *backoff.ExponentialBackOff { - b := backoff.NewExponentialBackOff() - b.InitialInterval = 100 * time.Millisecond - //b.Multiplier = 1.4142 - return b -} - -// A temporary (retriable) error is something that has a Temporary method. -type tempError interface { - Temporary() bool -} - -type tempErrorWrapper struct { - error -} - -func (t tempErrorWrapper) Temporary() bool { return true } - -// TempError makes a temporary (retriable) error out of a normal error. -func TempError(err error) error { - return tempErrorWrapper{err} -} - -// Retry operation op until it succeeds according to the backoff -// policy b. -// -// Note that this function reverses the error semantics of -// backoff.Operation: all errors are permanent unless explicitly -// marked as temporary (i.e. they have a Temporary() method that -// returns true). This is to better align with the errors returned by -// the net package. -func Retry(op backoff.Operation, b backoff.BackOff) error { - innerOp := func() error { - err := op() - if err == nil { - return err - } - if tmpErr, ok := err.(tempError); ok && tmpErr.Temporary() { - return err - } - return backoff.Permanent(err) - } - return backoff.Retry(innerOp, b) -} - -var errHTTPBackOff = TempError(errors.New("temporary http error")) - -func isStatusTemporary(code int) bool { - switch code { - case http.StatusTooManyRequests, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout: - return true - default: - return false - } -} - -// RetryHTTPDo retries an HTTP request until it succeeds, according to -// the backoff policy b. It will retry on temporary network errors and -// upon receiving specific temporary HTTP errors. It will use the -// context associated with the HTTP request object. -func RetryHTTPDo(client *http.Client, req *http.Request, b backoff.BackOff) (*http.Response, error) { - var resp *http.Response - op := func() error { - // Clear up previous response if set. - if resp != nil { - resp.Body.Close() - } - - var err error - resp, err = client.Do(req) - if err == nil && isStatusTemporary(resp.StatusCode) { - resp.Body.Close() - return errHTTPBackOff - } - return err - } - - err := Retry(op, backoff.WithContext(b, req.Context())) - return resp, err -} diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/track.go b/vendor/git.autistici.org/ai3/go-common/clientutil/track.go new file mode 100644 index 00000000..2db20bbb --- /dev/null +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/track.go @@ -0,0 +1,123 @@ +package clientutil + +import ( + "math/rand" + "sync" + "time" +) + +// The backendTracker tracks the state of the targets associated with +// a backend, and periodically checks DNS for updates. +type backendTracker struct { + log logger + addr string + resolver resolver + stopCh chan struct{} + + mx sync.Mutex + resolved []string + failed map[string]time.Time +} + +func newBackendTracker(addr string, resolver resolver, logger logger) *backendTracker { + // Resolve the targets once before returning. + b := &backendTracker{ + addr: addr, + resolver: resolver, + resolved: resolver.ResolveIP(addr), + failed: make(map[string]time.Time), + stopCh: make(chan struct{}), + log: logger, + } + go b.updateProc() + return b +} + +func (b *backendTracker) Close() { + close(b.stopCh) +} + +// Return the full list of targets in reverse preference order. +func (b *backendTracker) getTargets() []string { + b.mx.Lock() + defer b.mx.Unlock() + + var good, bad []string + for _, t := range b.resolved { + if _, ok := b.failed[t]; ok { + bad = append(bad, t) + } else { + good = append(good, t) + } + } + + good = shuffle(good) + bad = shuffle(bad) + + return append(good, bad...) +} + +func (b *backendTracker) setStatus(addr string, ok bool) { + b.mx.Lock() + + _, isFailed := b.failed[addr] + if isFailed && ok { + b.log.Printf("target %s now ok", addr) + delete(b.failed, addr) + } else if !isFailed && !ok { + b.log.Printf("target %s failed", addr) + b.failed[addr] = time.Now() + } + + b.mx.Unlock() +} + +var ( + backendUpdateInterval = 60 * time.Second + backendFailureRetryInterval = 60 * time.Second +) + +func (b *backendTracker) expireFailedTargets() { + b.mx.Lock() + now := time.Now() + for k, v := range b.failed { + if now.Sub(v) > backendFailureRetryInterval { + delete(b.failed, k) + } + } + b.mx.Unlock() +} + +func (b *backendTracker) updateProc() { + tick := time.NewTicker(backendUpdateInterval) + defer tick.Stop() + for { + select { + case <-b.stopCh: + return + case <-tick.C: + b.expireFailedTargets() + resolved := b.resolver.ResolveIP(b.addr) + if len(resolved) > 0 { + b.mx.Lock() + b.resolved = resolved + b.mx.Unlock() + } + } + } +} + +var shuffleSrc = rand.NewSource(time.Now().UnixNano()) + +// Re-order elements of a slice randomly. +func shuffle(values []string) []string { + if len(values) < 2 { + return values + } + rnd := rand.New(shuffleSrc) + for i := len(values) - 1; i > 0; i-- { + j := rnd.Intn(i + 1) + values[i], values[j] = values[j], values[i] + } + return values +} diff --git a/vendor/git.autistici.org/ai3/go-common/clientutil/transport.go b/vendor/git.autistici.org/ai3/go-common/clientutil/transport.go index e4f98e3f..843a760b 100644 --- a/vendor/git.autistici.org/ai3/go-common/clientutil/transport.go +++ b/vendor/git.autistici.org/ai3/go-common/clientutil/transport.go @@ -3,170 +3,63 @@ package clientutil import ( "context" "crypto/tls" - "errors" - "log" "net" "net/http" "sync" "time" ) -var errAllBackendsFailed = errors.New("all backends failed") - -type dnsResolver struct{} - -func (r *dnsResolver) ResolveIPs(hosts []string) []string { - var resolved []string - for _, hostport := range hosts { - host, port, err := net.SplitHostPort(hostport) - if err != nil { - log.Printf("error parsing %s: %v", hostport, err) - continue - } - hostIPs, err := net.LookupIP(host) - if err != nil { - log.Printf("error resolving %s: %v", host, err) - continue - } - for _, ip := range hostIPs { - resolved = append(resolved, net.JoinHostPort(ip.String(), port)) - } - } - return resolved -} - -var defaultResolver = &dnsResolver{} - -type resolver interface { - ResolveIPs([]string) []string -} - -// Balancer for HTTP connections. It will round-robin across available -// backends, trying to avoid ones that are erroring out, until one -// succeeds or they all fail. +// The transportCache is just a cache of http transports, each +// connecting to a specific address. // -// This object should not be used for load balancing of individual -// HTTP requests: once a new connection is established, requests will -// be sent over it until it errors out. It's meant to provide a -// *reliable* connection to a set of equivalent backends for HA -// purposes. -type balancer struct { - hosts []string - resolver resolver - stop chan bool +// We use this to control the HTTP Host header and the TLS ServerName +// independently of the target address. +type transportCache struct { + tlsConfig *tls.Config - // List of currently valid (or untested) backends, and ones - // that errored out at least once. - mx sync.Mutex - addrs []string - ok map[string]bool + mx sync.RWMutex + transports map[string]http.RoundTripper } -var backendUpdateInterval = 60 * time.Second +func newTransportCache(tlsConfig *tls.Config) *transportCache { + return &transportCache{ + tlsConfig: tlsConfig, + transports: make(map[string]http.RoundTripper), + } +} -// Periodically update the list of available backends. -func (b *balancer) updateProc() { - tick := time.NewTicker(backendUpdateInterval) - for { - select { - case <-b.stop: - return - case <-tick.C: - resolved := b.resolver.ResolveIPs(b.hosts) - if len(resolved) > 0 { - b.mx.Lock() - b.addrs = resolved - b.mx.Unlock() - } - } +func (m *transportCache) newTransport(addr string) http.RoundTripper { + return &http.Transport{ + TLSClientConfig: m.tlsConfig, + DialContext: func(ctx context.Context, network, _ string) (net.Conn, error) { + return netDialContext(ctx, network, addr) + }, } } -// Returns a list of all available backends, split into "good ones" -// (no errors seen since last successful connection) and "bad ones". -func (b *balancer) getBackends() ([]string, []string) { - b.mx.Lock() - defer b.mx.Unlock() +func (m *transportCache) getTransport(addr string) http.RoundTripper { + m.mx.RLock() + t, ok := m.transports[addr] + m.mx.RUnlock() - var good, bad []string - for _, addr := range b.addrs { - if ok := b.ok[addr]; ok { - good = append(good, addr) - } else { - bad = append(bad, addr) + if !ok { + m.mx.Lock() + if t, ok = m.transports[addr]; !ok { + t = m.newTransport(addr) + m.transports[addr] = t } + m.mx.Unlock() } - return good, bad -} -func (b *balancer) notify(addr string, ok bool) { - b.mx.Lock() - b.ok[addr] = ok - b.mx.Unlock() + return t } +// Go < 1.9 does not have net.DialContext, reimplement it in terms of +// net.DialTimeout. func netDialContext(ctx context.Context, network, addr string) (net.Conn, error) { - timeout := 30 * time.Second - // Go < 1.9 does not have net.DialContext, reimplement it in - // terms of net.DialTimeout. + timeout := 60 * time.Second // some arbitrary max timeout if deadline, ok := ctx.Deadline(); ok { timeout = time.Until(deadline) } return net.DialTimeout(network, addr, timeout) } - -func (b *balancer) dial(ctx context.Context, network, addr string) (net.Conn, error) { - // Start by attempting a connection on 'good' targets. - good, bad := b.getBackends() - - for _, addr := range good { - // Go < 1.9 does not have DialContext, deal with it - conn, err := netDialContext(ctx, network, addr) - if err == nil { - return conn, nil - } else if err == context.Canceled { - // A timeout might be bad, set the error bit - // on the connection. - b.notify(addr, false) - return nil, err - } - b.notify(addr, false) - } - - for _, addr := range bad { - conn, err := netDialContext(ctx, network, addr) - if err == nil { - b.notify(addr, true) - return conn, nil - } else if err == context.Canceled { - return nil, err - } - } - - return nil, errAllBackendsFailed -} - -// NewTransport returns a suitably configured http.RoundTripper that -// talks to a specific backend service. It performs discovery of -// available backends via DNS (using A or AAAA record lookups), tries -// to route traffic away from faulty backends. -// -// It will periodically attempt to rediscover new backends. -func NewTransport(backends []string, tlsConf *tls.Config, resolver resolver) http.RoundTripper { - if resolver == nil { - resolver = defaultResolver - } - addrs := resolver.ResolveIPs(backends) - b := &balancer{ - hosts: backends, - resolver: resolver, - addrs: addrs, - ok: make(map[string]bool), - } - go b.updateProc() - - return &http.Transport{ - DialContext: b.dial, - TLSClientConfig: tlsConf, - } -} diff --git a/vendor/git.autistici.org/ai3/go-common/pwtool b/vendor/git.autistici.org/ai3/go-common/pwtool deleted file mode 100755 index 12ae67693b6dd6b345e4517959d0ca9137c48c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316456 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%0Af+DNyz)>k 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�q>dykAr~^Dv|K$ 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͌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�JSfp0?}WosbFGguV7;6Lb7iL)IMDO6}Ww%G%YM3 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ņtfn=}f5hezOBTNj+M-cv1I|A`9!Sst} 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%0D5l?sypC|o0>qg*PwfK--8%t`Ji<4gPCCw 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≪2xyq@sKb<+7JgjrVFu+lm)!46zQzFT+j*? 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�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�l5A!^~X(RaXTsZ^DI3 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 diff --git a/vendor/git.autistici.org/ai3/replds/client.go b/vendor/git.autistici.org/ai3/replds/client.go index 331b1754..343dc386 100644 --- a/vendor/git.autistici.org/ai3/replds/client.go +++ b/vendor/git.autistici.org/ai3/replds/client.go @@ -31,17 +31,17 @@ func newClient(config *clientutil.BackendConfig) (*client, error) { func (c *client) internalGetNodes(ctx context.Context, req *internalGetNodesRequest) (*internalGetNodesResponse, error) { var resp internalGetNodesResponse - err := clientutil.DoJSONHTTPRequest(ctx, c.be.Client(""), c.be.URL("")+"/api/internal/get_nodes", req, &resp) + err := c.be.Call(ctx, "", "/api/internal/get_nodes", req, &resp) return &resp, err } func (c *client) internalUpdateNodes(ctx context.Context, req *internalUpdateNodesRequest) error { - return clientutil.DoJSONHTTPRequest(ctx, c.be.Client(""), c.be.URL("")+"/api/internal/update_nodes", req, nil) + return c.be.Call(ctx, "", "/api/internal/update_nodes", req, nil) } func (c *client) SetNodes(ctx context.Context, req *SetNodesRequest) (*SetNodesResponse, error) { var resp SetNodesResponse - err := clientutil.DoJSONHTTPRequest(ctx, c.be.Client(""), c.be.URL("")+"/api/set_nodes", req, &resp) + err := c.be.Call(ctx, "", "/api/set_nodes", req, &resp) return &resp, err } diff --git a/vendor/git.autistici.org/ai3/replds/server.go b/vendor/git.autistici.org/ai3/replds/server.go index f7df02c3..e3782ba8 100644 --- a/vendor/git.autistici.org/ai3/replds/server.go +++ b/vendor/git.autistici.org/ai3/replds/server.go @@ -21,7 +21,7 @@ var ( pollPeriod = 120 * time.Second // Timeout for InternalGetNodes requests. - getNodesTimeout = 60 * time.Second + getNodesTimeout = 20 * time.Second ) // Node is an annotated path/value entry. diff --git a/vendor/github.com/cenkalti/backoff/README.md b/vendor/github.com/cenkalti/backoff/README.md index 13b347fb..55ebc98f 100644 --- a/vendor/github.com/cenkalti/backoff/README.md +++ b/vendor/github.com/cenkalti/backoff/README.md @@ -24,7 +24,7 @@ See https://godoc.org/github.com/cenkalti/backoff#pkg-examples [coveralls]: https://coveralls.io/github/cenkalti/backoff?branch=master [coveralls image]: https://coveralls.io/repos/github/cenkalti/backoff/badge.svg?branch=master -[google-http-java-client]: https://github.com/google/google-http-java-client +[google-http-java-client]: https://github.com/google/google-http-java-client/blob/da1aa993e90285ec18579f1553339b00e19b3ab5/google-http-client/src/main/java/com/google/api/client/util/ExponentialBackOff.java [exponential backoff wiki]: http://en.wikipedia.org/wiki/Exponential_backoff [advanced example]: https://godoc.org/github.com/cenkalti/backoff#example_ diff --git a/vendor/github.com/cenkalti/backoff/context.go b/vendor/github.com/cenkalti/backoff/context.go index 5d157092..d7005522 100644 --- a/vendor/github.com/cenkalti/backoff/context.go +++ b/vendor/github.com/cenkalti/backoff/context.go @@ -1,9 +1,8 @@ package backoff import ( + "context" "time" - - "golang.org/x/net/context" ) // BackOffContext is a backoff policy that stops retrying after the context diff --git a/vendor/github.com/cenkalti/backoff/retry.go b/vendor/github.com/cenkalti/backoff/retry.go index 5dbd825b..e65cc700 100644 --- a/vendor/github.com/cenkalti/backoff/retry.go +++ b/vendor/github.com/cenkalti/backoff/retry.go @@ -15,7 +15,6 @@ type Notify func(error, time.Duration) // Retry the operation o until it does not return error or BackOff stops. // o is guaranteed to be run at least once. -// It is the caller's responsibility to reset b after Retry returns. // // If o returns a *PermanentError, the operation is not retried, and the // wrapped error is returned. diff --git a/vendor/github.com/cenkalti/backoff/ticker.go b/vendor/github.com/cenkalti/backoff/ticker.go index e742512f..e41084b0 100644 --- a/vendor/github.com/cenkalti/backoff/ticker.go +++ b/vendor/github.com/cenkalti/backoff/ticker.go @@ -1,7 +1,6 @@ package backoff import ( - "runtime" "sync" "time" ) @@ -34,7 +33,6 @@ func NewTicker(b BackOff) *Ticker { } t.b.Reset() go t.run() - runtime.SetFinalizer(t, (*Ticker).Stop) return t } diff --git a/vendor/github.com/cenkalti/backoff/tries.go b/vendor/github.com/cenkalti/backoff/tries.go index d2da7308..cfeefd9b 100644 --- a/vendor/github.com/cenkalti/backoff/tries.go +++ b/vendor/github.com/cenkalti/backoff/tries.go @@ -3,13 +3,13 @@ package backoff import "time" /* -WithMaxTries creates a wrapper around another BackOff, which will +WithMaxRetries creates a wrapper around another BackOff, which will return Stop if NextBackOff() has been called too many times since the last time Reset() was called Note: Implementation is not thread-safe. */ -func WithMaxTries(b BackOff, max uint64) BackOff { +func WithMaxRetries(b BackOff, max uint64) BackOff { return &backOffTries{delegate: b, maxTries: max} } diff --git a/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/golang/protobuf/proto/Makefile new file mode 100644 index 00000000..e2e0651a --- /dev/null +++ b/vendor/github.com/golang/protobuf/proto/Makefile @@ -0,0 +1,43 @@ +# Go support for Protocol Buffers - Google's data interchange format +# +# Copyright 2010 The Go Authors. All rights reserved. +# https://github.com/golang/protobuf +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +install: + go install + +test: install generate-test-pbs + go test + + +generate-test-pbs: + make install + make -C testdata + protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. proto3_proto/proto3.proto + make diff --git a/vendor/github.com/golang/protobuf/proto/clone.go b/vendor/github.com/golang/protobuf/proto/clone.go index 3cd3249f..e392575b 100644 --- a/vendor/github.com/golang/protobuf/proto/clone.go +++ b/vendor/github.com/golang/protobuf/proto/clone.go @@ -35,39 +35,22 @@ package proto import ( - "fmt" "log" "reflect" "strings" ) // Clone returns a deep copy of a protocol buffer. -func Clone(src Message) Message { - in := reflect.ValueOf(src) +func Clone(pb Message) Message { + in := reflect.ValueOf(pb) if in.IsNil() { - return src + return pb } - out := reflect.New(in.Type().Elem()) - dst := out.Interface().(Message) - Merge(dst, src) - return dst -} -// Merger is the interface representing objects that can merge messages of the same type. -type Merger interface { - // Merge merges src into this message. - // Required and optional fields that are set in src will be set to that value in dst. - // Elements of repeated fields will be appended. - // - // Merge may panic if called with a different argument type than the receiver. - Merge(src Message) -} - -// generatedMerger is the custom merge method that generated protos will have. -// We must add this method since a generate Merge method will conflict with -// many existing protos that have a Merge data field already defined. -type generatedMerger interface { - XXX_Merge(src Message) + out := reflect.New(in.Type().Elem()) + // out is empty so a merge is a deep copy. + mergeStruct(out.Elem(), in.Elem()) + return out.Interface().(Message) } // Merge merges src into dst. @@ -75,24 +58,17 @@ type generatedMerger interface { // Elements of repeated fields will be appended. // Merge panics if src and dst are not the same type, or if dst is nil. func Merge(dst, src Message) { - if m, ok := dst.(Merger); ok { - m.Merge(src) - return - } - in := reflect.ValueOf(src) out := reflect.ValueOf(dst) if out.IsNil() { panic("proto: nil destination") } if in.Type() != out.Type() { - panic(fmt.Sprintf("proto.Merge(%T, %T) type mismatch", dst, src)) + // Explicit test prior to mergeStruct so that mistyped nils will fail + panic("proto: type mismatch") } if in.IsNil() { - return // Merge from nil src is a noop - } - if m, ok := dst.(generatedMerger); ok { - m.XXX_Merge(src) + // Merging nil into non-nil is a quiet no-op return } mergeStruct(out.Elem(), in.Elem()) @@ -108,7 +84,7 @@ func mergeStruct(out, in reflect.Value) { mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i]) } - if emIn, err := extendable(in.Addr().Interface()); err == nil { + if emIn, ok := extendable(in.Addr().Interface()); ok { emOut, _ := extendable(out.Addr().Interface()) mIn, muIn := emIn.extensionsRead() if mIn != nil { diff --git a/vendor/github.com/golang/protobuf/proto/decode.go b/vendor/github.com/golang/protobuf/proto/decode.go index d9aa3c42..aa207298 100644 --- a/vendor/github.com/golang/protobuf/proto/decode.go +++ b/vendor/github.com/golang/protobuf/proto/decode.go @@ -39,6 +39,8 @@ import ( "errors" "fmt" "io" + "os" + "reflect" ) // errOverflow is returned when an integer is too large to be represented. @@ -48,6 +50,10 @@ var errOverflow = errors.New("proto: integer overflow") // wire type is encountered. It does not get returned to user code. var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof") +// The fundamental decoders that interpret bytes on the wire. +// Those that take integer types all return uint64 and are +// therefore of type valueDecoder. + // DecodeVarint reads a varint-encoded integer from the slice. // It returns the integer and the number of bytes consumed, or // zero if there is not enough. @@ -261,6 +267,9 @@ func (p *Buffer) DecodeZigzag32() (x uint64, err error) { return } +// These are not ValueDecoders: they produce an array of bytes or a string. +// bytes, embedded messages + // DecodeRawBytes reads a count-delimited byte buffer from the Buffer. // This is the format used for the bytes protocol buffer // type and for embedded messages. @@ -302,29 +311,81 @@ func (p *Buffer) DecodeStringBytes() (s string, err error) { return string(buf), nil } +// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. +// If the protocol buffer has extensions, and the field matches, add it as an extension. +// Otherwise, if the XXX_unrecognized field exists, append the skipped data there. +func (o *Buffer) skipAndSave(t reflect.Type, tag, wire int, base structPointer, unrecField field) error { + oi := o.index + + err := o.skip(t, tag, wire) + if err != nil { + return err + } + + if !unrecField.IsValid() { + return nil + } + + ptr := structPointer_Bytes(base, unrecField) + + // Add the skipped field to struct field + obuf := o.buf + + o.buf = *ptr + o.EncodeVarint(uint64(tag<<3 | wire)) + *ptr = append(o.buf, obuf[oi:o.index]...) + + o.buf = obuf + + return nil +} + +// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. +func (o *Buffer) skip(t reflect.Type, tag, wire int) error { + + var u uint64 + var err error + + switch wire { + case WireVarint: + _, err = o.DecodeVarint() + case WireFixed64: + _, err = o.DecodeFixed64() + case WireBytes: + _, err = o.DecodeRawBytes(false) + case WireFixed32: + _, err = o.DecodeFixed32() + case WireStartGroup: + for { + u, err = o.DecodeVarint() + if err != nil { + break + } + fwire := int(u & 0x7) + if fwire == WireEndGroup { + break + } + ftag := int(u >> 3) + err = o.skip(t, ftag, fwire) + if err != nil { + break + } + } + default: + err = fmt.Errorf("proto: can't skip unknown wire type %d for %s", wire, t) + } + return err +} + // Unmarshaler is the interface representing objects that can -// unmarshal themselves. The argument points to data that may be +// unmarshal themselves. The method should reset the receiver before +// decoding starts. The argument points to data that may be // overwritten, so implementations should not keep references to the // buffer. -// Unmarshal implementations should not clear the receiver. -// Any unmarshaled data should be merged into the receiver. -// Callers of Unmarshal that do not want to retain existing data -// should Reset the receiver before calling Unmarshal. type Unmarshaler interface { Unmarshal([]byte) error } -// newUnmarshaler is the interface representing objects that can -// unmarshal themselves. The semantics are identical to Unmarshaler. -// -// This exists to support protoc-gen-go generated messages. -// The proto package will stop type-asserting to this interface in the future. -// -// DO NOT DEPEND ON THIS. -type newUnmarshaler interface { - XXX_Unmarshal([]byte) error -} - // Unmarshal parses the protocol buffer representation in buf and places the // decoded result in pb. If the struct underlying pb does not match // the data in buf, the results can be unpredictable. @@ -334,13 +395,7 @@ type newUnmarshaler interface { // to preserve and append to existing data. func Unmarshal(buf []byte, pb Message) error { pb.Reset() - if u, ok := pb.(newUnmarshaler); ok { - return u.XXX_Unmarshal(buf) - } - if u, ok := pb.(Unmarshaler); ok { - return u.Unmarshal(buf) - } - return NewBuffer(buf).Unmarshal(pb) + return UnmarshalMerge(buf, pb) } // UnmarshalMerge parses the protocol buffer representation in buf and @@ -350,16 +405,8 @@ func Unmarshal(buf []byte, pb Message) error { // UnmarshalMerge merges into existing data in pb. // Most code should use Unmarshal instead. func UnmarshalMerge(buf []byte, pb Message) error { - if u, ok := pb.(newUnmarshaler); ok { - return u.XXX_Unmarshal(buf) - } + // If the object can unmarshal itself, let it. if u, ok := pb.(Unmarshaler); ok { - // NOTE: The history of proto have unfortunately been inconsistent - // whether Unmarshaler should or should not implicitly clear itself. - // Some implementations do, most do not. - // Thus, calling this here may or may not do what people want. - // - // See https://github.com/golang/protobuf/issues/424 return u.Unmarshal(buf) } return NewBuffer(buf).Unmarshal(pb) @@ -375,17 +422,12 @@ func (p *Buffer) DecodeMessage(pb Message) error { } // DecodeGroup reads a tag-delimited group from the Buffer. -// StartGroup tag is already consumed. This function consumes -// EndGroup tag. func (p *Buffer) DecodeGroup(pb Message) error { - b := p.buf[p.index:] - x, y := findEndGroup(b) - if x < 0 { - return io.ErrUnexpectedEOF + typ, base, err := getbase(pb) + if err != nil { + return err } - err := Unmarshal(b[:x], pb) - p.index += y - return err + return p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), true, base) } // Unmarshal parses the protocol buffer representation in the @@ -396,33 +438,533 @@ func (p *Buffer) DecodeGroup(pb Message) error { // Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal. func (p *Buffer) Unmarshal(pb Message) error { // If the object can unmarshal itself, let it. - if u, ok := pb.(newUnmarshaler); ok { - err := u.XXX_Unmarshal(p.buf[p.index:]) - p.index = len(p.buf) - return err - } if u, ok := pb.(Unmarshaler); ok { - // NOTE: The history of proto have unfortunately been inconsistent - // whether Unmarshaler should or should not implicitly clear itself. - // Some implementations do, most do not. - // Thus, calling this here may or may not do what people want. - // - // See https://github.com/golang/protobuf/issues/424 err := u.Unmarshal(p.buf[p.index:]) p.index = len(p.buf) return err } - // Slow workaround for messages that aren't Unmarshalers. - // This includes some hand-coded .pb.go files and - // bootstrap protos. - // TODO: fix all of those and then add Unmarshal to - // the Message interface. Then: - // The cast above and code below can be deleted. - // The old unmarshaler can be deleted. - // Clients can call Unmarshal directly (can already do that, actually). - var info InternalMessageInfo - err := info.Unmarshal(pb, p.buf[p.index:]) - p.index = len(p.buf) + typ, base, err := getbase(pb) + if err != nil { + return err + } + + err = p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), false, base) + + if collectStats { + stats.Decode++ + } + + return err +} + +// unmarshalType does the work of unmarshaling a structure. +func (o *Buffer) unmarshalType(st reflect.Type, prop *StructProperties, is_group bool, base structPointer) error { + var state errorState + required, reqFields := prop.reqCount, uint64(0) + + var err error + for err == nil && o.index < len(o.buf) { + oi := o.index + var u uint64 + u, err = o.DecodeVarint() + if err != nil { + break + } + wire := int(u & 0x7) + if wire == WireEndGroup { + if is_group { + if required > 0 { + // Not enough information to determine the exact field. + // (See below.) + return &RequiredNotSetError{"{Unknown}"} + } + return nil // input is satisfied + } + return fmt.Errorf("proto: %s: wiretype end group for non-group", st) + } + tag := int(u >> 3) + if tag <= 0 { + return fmt.Errorf("proto: %s: illegal tag %d (wire type %d)", st, tag, wire) + } + fieldnum, ok := prop.decoderTags.get(tag) + if !ok { + // Maybe it's an extension? + if prop.extendable { + if e, _ := extendable(structPointer_Interface(base, st)); isExtensionField(e, int32(tag)) { + if err = o.skip(st, tag, wire); err == nil { + extmap := e.extensionsWrite() + ext := extmap[int32(tag)] // may be missing + ext.enc = append(ext.enc, o.buf[oi:o.index]...) + extmap[int32(tag)] = ext + } + continue + } + } + // Maybe it's a oneof? + if prop.oneofUnmarshaler != nil { + m := structPointer_Interface(base, st).(Message) + // First return value indicates whether tag is a oneof field. + ok, err = prop.oneofUnmarshaler(m, tag, wire, o) + if err == ErrInternalBadWireType { + // Map the error to something more descriptive. + // Do the formatting here to save generated code space. + err = fmt.Errorf("bad wiretype for oneof field in %T", m) + } + if ok { + continue + } + } + err = o.skipAndSave(st, tag, wire, base, prop.unrecField) + continue + } + p := prop.Prop[fieldnum] + + if p.dec == nil { + fmt.Fprintf(os.Stderr, "proto: no protobuf decoder for %s.%s\n", st, st.Field(fieldnum).Name) + continue + } + dec := p.dec + if wire != WireStartGroup && wire != p.WireType { + if wire == WireBytes && p.packedDec != nil { + // a packable field + dec = p.packedDec + } else { + err = fmt.Errorf("proto: bad wiretype for field %s.%s: got wiretype %d, want %d", st, st.Field(fieldnum).Name, wire, p.WireType) + continue + } + } + decErr := dec(o, p, base) + if decErr != nil && !state.shouldContinue(decErr, p) { + err = decErr + } + if err == nil && p.Required { + // Successfully decoded a required field. + if tag <= 64 { + // use bitmap for fields 1-64 to catch field reuse. + var mask uint64 = 1 << uint64(tag-1) + if reqFields&mask == 0 { + // new required field + reqFields |= mask + required-- + } + } else { + // This is imprecise. It can be fooled by a required field + // with a tag > 64 that is encoded twice; that's very rare. + // A fully correct implementation would require allocating + // a data structure, which we would like to avoid. + required-- + } + } + } + if err == nil { + if is_group { + return io.ErrUnexpectedEOF + } + if state.err != nil { + return state.err + } + if required > 0 { + // Not enough information to determine the exact field. If we use extra + // CPU, we could determine the field only if the missing required field + // has a tag <= 64 and we check reqFields. + return &RequiredNotSetError{"{Unknown}"} + } + } + return err +} + +// Individual type decoders +// For each, +// u is the decoded value, +// v is a pointer to the field (pointer) in the struct + +// Sizes of the pools to allocate inside the Buffer. +// The goal is modest amortization and allocation +// on at least 16-byte boundaries. +const ( + boolPoolSize = 16 + uint32PoolSize = 8 + uint64PoolSize = 4 +) + +// Decode a bool. +func (o *Buffer) dec_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + if len(o.bools) == 0 { + o.bools = make([]bool, boolPoolSize) + } + o.bools[0] = u != 0 + *structPointer_Bool(base, p.field) = &o.bools[0] + o.bools = o.bools[1:] + return nil +} + +func (o *Buffer) dec_proto3_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + *structPointer_BoolVal(base, p.field) = u != 0 + return nil +} + +// Decode an int32. +func (o *Buffer) dec_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word32_Set(structPointer_Word32(base, p.field), o, uint32(u)) + return nil +} + +func (o *Buffer) dec_proto3_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word32Val_Set(structPointer_Word32Val(base, p.field), uint32(u)) + return nil +} + +// Decode an int64. +func (o *Buffer) dec_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word64_Set(structPointer_Word64(base, p.field), o, u) + return nil +} + +func (o *Buffer) dec_proto3_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word64Val_Set(structPointer_Word64Val(base, p.field), o, u) + return nil +} + +// Decode a string. +func (o *Buffer) dec_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + *structPointer_String(base, p.field) = &s + return nil +} + +func (o *Buffer) dec_proto3_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + *structPointer_StringVal(base, p.field) = s + return nil +} + +// Decode a slice of bytes ([]byte). +func (o *Buffer) dec_slice_byte(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + *structPointer_Bytes(base, p.field) = b + return nil +} + +// Decode a slice of bools ([]bool). +func (o *Buffer) dec_slice_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + v := structPointer_BoolSlice(base, p.field) + *v = append(*v, u != 0) + return nil +} + +// Decode a slice of bools ([]bool) in packed format. +func (o *Buffer) dec_slice_packed_bool(p *Properties, base structPointer) error { + v := structPointer_BoolSlice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded bools + fin := o.index + nb + if fin < o.index { + return errOverflow + } + + y := *v + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + y = append(y, u != 0) + } + + *v = y + return nil +} + +// Decode a slice of int32s ([]int32). +func (o *Buffer) dec_slice_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + structPointer_Word32Slice(base, p.field).Append(uint32(u)) + return nil +} + +// Decode a slice of int32s ([]int32) in packed format. +func (o *Buffer) dec_slice_packed_int32(p *Properties, base structPointer) error { + v := structPointer_Word32Slice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded int32s + + fin := o.index + nb + if fin < o.index { + return errOverflow + } + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + v.Append(uint32(u)) + } + return nil +} + +// Decode a slice of int64s ([]int64). +func (o *Buffer) dec_slice_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + + structPointer_Word64Slice(base, p.field).Append(u) + return nil +} + +// Decode a slice of int64s ([]int64) in packed format. +func (o *Buffer) dec_slice_packed_int64(p *Properties, base structPointer) error { + v := structPointer_Word64Slice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded int64s + + fin := o.index + nb + if fin < o.index { + return errOverflow + } + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + v.Append(u) + } + return nil +} + +// Decode a slice of strings ([]string). +func (o *Buffer) dec_slice_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + v := structPointer_StringSlice(base, p.field) + *v = append(*v, s) + return nil +} + +// Decode a slice of slice of bytes ([][]byte). +func (o *Buffer) dec_slice_slice_byte(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + v := structPointer_BytesSlice(base, p.field) + *v = append(*v, b) + return nil +} + +// Decode a map field. +func (o *Buffer) dec_new_map(p *Properties, base structPointer) error { + raw, err := o.DecodeRawBytes(false) + if err != nil { + return err + } + oi := o.index // index at the end of this map entry + o.index -= len(raw) // move buffer back to start of map entry + + mptr := structPointer_NewAt(base, p.field, p.mtype) // *map[K]V + if mptr.Elem().IsNil() { + mptr.Elem().Set(reflect.MakeMap(mptr.Type().Elem())) + } + v := mptr.Elem() // map[K]V + + // Prepare addressable doubly-indirect placeholders for the key and value types. + // See enc_new_map for why. + keyptr := reflect.New(reflect.PtrTo(p.mtype.Key())).Elem() // addressable *K + keybase := toStructPointer(keyptr.Addr()) // **K + + var valbase structPointer + var valptr reflect.Value + switch p.mtype.Elem().Kind() { + case reflect.Slice: + // []byte + var dummy []byte + valptr = reflect.ValueOf(&dummy) // *[]byte + valbase = toStructPointer(valptr) // *[]byte + case reflect.Ptr: + // message; valptr is **Msg; need to allocate the intermediate pointer + valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V + valptr.Set(reflect.New(valptr.Type().Elem())) + valbase = toStructPointer(valptr) + default: + // everything else + valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V + valbase = toStructPointer(valptr.Addr()) // **V + } + + // Decode. + // This parses a restricted wire format, namely the encoding of a message + // with two fields. See enc_new_map for the format. + for o.index < oi { + // tagcode for key and value properties are always a single byte + // because they have tags 1 and 2. + tagcode := o.buf[o.index] + o.index++ + switch tagcode { + case p.mkeyprop.tagcode[0]: + if err := p.mkeyprop.dec(o, p.mkeyprop, keybase); err != nil { + return err + } + case p.mvalprop.tagcode[0]: + if err := p.mvalprop.dec(o, p.mvalprop, valbase); err != nil { + return err + } + default: + // TODO: Should we silently skip this instead? + return fmt.Errorf("proto: bad map data tag %d", raw[0]) + } + } + keyelem, valelem := keyptr.Elem(), valptr.Elem() + if !keyelem.IsValid() { + keyelem = reflect.Zero(p.mtype.Key()) + } + if !valelem.IsValid() { + valelem = reflect.Zero(p.mtype.Elem()) + } + + v.SetMapIndex(keyelem, valelem) + return nil +} + +// Decode a group. +func (o *Buffer) dec_struct_group(p *Properties, base structPointer) error { + bas := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(bas) { + // allocate new nested message + bas = toStructPointer(reflect.New(p.stype)) + structPointer_SetStructPointer(base, p.field, bas) + } + return o.unmarshalType(p.stype, p.sprop, true, bas) +} + +// Decode an embedded message. +func (o *Buffer) dec_struct_message(p *Properties, base structPointer) (err error) { + raw, e := o.DecodeRawBytes(false) + if e != nil { + return e + } + + bas := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(bas) { + // allocate new nested message + bas = toStructPointer(reflect.New(p.stype)) + structPointer_SetStructPointer(base, p.field, bas) + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + iv := structPointer_Interface(bas, p.stype) + return iv.(Unmarshaler).Unmarshal(raw) + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + err = o.unmarshalType(p.stype, p.sprop, false, bas) + o.buf = obuf + o.index = oi + + return err +} + +// Decode a slice of embedded messages. +func (o *Buffer) dec_slice_struct_message(p *Properties, base structPointer) error { + return o.dec_slice_struct(p, false, base) +} + +// Decode a slice of embedded groups. +func (o *Buffer) dec_slice_struct_group(p *Properties, base structPointer) error { + return o.dec_slice_struct(p, true, base) +} + +// Decode a slice of structs ([]*struct). +func (o *Buffer) dec_slice_struct(p *Properties, is_group bool, base structPointer) error { + v := reflect.New(p.stype) + bas := toStructPointer(v) + structPointer_StructPointerSlice(base, p.field).Append(bas) + + if is_group { + err := o.unmarshalType(p.stype, p.sprop, is_group, bas) + return err + } + + raw, err := o.DecodeRawBytes(false) + if err != nil { + return err + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + iv := v.Interface() + return iv.(Unmarshaler).Unmarshal(raw) + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + err = o.unmarshalType(p.stype, p.sprop, is_group, bas) + + o.buf = obuf + o.index = oi + return err } diff --git a/vendor/github.com/golang/protobuf/proto/discard.go b/vendor/github.com/golang/protobuf/proto/discard.go deleted file mode 100644 index dea2617c..00000000 --- a/vendor/github.com/golang/protobuf/proto/discard.go +++ /dev/null @@ -1,350 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2017 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "fmt" - "reflect" - "strings" - "sync" - "sync/atomic" -) - -type generatedDiscarder interface { - XXX_DiscardUnknown() -} - -// DiscardUnknown recursively discards all unknown fields from this message -// and all embedded messages. -// -// When unmarshaling a message with unrecognized fields, the tags and values -// of such fields are preserved in the Message. This allows a later call to -// marshal to be able to produce a message that continues to have those -// unrecognized fields. To avoid this, DiscardUnknown is used to -// explicitly clear the unknown fields after unmarshaling. -// -// For proto2 messages, the unknown fields of message extensions are only -// discarded from messages that have been accessed via GetExtension. -func DiscardUnknown(m Message) { - if m, ok := m.(generatedDiscarder); ok { - m.XXX_DiscardUnknown() - return - } - // TODO: Dynamically populate a InternalMessageInfo for legacy messages, - // but the master branch has no implementation for InternalMessageInfo, - // so it would be more work to replicate that approach. - discardLegacy(m) -} - -// DiscardUnknown recursively discards all unknown fields. -func (a *InternalMessageInfo) DiscardUnknown(m Message) { - di := atomicLoadDiscardInfo(&a.discard) - if di == nil { - di = getDiscardInfo(reflect.TypeOf(m).Elem()) - atomicStoreDiscardInfo(&a.discard, di) - } - di.discard(toPointer(&m)) -} - -type discardInfo struct { - typ reflect.Type - - initialized int32 // 0: only typ is valid, 1: everything is valid - lock sync.Mutex - - fields []discardFieldInfo - unrecognized field -} - -type discardFieldInfo struct { - field field // Offset of field, guaranteed to be valid - discard func(src pointer) -} - -var ( - discardInfoMap = map[reflect.Type]*discardInfo{} - discardInfoLock sync.Mutex -) - -func getDiscardInfo(t reflect.Type) *discardInfo { - discardInfoLock.Lock() - defer discardInfoLock.Unlock() - di := discardInfoMap[t] - if di == nil { - di = &discardInfo{typ: t} - discardInfoMap[t] = di - } - return di -} - -func (di *discardInfo) discard(src pointer) { - if src.isNil() { - return // Nothing to do. - } - - if atomic.LoadInt32(&di.initialized) == 0 { - di.computeDiscardInfo() - } - - for _, fi := range di.fields { - sfp := src.offset(fi.field) - fi.discard(sfp) - } - - // For proto2 messages, only discard unknown fields in message extensions - // that have been accessed via GetExtension. - if em, err := extendable(src.asPointerTo(di.typ).Interface()); err == nil { - // Ignore lock since DiscardUnknown is not concurrency safe. - emm, _ := em.extensionsRead() - for _, mx := range emm { - if m, ok := mx.value.(Message); ok { - DiscardUnknown(m) - } - } - } - - if di.unrecognized.IsValid() { - *src.offset(di.unrecognized).toBytes() = nil - } -} - -func (di *discardInfo) computeDiscardInfo() { - di.lock.Lock() - defer di.lock.Unlock() - if di.initialized != 0 { - return - } - t := di.typ - n := t.NumField() - - for i := 0; i < n; i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - - dfi := discardFieldInfo{field: toField(&f)} - tf := f.Type - - // Unwrap tf to get its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic(fmt.Sprintf("%v.%s cannot be a slice of pointers to primitive types", t, f.Name)) - } - - switch tf.Kind() { - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("%v.%s cannot be a direct struct value", t, f.Name)) - case isSlice: // E.g., []*pb.T - di := getDiscardInfo(tf) - dfi.discard = func(src pointer) { - sps := src.getPointerSlice() - for _, sp := range sps { - if !sp.isNil() { - di.discard(sp) - } - } - } - default: // E.g., *pb.T - di := getDiscardInfo(tf) - dfi.discard = func(src pointer) { - sp := src.getPointer() - if !sp.isNil() { - di.discard(sp) - } - } - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%v.%s cannot be a pointer to a map or a slice of map values", t, f.Name)) - default: // E.g., map[K]V - if tf.Elem().Kind() == reflect.Ptr { // Proto struct (e.g., *T) - dfi.discard = func(src pointer) { - sm := src.asPointerTo(tf).Elem() - if sm.Len() == 0 { - return - } - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - DiscardUnknown(val.Interface().(Message)) - } - } - } else { - dfi.discard = func(pointer) {} // Noop - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%v.%s cannot be a pointer to a interface or a slice of interface values", t, f.Name)) - default: // E.g., interface{} - // TODO: Make this faster? - dfi.discard = func(src pointer) { - su := src.asPointerTo(tf).Elem() - if !su.IsNil() { - sv := su.Elem().Elem().Field(0) - if sv.Kind() == reflect.Ptr && sv.IsNil() { - return - } - switch sv.Type().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - DiscardUnknown(sv.Interface().(Message)) - } - } - } - } - default: - continue - } - di.fields = append(di.fields, dfi) - } - - di.unrecognized = invalidField - if f, ok := t.FieldByName("XXX_unrecognized"); ok { - if f.Type != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - di.unrecognized = toField(&f) - } - - atomic.StoreInt32(&di.initialized, 1) -} - -func discardLegacy(m Message) { - v := reflect.ValueOf(m) - if v.Kind() != reflect.Ptr || v.IsNil() { - return - } - v = v.Elem() - if v.Kind() != reflect.Struct { - return - } - t := v.Type() - - for i := 0; i < v.NumField(); i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - vf := v.Field(i) - tf := f.Type - - // Unwrap tf to get its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic(fmt.Sprintf("%T.%s cannot be a slice of pointers to primitive types", m, f.Name)) - } - - switch tf.Kind() { - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("%T.%s cannot be a direct struct value", m, f.Name)) - case isSlice: // E.g., []*pb.T - for j := 0; j < vf.Len(); j++ { - discardLegacy(vf.Index(j).Interface().(Message)) - } - default: // E.g., *pb.T - discardLegacy(vf.Interface().(Message)) - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%T.%s cannot be a pointer to a map or a slice of map values", m, f.Name)) - default: // E.g., map[K]V - tv := vf.Type().Elem() - if tv.Kind() == reflect.Ptr && tv.Implements(protoMessageType) { // Proto struct (e.g., *T) - for _, key := range vf.MapKeys() { - val := vf.MapIndex(key) - discardLegacy(val.Interface().(Message)) - } - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%T.%s cannot be a pointer to a interface or a slice of interface values", m, f.Name)) - default: // E.g., test_proto.isCommunique_Union interface - if !vf.IsNil() && f.Tag.Get("protobuf_oneof") != "" { - vf = vf.Elem() // E.g., *test_proto.Communique_Msg - if !vf.IsNil() { - vf = vf.Elem() // E.g., test_proto.Communique_Msg - vf = vf.Field(0) // E.g., Proto struct (e.g., *T) or primitive value - if vf.Kind() == reflect.Ptr { - discardLegacy(vf.Interface().(Message)) - } - } - } - } - } - } - - if vf := v.FieldByName("XXX_unrecognized"); vf.IsValid() { - if vf.Type() != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - vf.Set(reflect.ValueOf([]byte(nil))) - } - - // For proto2 messages, only discard unknown fields in message extensions - // that have been accessed via GetExtension. - if em, err := extendable(m); err == nil { - // Ignore lock since discardLegacy is not concurrency safe. - emm, _ := em.extensionsRead() - for _, mx := range emm { - if m, ok := mx.value.(Message); ok { - discardLegacy(m) - } - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index c27d35f8..8b84d1b2 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -39,6 +39,7 @@ import ( "errors" "fmt" "reflect" + "sort" ) // RequiredNotSetError is the error returned if Marshal is called with @@ -81,6 +82,10 @@ var ( const maxVarintBytes = 10 // maximum length of a varint +// maxMarshalSize is the largest allowed size of an encoded protobuf, +// since C++ and Java use signed int32s for the size. +const maxMarshalSize = 1<<31 - 1 + // EncodeVarint returns the varint encoding of x. // This is the format for the // int32, int64, uint32, uint64, bool, and enum @@ -114,27 +119,18 @@ func (p *Buffer) EncodeVarint(x uint64) error { // SizeVarint returns the varint encoding size of an integer. func SizeVarint(x uint64) int { - switch { - case x < 1<<7: - return 1 - case x < 1<<14: - return 2 - case x < 1<<21: - return 3 - case x < 1<<28: - return 4 - case x < 1<<35: - return 5 - case x < 1<<42: - return 6 - case x < 1<<49: - return 7 - case x < 1<<56: - return 8 - case x < 1<<63: - return 9 - } - return 10 + return sizeVarint(x) +} + +func sizeVarint(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n } // EncodeFixed64 writes a 64-bit integer to the Buffer. @@ -153,6 +149,10 @@ func (p *Buffer) EncodeFixed64(x uint64) error { return nil } +func sizeFixed64(x uint64) int { + return 8 +} + // EncodeFixed32 writes a 32-bit integer to the Buffer. // This is the format for the // fixed32, sfixed32, and float protocol buffer types. @@ -165,12 +165,20 @@ func (p *Buffer) EncodeFixed32(x uint64) error { return nil } +func sizeFixed32(x uint64) int { + return 4 +} + // EncodeZigzag64 writes a zigzag-encoded 64-bit integer // to the Buffer. // This is the format used for the sint64 protocol buffer type. func (p *Buffer) EncodeZigzag64(x uint64) error { // use signed number to get arithmetic right shift. - return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return p.EncodeVarint((x << 1) ^ uint64((int64(x) >> 63))) +} + +func sizeZigzag64(x uint64) int { + return sizeVarint((x << 1) ^ uint64((int64(x) >> 63))) } // EncodeZigzag32 writes a zigzag-encoded 32-bit integer @@ -181,6 +189,10 @@ func (p *Buffer) EncodeZigzag32(x uint64) error { return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) } +func sizeZigzag32(x uint64) int { + return sizeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) +} + // EncodeRawBytes writes a count-delimited byte buffer to the Buffer. // This is the format used for the bytes protocol buffer // type and for embedded messages. @@ -190,6 +202,11 @@ func (p *Buffer) EncodeRawBytes(b []byte) error { return nil } +func sizeRawBytes(b []byte) int { + return sizeVarint(uint64(len(b))) + + len(b) +} + // EncodeStringBytes writes an encoded string to the Buffer. // This is the format used for the proto2 string type. func (p *Buffer) EncodeStringBytes(s string) error { @@ -198,17 +215,319 @@ func (p *Buffer) EncodeStringBytes(s string) error { return nil } +func sizeStringBytes(s string) int { + return sizeVarint(uint64(len(s))) + + len(s) +} + // Marshaler is the interface representing objects that can marshal themselves. type Marshaler interface { Marshal() ([]byte, error) } +// Marshal takes the protocol buffer +// and encodes it into the wire format, returning the data. +func Marshal(pb Message) ([]byte, error) { + // Can the object marshal itself? + if m, ok := pb.(Marshaler); ok { + return m.Marshal() + } + p := NewBuffer(nil) + err := p.Marshal(pb) + if p.buf == nil && err == nil { + // Return a non-nil slice on success. + return []byte{}, nil + } + return p.buf, err +} + // EncodeMessage writes the protocol buffer to the Buffer, // prefixed by a varint-encoded length. func (p *Buffer) EncodeMessage(pb Message) error { - siz := Size(pb) - p.EncodeVarint(uint64(siz)) - return p.Marshal(pb) + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return ErrNil + } + if err == nil { + var state errorState + err = p.enc_len_struct(GetProperties(t.Elem()), base, &state) + } + return err +} + +// Marshal takes the protocol buffer +// and encodes it into the wire format, writing the result to the +// Buffer. +func (p *Buffer) Marshal(pb Message) error { + // Can the object marshal itself? + if m, ok := pb.(Marshaler); ok { + data, err := m.Marshal() + p.buf = append(p.buf, data...) + return err + } + + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return ErrNil + } + if err == nil { + err = p.enc_struct(GetProperties(t.Elem()), base) + } + + if collectStats { + (stats).Encode++ // Parens are to work around a goimports bug. + } + + if len(p.buf) > maxMarshalSize { + return ErrTooLarge + } + return err +} + +// Size returns the encoded size of a protocol buffer. +func Size(pb Message) (n int) { + // Can the object marshal itself? If so, Size is slow. + // TODO: add Size to Marshaler, or add a Sizer interface. + if m, ok := pb.(Marshaler); ok { + b, _ := m.Marshal() + return len(b) + } + + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return 0 + } + if err == nil { + n = size_struct(GetProperties(t.Elem()), base) + } + + if collectStats { + (stats).Size++ // Parens are to work around a goimports bug. + } + + return +} + +// Individual type encoders. + +// Encode a bool. +func (o *Buffer) enc_bool(p *Properties, base structPointer) error { + v := *structPointer_Bool(base, p.field) + if v == nil { + return ErrNil + } + x := 0 + if *v { + x = 1 + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_bool(p *Properties, base structPointer) error { + v := *structPointer_BoolVal(base, p.field) + if !v { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, 1) + return nil +} + +func size_bool(p *Properties, base structPointer) int { + v := *structPointer_Bool(base, p.field) + if v == nil { + return 0 + } + return len(p.tagcode) + 1 // each bool takes exactly one byte +} + +func size_proto3_bool(p *Properties, base structPointer) int { + v := *structPointer_BoolVal(base, p.field) + if !v && !p.oneof { + return 0 + } + return len(p.tagcode) + 1 // each bool takes exactly one byte +} + +// Encode an int32. +func (o *Buffer) enc_int32(p *Properties, base structPointer) error { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return ErrNil + } + x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_int32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_int32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return 0 + } + x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +func size_proto3_int32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +// Encode a uint32. +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_uint32(p *Properties, base structPointer) error { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return ErrNil + } + x := word32_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_uint32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_uint32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return 0 + } + x := word32_Get(v) + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +func size_proto3_uint32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +// Encode an int64. +func (o *Buffer) enc_int64(p *Properties, base structPointer) error { + v := structPointer_Word64(base, p.field) + if word64_IsNil(v) { + return ErrNil + } + x := word64_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, x) + return nil +} + +func (o *Buffer) enc_proto3_int64(p *Properties, base structPointer) error { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, x) + return nil +} + +func size_int64(p *Properties, base structPointer) (n int) { + v := structPointer_Word64(base, p.field) + if word64_IsNil(v) { + return 0 + } + x := word64_Get(v) + n += len(p.tagcode) + n += p.valSize(x) + return +} + +func size_proto3_int64(p *Properties, base structPointer) (n int) { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(x) + return +} + +// Encode a string. +func (o *Buffer) enc_string(p *Properties, base structPointer) error { + v := *structPointer_String(base, p.field) + if v == nil { + return ErrNil + } + x := *v + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(x) + return nil +} + +func (o *Buffer) enc_proto3_string(p *Properties, base structPointer) error { + v := *structPointer_StringVal(base, p.field) + if v == "" { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(v) + return nil +} + +func size_string(p *Properties, base structPointer) (n int) { + v := *structPointer_String(base, p.field) + if v == nil { + return 0 + } + x := *v + n += len(p.tagcode) + n += sizeStringBytes(x) + return +} + +func size_proto3_string(p *Properties, base structPointer) (n int) { + v := *structPointer_StringVal(base, p.field) + if v == "" && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeStringBytes(v) + return } // All protocol buffer fields are nillable, but be careful. @@ -219,3 +538,825 @@ func isNil(v reflect.Value) bool { } return false } + +// Encode a message struct. +func (o *Buffer) enc_struct_message(p *Properties, base structPointer) error { + var state errorState + structp := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return ErrNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + return state.err + } + + o.buf = append(o.buf, p.tagcode...) + return o.enc_len_struct(p.sprop, structp, &state) +} + +func size_struct_message(p *Properties, base structPointer) int { + structp := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return 0 + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n0 := len(p.tagcode) + n1 := sizeRawBytes(data) + return n0 + n1 + } + + n0 := len(p.tagcode) + n1 := size_struct(p.sprop, structp) + n2 := sizeVarint(uint64(n1)) // size of encoded length + return n0 + n1 + n2 +} + +// Encode a group struct. +func (o *Buffer) enc_struct_group(p *Properties, base structPointer) error { + var state errorState + b := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(b) { + return ErrNil + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) + err := o.enc_struct(p.sprop, b) + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) + return state.err +} + +func size_struct_group(p *Properties, base structPointer) (n int) { + b := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(b) { + return 0 + } + + n += sizeVarint(uint64((p.Tag << 3) | WireStartGroup)) + n += size_struct(p.sprop, b) + n += sizeVarint(uint64((p.Tag << 3) | WireEndGroup)) + return +} + +// Encode a slice of bools ([]bool). +func (o *Buffer) enc_slice_bool(p *Properties, base structPointer) error { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return ErrNil + } + for _, x := range s { + o.buf = append(o.buf, p.tagcode...) + v := uint64(0) + if x { + v = 1 + } + p.valEnc(o, v) + } + return nil +} + +func size_slice_bool(p *Properties, base structPointer) int { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return 0 + } + return l * (len(p.tagcode) + 1) // each bool takes exactly one byte +} + +// Encode a slice of bools ([]bool) in packed format. +func (o *Buffer) enc_slice_packed_bool(p *Properties, base structPointer) error { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(l)) // each bool takes exactly one byte + for _, x := range s { + v := uint64(0) + if x { + v = 1 + } + p.valEnc(o, v) + } + return nil +} + +func size_slice_packed_bool(p *Properties, base structPointer) (n int) { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return 0 + } + n += len(p.tagcode) + n += sizeVarint(uint64(l)) + n += l // each bool takes exactly one byte + return +} + +// Encode a slice of bytes ([]byte). +func (o *Buffer) enc_slice_byte(p *Properties, base structPointer) error { + s := *structPointer_Bytes(base, p.field) + if s == nil { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(s) + return nil +} + +func (o *Buffer) enc_proto3_slice_byte(p *Properties, base structPointer) error { + s := *structPointer_Bytes(base, p.field) + if len(s) == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(s) + return nil +} + +func size_slice_byte(p *Properties, base structPointer) (n int) { + s := *structPointer_Bytes(base, p.field) + if s == nil && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeRawBytes(s) + return +} + +func size_proto3_slice_byte(p *Properties, base structPointer) (n int) { + s := *structPointer_Bytes(base, p.field) + if len(s) == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeRawBytes(s) + return +} + +// Encode a slice of int32s ([]int32). +func (o *Buffer) enc_slice_int32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + p.valEnc(o, uint64(x)) + } + return nil +} + +func size_slice_int32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + n += p.valSize(uint64(x)) + } + return +} + +// Encode a slice of int32s ([]int32) in packed format. +func (o *Buffer) enc_slice_packed_int32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + p.valEnc(buf, uint64(x)) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_int32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + bufSize += p.valSize(uint64(x)) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of uint32s ([]uint32). +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_slice_uint32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + x := s.Index(i) + p.valEnc(o, uint64(x)) + } + return nil +} + +func size_slice_uint32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + x := s.Index(i) + n += p.valSize(uint64(x)) + } + return +} + +// Encode a slice of uint32s ([]uint32) in packed format. +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_slice_packed_uint32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + p.valEnc(buf, uint64(s.Index(i))) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_uint32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + bufSize += p.valSize(uint64(s.Index(i))) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of int64s ([]int64). +func (o *Buffer) enc_slice_int64(p *Properties, base structPointer) error { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, s.Index(i)) + } + return nil +} + +func size_slice_int64(p *Properties, base structPointer) (n int) { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + n += p.valSize(s.Index(i)) + } + return +} + +// Encode a slice of int64s ([]int64) in packed format. +func (o *Buffer) enc_slice_packed_int64(p *Properties, base structPointer) error { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + p.valEnc(buf, s.Index(i)) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_int64(p *Properties, base structPointer) (n int) { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + bufSize += p.valSize(s.Index(i)) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of slice of bytes ([][]byte). +func (o *Buffer) enc_slice_slice_byte(p *Properties, base structPointer) error { + ss := *structPointer_BytesSlice(base, p.field) + l := len(ss) + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(ss[i]) + } + return nil +} + +func size_slice_slice_byte(p *Properties, base structPointer) (n int) { + ss := *structPointer_BytesSlice(base, p.field) + l := len(ss) + if l == 0 { + return 0 + } + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + n += sizeRawBytes(ss[i]) + } + return +} + +// Encode a slice of strings ([]string). +func (o *Buffer) enc_slice_string(p *Properties, base structPointer) error { + ss := *structPointer_StringSlice(base, p.field) + l := len(ss) + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(ss[i]) + } + return nil +} + +func size_slice_string(p *Properties, base structPointer) (n int) { + ss := *structPointer_StringSlice(base, p.field) + l := len(ss) + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + n += sizeStringBytes(ss[i]) + } + return +} + +// Encode a slice of message structs ([]*struct). +func (o *Buffer) enc_slice_struct_message(p *Properties, base structPointer) error { + var state errorState + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + for i := 0; i < l; i++ { + structp := s.Index(i) + if structPointer_IsNil(structp) { + return errRepeatedHasNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + continue + } + + o.buf = append(o.buf, p.tagcode...) + err := o.enc_len_struct(p.sprop, structp, &state) + if err != nil && !state.shouldContinue(err, nil) { + if err == ErrNil { + return errRepeatedHasNil + } + return err + } + } + return state.err +} + +func size_slice_struct_message(p *Properties, base structPointer) (n int) { + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + structp := s.Index(i) + if structPointer_IsNil(structp) { + return // return the size up to this point + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n += sizeRawBytes(data) + continue + } + + n0 := size_struct(p.sprop, structp) + n1 := sizeVarint(uint64(n0)) // size of encoded length + n += n0 + n1 + } + return +} + +// Encode a slice of group structs ([]*struct). +func (o *Buffer) enc_slice_struct_group(p *Properties, base structPointer) error { + var state errorState + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + for i := 0; i < l; i++ { + b := s.Index(i) + if structPointer_IsNil(b) { + return errRepeatedHasNil + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) + + err := o.enc_struct(p.sprop, b) + + if err != nil && !state.shouldContinue(err, nil) { + if err == ErrNil { + return errRepeatedHasNil + } + return err + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) + } + return state.err +} + +func size_slice_struct_group(p *Properties, base structPointer) (n int) { + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + n += l * sizeVarint(uint64((p.Tag<<3)|WireStartGroup)) + n += l * sizeVarint(uint64((p.Tag<<3)|WireEndGroup)) + for i := 0; i < l; i++ { + b := s.Index(i) + if structPointer_IsNil(b) { + return // return size up to this point + } + + n += size_struct(p.sprop, b) + } + return +} + +// Encode an extension map. +func (o *Buffer) enc_map(p *Properties, base structPointer) error { + exts := structPointer_ExtMap(base, p.field) + if err := encodeExtensionsMap(*exts); err != nil { + return err + } + + return o.enc_map_body(*exts) +} + +func (o *Buffer) enc_exts(p *Properties, base structPointer) error { + exts := structPointer_Extensions(base, p.field) + + v, mu := exts.extensionsRead() + if v == nil { + return nil + } + + mu.Lock() + defer mu.Unlock() + if err := encodeExtensionsMap(v); err != nil { + return err + } + + return o.enc_map_body(v) +} + +func (o *Buffer) enc_map_body(v map[int32]Extension) error { + // Fast-path for common cases: zero or one extensions. + if len(v) <= 1 { + for _, e := range v { + o.buf = append(o.buf, e.enc...) + } + return nil + } + + // Sort keys to provide a deterministic encoding. + keys := make([]int, 0, len(v)) + for k := range v { + keys = append(keys, int(k)) + } + sort.Ints(keys) + + for _, k := range keys { + o.buf = append(o.buf, v[int32(k)].enc...) + } + return nil +} + +func size_map(p *Properties, base structPointer) int { + v := structPointer_ExtMap(base, p.field) + return extensionsMapSize(*v) +} + +func size_exts(p *Properties, base structPointer) int { + v := structPointer_Extensions(base, p.field) + return extensionsSize(v) +} + +// Encode a map field. +func (o *Buffer) enc_new_map(p *Properties, base structPointer) error { + var state errorState // XXX: or do we need to plumb this through? + + /* + A map defined as + map<key_type, value_type> map_field = N; + is encoded in the same way as + message MapFieldEntry { + key_type key = 1; + value_type value = 2; + } + repeated MapFieldEntry map_field = N; + */ + + v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V + if v.Len() == 0 { + return nil + } + + keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) + + enc := func() error { + if err := p.mkeyprop.enc(o, p.mkeyprop, keybase); err != nil { + return err + } + if err := p.mvalprop.enc(o, p.mvalprop, valbase); err != nil && err != ErrNil { + return err + } + return nil + } + + // Don't sort map keys. It is not required by the spec, and C++ doesn't do it. + for _, key := range v.MapKeys() { + val := v.MapIndex(key) + + keycopy.Set(key) + valcopy.Set(val) + + o.buf = append(o.buf, p.tagcode...) + if err := o.enc_len_thing(enc, &state); err != nil { + return err + } + } + return nil +} + +func size_new_map(p *Properties, base structPointer) int { + v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V + + keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) + + n := 0 + for _, key := range v.MapKeys() { + val := v.MapIndex(key) + keycopy.Set(key) + valcopy.Set(val) + + // Tag codes for key and val are the responsibility of the sub-sizer. + keysize := p.mkeyprop.size(p.mkeyprop, keybase) + valsize := p.mvalprop.size(p.mvalprop, valbase) + entry := keysize + valsize + // Add on tag code and length of map entry itself. + n += len(p.tagcode) + sizeVarint(uint64(entry)) + entry + } + return n +} + +// mapEncodeScratch returns a new reflect.Value matching the map's value type, +// and a structPointer suitable for passing to an encoder or sizer. +func mapEncodeScratch(mapType reflect.Type) (keycopy, valcopy reflect.Value, keybase, valbase structPointer) { + // Prepare addressable doubly-indirect placeholders for the key and value types. + // This is needed because the element-type encoders expect **T, but the map iteration produces T. + + keycopy = reflect.New(mapType.Key()).Elem() // addressable K + keyptr := reflect.New(reflect.PtrTo(keycopy.Type())).Elem() // addressable *K + keyptr.Set(keycopy.Addr()) // + keybase = toStructPointer(keyptr.Addr()) // **K + + // Value types are more varied and require special handling. + switch mapType.Elem().Kind() { + case reflect.Slice: + // []byte + var dummy []byte + valcopy = reflect.ValueOf(&dummy).Elem() // addressable []byte + valbase = toStructPointer(valcopy.Addr()) + case reflect.Ptr: + // message; the generated field type is map[K]*Msg (so V is *Msg), + // so we only need one level of indirection. + valcopy = reflect.New(mapType.Elem()).Elem() // addressable V + valbase = toStructPointer(valcopy.Addr()) + default: + // everything else + valcopy = reflect.New(mapType.Elem()).Elem() // addressable V + valptr := reflect.New(reflect.PtrTo(valcopy.Type())).Elem() // addressable *V + valptr.Set(valcopy.Addr()) // + valbase = toStructPointer(valptr.Addr()) // **V + } + return +} + +// Encode a struct. +func (o *Buffer) enc_struct(prop *StructProperties, base structPointer) error { + var state errorState + // Encode fields in tag order so that decoders may use optimizations + // that depend on the ordering. + // https://developers.google.com/protocol-buffers/docs/encoding#order + for _, i := range prop.order { + p := prop.Prop[i] + if p.enc != nil { + err := p.enc(o, p, base) + if err != nil { + if err == ErrNil { + if p.Required && state.err == nil { + state.err = &RequiredNotSetError{p.Name} + } + } else if err == errRepeatedHasNil { + // Give more context to nil values in repeated fields. + return errors.New("repeated field " + p.OrigName + " has nil element") + } else if !state.shouldContinue(err, p) { + return err + } + } + if len(o.buf) > maxMarshalSize { + return ErrTooLarge + } + } + } + + // Do oneof fields. + if prop.oneofMarshaler != nil { + m := structPointer_Interface(base, prop.stype).(Message) + if err := prop.oneofMarshaler(m, o); err == ErrNil { + return errOneofHasNil + } else if err != nil { + return err + } + } + + // Add unrecognized fields at the end. + if prop.unrecField.IsValid() { + v := *structPointer_Bytes(base, prop.unrecField) + if len(o.buf)+len(v) > maxMarshalSize { + return ErrTooLarge + } + if len(v) > 0 { + o.buf = append(o.buf, v...) + } + } + + return state.err +} + +func size_struct(prop *StructProperties, base structPointer) (n int) { + for _, i := range prop.order { + p := prop.Prop[i] + if p.size != nil { + n += p.size(p, base) + } + } + + // Add unrecognized fields at the end. + if prop.unrecField.IsValid() { + v := *structPointer_Bytes(base, prop.unrecField) + n += len(v) + } + + // Factor in any oneof fields. + if prop.oneofSizer != nil { + m := structPointer_Interface(base, prop.stype).(Message) + n += prop.oneofSizer(m) + } + + return +} + +var zeroes [20]byte // longer than any conceivable sizeVarint + +// Encode a struct, preceded by its encoded length (as a varint). +func (o *Buffer) enc_len_struct(prop *StructProperties, base structPointer, state *errorState) error { + return o.enc_len_thing(func() error { return o.enc_struct(prop, base) }, state) +} + +// Encode something, preceded by its encoded length (as a varint). +func (o *Buffer) enc_len_thing(enc func() error, state *errorState) error { + iLen := len(o.buf) + o.buf = append(o.buf, 0, 0, 0, 0) // reserve four bytes for length + iMsg := len(o.buf) + err := enc() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + lMsg := len(o.buf) - iMsg + lLen := sizeVarint(uint64(lMsg)) + switch x := lLen - (iMsg - iLen); { + case x > 0: // actual length is x bytes larger than the space we reserved + // Move msg x bytes right. + o.buf = append(o.buf, zeroes[:x]...) + copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) + case x < 0: // actual length is x bytes smaller than the space we reserved + // Move msg x bytes left. + copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) + o.buf = o.buf[:len(o.buf)+x] // x is negative + } + // Encode the length in the reserved space. + o.buf = o.buf[:iLen] + o.EncodeVarint(uint64(lMsg)) + o.buf = o.buf[:len(o.buf)+lMsg] + return state.err +} + +// errorState maintains the first error that occurs and updates that error +// with additional context. +type errorState struct { + err error +} + +// shouldContinue reports whether encoding should continue upon encountering the +// given error. If the error is RequiredNotSetError, shouldContinue returns true +// and, if this is the first appearance of that error, remembers it for future +// reporting. +// +// If prop is not nil, it may update any error with additional context about the +// field with the error. +func (s *errorState) shouldContinue(err error, prop *Properties) bool { + // Ignore unset required fields. + reqNotSet, ok := err.(*RequiredNotSetError) + if !ok { + return false + } + if s.err == nil { + if prop != nil { + err = &RequiredNotSetError{prop.Name + "." + reqNotSet.field} + } + s.err = err + } + return true +} diff --git a/vendor/github.com/golang/protobuf/proto/equal.go b/vendor/github.com/golang/protobuf/proto/equal.go index d4db5a1c..2ed1cf59 100644 --- a/vendor/github.com/golang/protobuf/proto/equal.go +++ b/vendor/github.com/golang/protobuf/proto/equal.go @@ -109,6 +109,15 @@ func equalStruct(v1, v2 reflect.Value) bool { // set/unset mismatch return false } + b1, ok := f1.Interface().(raw) + if ok { + b2 := f2.Interface().(raw) + // RawMessage + if !bytes.Equal(b1.Bytes(), b2.Bytes()) { + return false + } + continue + } f1, f2 = f1.Elem(), f2.Elem() } if !equalAny(f1, f2, sprop.Prop[i]) { @@ -137,7 +146,11 @@ func equalStruct(v1, v2 reflect.Value) bool { u1 := uf.Bytes() u2 := v2.FieldByName("XXX_unrecognized").Bytes() - return bytes.Equal(u1, u2) + if !bytes.Equal(u1, u2) { + return false + } + + return true } // v1 and v2 are known to have the same type. @@ -248,15 +261,6 @@ func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool { m1, m2 := e1.value, e2.value - if m1 == nil && m2 == nil { - // Both have only encoded form. - if bytes.Equal(e1.enc, e2.enc) { - continue - } - // The bytes are different, but the extensions might still be - // equal. We need to decode them to compare. - } - if m1 != nil && m2 != nil { // Both are unencoded. if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { @@ -272,12 +276,8 @@ func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool { desc = m[extNum] } if desc == nil { - // If both have only encoded form and the bytes are the same, - // it is handled above. We get here when the bytes are different. - // We don't know how to decode it, so just compare them as byte - // slices. log.Printf("proto: don't know how to compare extension %d of %v", extNum, base) - return false + continue } var err error if m1 == nil { diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go index 816a3b9d..eaad2183 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ b/vendor/github.com/golang/protobuf/proto/extensions.go @@ -38,7 +38,6 @@ package proto import ( "errors" "fmt" - "io" "reflect" "strconv" "sync" @@ -92,29 +91,14 @@ func (n notLocker) Unlock() {} // extendable returns the extendableProto interface for the given generated proto message. // If the proto message has the old extension format, it returns a wrapper that implements // the extendableProto interface. -func extendable(p interface{}) (extendableProto, error) { - switch p := p.(type) { - case extendableProto: - if isNilPtr(p) { - return nil, fmt.Errorf("proto: nil %T is not extendable", p) - } - return p, nil - case extendableProtoV1: - if isNilPtr(p) { - return nil, fmt.Errorf("proto: nil %T is not extendable", p) - } - return extensionAdapter{p}, nil +func extendable(p interface{}) (extendableProto, bool) { + if ep, ok := p.(extendableProto); ok { + return ep, ok } - // Don't allocate a specific error containing %T: - // this is the hot path for Clone and MarshalText. - return nil, errNotExtendable -} - -var errNotExtendable = errors.New("proto: not an extendable proto.Message") - -func isNilPtr(x interface{}) bool { - v := reflect.ValueOf(x) - return v.Kind() == reflect.Ptr && v.IsNil() + if ep, ok := p.(extendableProtoV1); ok { + return extensionAdapter{ep}, ok + } + return nil, false } // XXX_InternalExtensions is an internal representation of proto extensions. @@ -159,6 +143,9 @@ func (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension, sync.Loc return e.p.extensionMap, &e.p.mu } +var extendableProtoType = reflect.TypeOf((*extendableProto)(nil)).Elem() +var extendableProtoV1Type = reflect.TypeOf((*extendableProtoV1)(nil)).Elem() + // ExtensionDesc represents an extension specification. // Used in generated code from the protocol compiler. type ExtensionDesc struct { @@ -192,8 +179,8 @@ type Extension struct { // SetRawExtension is for testing only. func SetRawExtension(base Message, id int32, b []byte) { - epb, err := extendable(base) - if err != nil { + epb, ok := extendable(base) + if !ok { return } extmap := epb.extensionsWrite() @@ -218,7 +205,7 @@ func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error { pbi = ea.extendableProtoV1 } if a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b { - return fmt.Errorf("proto: bad extended type; %v does not extend %v", b, a) + return errors.New("proto: bad extended type; " + b.String() + " does not extend " + a.String()) } // Check the range. if !isExtensionField(pb, extension.Field) { @@ -263,11 +250,85 @@ func extensionProperties(ed *ExtensionDesc) *Properties { return prop } +// encode encodes any unmarshaled (unencoded) extensions in e. +func encodeExtensions(e *XXX_InternalExtensions) error { + m, mu := e.extensionsRead() + if m == nil { + return nil // fast path + } + mu.Lock() + defer mu.Unlock() + return encodeExtensionsMap(m) +} + +// encode encodes any unmarshaled (unencoded) extensions in e. +func encodeExtensionsMap(m map[int32]Extension) error { + for k, e := range m { + if e.value == nil || e.desc == nil { + // Extension is only in its encoded form. + continue + } + + // We don't skip extensions that have an encoded form set, + // because the extension value may have been mutated after + // the last time this function was called. + + et := reflect.TypeOf(e.desc.ExtensionType) + props := extensionProperties(e.desc) + + p := NewBuffer(nil) + // If e.value has type T, the encoder expects a *struct{ X T }. + // Pass a *T with a zero field and hope it all works out. + x := reflect.New(et) + x.Elem().Set(reflect.ValueOf(e.value)) + if err := props.enc(p, props, toStructPointer(x)); err != nil { + return err + } + e.enc = p.buf + m[k] = e + } + return nil +} + +func extensionsSize(e *XXX_InternalExtensions) (n int) { + m, mu := e.extensionsRead() + if m == nil { + return 0 + } + mu.Lock() + defer mu.Unlock() + return extensionsMapSize(m) +} + +func extensionsMapSize(m map[int32]Extension) (n int) { + for _, e := range m { + if e.value == nil || e.desc == nil { + // Extension is only in its encoded form. + n += len(e.enc) + continue + } + + // We don't skip extensions that have an encoded form set, + // because the extension value may have been mutated after + // the last time this function was called. + + et := reflect.TypeOf(e.desc.ExtensionType) + props := extensionProperties(e.desc) + + // If e.value has type T, the encoder expects a *struct{ X T }. + // Pass a *T with a zero field and hope it all works out. + x := reflect.New(et) + x.Elem().Set(reflect.ValueOf(e.value)) + n += props.size(props, toStructPointer(x)) + } + return +} + // HasExtension returns whether the given extension is present in pb. func HasExtension(pb Message, extension *ExtensionDesc) bool { // TODO: Check types, field numbers, etc.? - epb, err := extendable(pb) - if err != nil { + epb, ok := extendable(pb) + if !ok { return false } extmap, mu := epb.extensionsRead() @@ -275,15 +336,15 @@ func HasExtension(pb Message, extension *ExtensionDesc) bool { return false } mu.Lock() - _, ok := extmap[extension.Field] + _, ok = extmap[extension.Field] mu.Unlock() return ok } // ClearExtension removes the given extension from pb. func ClearExtension(pb Message, extension *ExtensionDesc) { - epb, err := extendable(pb) - if err != nil { + epb, ok := extendable(pb) + if !ok { return } // TODO: Check types, field numbers, etc.? @@ -291,26 +352,16 @@ func ClearExtension(pb Message, extension *ExtensionDesc) { delete(extmap, extension.Field) } -// GetExtension retrieves a proto2 extended field from pb. -// -// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil), -// then GetExtension parses the encoded field and returns a Go value of the specified type. -// If the field is not present, then the default value is returned (if one is specified), -// otherwise ErrMissingExtension is reported. -// -// If the descriptor is not type complete (i.e., ExtensionDesc.ExtensionType is nil), -// then GetExtension returns the raw encoded bytes of the field extension. +// GetExtension parses and returns the given extension of pb. +// If the extension is not present and has no default value it returns ErrMissingExtension. func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { - epb, err := extendable(pb) - if err != nil { - return nil, err + epb, ok := extendable(pb) + if !ok { + return nil, errors.New("proto: not an extendable proto") } - if extension.ExtendedType != nil { - // can only check type if this is a complete descriptor - if err := checkExtensionTypes(epb, extension); err != nil { - return nil, err - } + if err := checkExtensionTypes(epb, extension); err != nil { + return nil, err } emap, mu := epb.extensionsRead() @@ -337,11 +388,6 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { return e.value, nil } - if extension.ExtensionType == nil { - // incomplete descriptor - return e.enc, nil - } - v, err := decodeExtension(e.enc, extension) if err != nil { return nil, err @@ -359,11 +405,6 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { // defaultExtensionValue returns the default value for extension. // If no default for an extension is defined ErrMissingExtension is returned. func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) { - if extension.ExtensionType == nil { - // incomplete descriptor, so no default - return nil, ErrMissingExtension - } - t := reflect.TypeOf(extension.ExtensionType) props := extensionProperties(extension) @@ -398,28 +439,31 @@ func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) { // decodeExtension decodes an extension encoded in b. func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) { + o := NewBuffer(b) + t := reflect.TypeOf(extension.ExtensionType) - unmarshal := typeUnmarshaler(t, extension.Tag) + + props := extensionProperties(extension) // t is a pointer to a struct, pointer to basic type or a slice. - // Allocate space to store the pointer/slice. + // Allocate a "field" to store the pointer/slice itself; the + // pointer/slice will be stored here. We pass + // the address of this field to props.dec. + // This passes a zero field and a *t and lets props.dec + // interpret it as a *struct{ x t }. value := reflect.New(t).Elem() - var err error for { - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF + // Discard wire type and field number varint. It isn't needed. + if _, err := o.DecodeVarint(); err != nil { + return nil, err } - b = b[n:] - wire := int(x) & 7 - b, err = unmarshal(b, valToPointer(value.Addr()), wire) - if err != nil { + if err := props.dec(o, props, toStructPointer(value.Addr())); err != nil { return nil, err } - if len(b) == 0 { + if o.index >= len(o.buf) { break } } @@ -429,9 +473,9 @@ func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) { // GetExtensions returns a slice of the extensions present in pb that are also listed in es. // The returned slice has the same length as es; missing extensions will appear as nil elements. func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) { - epb, err := extendable(pb) - if err != nil { - return nil, err + epb, ok := extendable(pb) + if !ok { + return nil, errors.New("proto: not an extendable proto") } extensions = make([]interface{}, len(es)) for i, e := range es { @@ -450,9 +494,9 @@ func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, e // For non-registered extensions, ExtensionDescs returns an incomplete descriptor containing // just the Field field, which defines the extension's field number. func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) { - epb, err := extendable(pb) - if err != nil { - return nil, err + epb, ok := extendable(pb) + if !ok { + return nil, fmt.Errorf("proto: %T is not an extendable proto.Message", pb) } registeredExtensions := RegisteredExtensions(pb) @@ -479,9 +523,9 @@ func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) { // SetExtension sets the specified extension of pb to the specified value. func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error { - epb, err := extendable(pb) - if err != nil { - return err + epb, ok := extendable(pb) + if !ok { + return errors.New("proto: not an extendable proto") } if err := checkExtensionTypes(epb, extension); err != nil { return err @@ -506,8 +550,8 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error // ClearAllExtensions clears all extensions from pb. func ClearAllExtensions(pb Message) { - epb, err := extendable(pb) - if err != nil { + epb, ok := extendable(pb) + if !ok { return } m := epb.extensionsWrite() diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 0e2191b8..1c225504 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -265,7 +265,6 @@ package proto import ( "encoding/json" - "errors" "fmt" "log" "reflect" @@ -274,8 +273,6 @@ import ( "sync" ) -var errInvalidUTF8 = errors.New("proto: invalid UTF-8 string") - // Message is implemented by generated protocol buffer messages. type Message interface { Reset() @@ -312,7 +309,16 @@ type Buffer struct { buf []byte // encode/decode byte stream index int // read point - deterministic bool + // pools of basic types to amortize allocation. + bools []bool + uint32s []uint32 + uint64s []uint64 + + // extra pools, only used with pointer_reflect.go + int32s []int32 + int64s []int64 + float32s []float32 + float64s []float64 } // NewBuffer allocates a new Buffer and initializes its internal data to @@ -337,30 +343,6 @@ func (p *Buffer) SetBuf(s []byte) { // Bytes returns the contents of the Buffer. func (p *Buffer) Bytes() []byte { return p.buf } -// SetDeterministic sets whether to use deterministic serialization. -// -// Deterministic serialization guarantees that for a given binary, equal -// messages will always be serialized to the same bytes. This implies: -// -// - Repeated serialization of a message will return the same bytes. -// - Different processes of the same binary (which may be executing on -// different machines) will serialize equal messages to the same bytes. -// -// Note that the deterministic serialization is NOT canonical across -// languages. It is not guaranteed to remain stable over time. It is unstable -// across different builds with schema changes due to unknown fields. -// Users who need canonical serialization (e.g., persistent storage in a -// canonical form, fingerprinting, etc.) should define their own -// canonicalization specification and implement their own serializer rather -// than relying on this API. -// -// If deterministic serialization is requested, map entries will be sorted -// by keys in lexographical order. This is an implementation detail and -// subject to change. -func (p *Buffer) SetDeterministic(deterministic bool) { - p.deterministic = deterministic -} - /* * Helper routines for simplifying the creation of optional fields of basic type. */ @@ -849,12 +831,22 @@ func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMes return sf, false, nil } -// mapKeys returns a sort.Interface to be used for sorting the map keys. // Map fields may have key types of non-float scalars, strings and enums. +// The easiest way to sort them in some deterministic order is to use fmt. +// If this turns out to be inefficient we can always consider other options, +// such as doing a Schwartzian transform. + func mapKeys(vs []reflect.Value) sort.Interface { - s := mapKeySorter{vs: vs} + s := mapKeySorter{ + vs: vs, + // default Less function: textual comparison + less: func(a, b reflect.Value) bool { + return fmt.Sprint(a.Interface()) < fmt.Sprint(b.Interface()) + }, + } - // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps. + // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps; + // numeric keys are sorted numerically. if len(vs) == 0 { return s } @@ -863,12 +855,6 @@ func mapKeys(vs []reflect.Value) sort.Interface { s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() } case reflect.Uint32, reflect.Uint64: s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() } - case reflect.Bool: - s.less = func(a, b reflect.Value) bool { return !a.Bool() && b.Bool() } // false < true - case reflect.String: - s.less = func(a, b reflect.Value) bool { return a.String() < b.String() } - default: - panic(fmt.Sprintf("unsupported map key type: %v", vs[0].Kind())) } return s @@ -909,13 +895,3 @@ const ProtoPackageIsVersion2 = true // ProtoPackageIsVersion1 is referenced from generated protocol buffer files // to assert that that code is compatible with this version of the proto package. const ProtoPackageIsVersion1 = true - -// InternalMessageInfo is a type used internally by generated .pb.go files. -// This type is not intended to be used by non-generated code. -// This type is not subject to any compatibility guarantee. -type InternalMessageInfo struct { - marshal *marshalInfo - unmarshal *unmarshalInfo - merge *mergeInfo - discard *discardInfo -} diff --git a/vendor/github.com/golang/protobuf/proto/message_set.go b/vendor/github.com/golang/protobuf/proto/message_set.go index 3b6ca41d..fd982dec 100644 --- a/vendor/github.com/golang/protobuf/proto/message_set.go +++ b/vendor/github.com/golang/protobuf/proto/message_set.go @@ -42,7 +42,6 @@ import ( "fmt" "reflect" "sort" - "sync" ) // errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. @@ -95,7 +94,10 @@ func (ms *messageSet) find(pb Message) *_MessageSet_Item { } func (ms *messageSet) Has(pb Message) bool { - return ms.find(pb) != nil + if ms.find(pb) != nil { + return true + } + return false } func (ms *messageSet) Unmarshal(pb Message) error { @@ -148,42 +150,46 @@ func skipVarint(buf []byte) []byte { // MarshalMessageSet encodes the extension map represented by m in the message set wire format. // It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option. func MarshalMessageSet(exts interface{}) ([]byte, error) { - return marshalMessageSet(exts, false) -} - -// marshaMessageSet implements above function, with the opt to turn on / off deterministic during Marshal. -func marshalMessageSet(exts interface{}, deterministic bool) ([]byte, error) { + var m map[int32]Extension switch exts := exts.(type) { case *XXX_InternalExtensions: - var u marshalInfo - siz := u.sizeMessageSet(exts) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, exts, deterministic) - + if err := encodeExtensions(exts); err != nil { + return nil, err + } + m, _ = exts.extensionsRead() case map[int32]Extension: - // This is an old-style extension map. - // Wrap it in a new-style XXX_InternalExtensions. - ie := XXX_InternalExtensions{ - p: &struct { - mu sync.Mutex - extensionMap map[int32]Extension - }{ - extensionMap: exts, - }, + if err := encodeExtensionsMap(exts); err != nil { + return nil, err } - - var u marshalInfo - siz := u.sizeMessageSet(&ie) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, &ie, deterministic) - + m = exts default: return nil, errors.New("proto: not an extension map") } + + // Sort extension IDs to provide a deterministic encoding. + // See also enc_map in encode.go. + ids := make([]int, 0, len(m)) + for id := range m { + ids = append(ids, int(id)) + } + sort.Ints(ids) + + ms := &messageSet{Item: make([]*_MessageSet_Item, 0, len(m))} + for _, id := range ids { + e := m[int32(id)] + // Remove the wire type and field number varint, as well as the length varint. + msg := skipVarint(skipVarint(e.enc)) + + ms.Item = append(ms.Item, &_MessageSet_Item{ + TypeId: Int32(int32(id)), + Message: msg, + }) + } + return Marshal(ms) } // UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. -// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option. +// It is called by generated Unmarshal methods on protocol buffer messages with the message_set_wire_format option. func UnmarshalMessageSet(buf []byte, exts interface{}) error { var m map[int32]Extension switch exts := exts.(type) { @@ -229,15 +235,7 @@ func MarshalMessageSetJSON(exts interface{}) ([]byte, error) { var m map[int32]Extension switch exts := exts.(type) { case *XXX_InternalExtensions: - var mu sync.Locker - m, mu = exts.extensionsRead() - if m != nil { - // Keep the extensions map locked until we're done marshaling to prevent - // races between marshaling and unmarshaling the lazily-{en,de}coded - // values. - mu.Lock() - defer mu.Unlock() - } + m, _ = exts.extensionsRead() case map[int32]Extension: m = exts default: @@ -255,16 +253,15 @@ func MarshalMessageSetJSON(exts interface{}) ([]byte, error) { for i, id := range ids { ext := m[id] + if i > 0 { + b.WriteByte(',') + } + msd, ok := messageSetMap[id] if !ok { // Unknown type; we can't render it, so skip it. continue } - - if i > 0 && b.Len() > 1 { - b.WriteByte(',') - } - fmt.Fprintf(&b, `"[%s]":`, msd.name) x := ext.value diff --git a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go index b6cad908..fb512e2e 100644 --- a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go +++ b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go @@ -29,7 +29,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build purego appengine js +// +build appengine js // This file contains an implementation of proto field accesses using package reflect. // It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can @@ -38,13 +38,32 @@ package proto import ( + "math" "reflect" - "sync" ) -const unsafeAllowed = false +// A structPointer is a pointer to a struct. +type structPointer struct { + v reflect.Value +} + +// toStructPointer returns a structPointer equivalent to the given reflect value. +// The reflect value must itself be a pointer to a struct. +func toStructPointer(v reflect.Value) structPointer { + return structPointer{v} +} + +// IsNil reports whether p is nil. +func structPointer_IsNil(p structPointer) bool { + return p.v.IsNil() +} -// A field identifies a field in a struct, accessible from a pointer. +// Interface returns the struct pointer as an interface value. +func structPointer_Interface(p structPointer, _ reflect.Type) interface{} { + return p.v.Interface() +} + +// A field identifies a field in a struct, accessible from a structPointer. // In this implementation, a field is identified by the sequence of field indices // passed to reflect's FieldByIndex. type field []int @@ -57,301 +76,409 @@ func toField(f *reflect.StructField) field { // invalidField is an invalid field identifier. var invalidField = field(nil) -// zeroField is a noop when calling pointer.offset. -var zeroField = field([]int{}) - // IsValid reports whether the field identifier is valid. func (f field) IsValid() bool { return f != nil } -// The pointer type is for the table-driven decoder. -// The implementation here uses a reflect.Value of pointer type to -// create a generic pointer. In pointer_unsafe.go we use unsafe -// instead of reflect to implement the same (but faster) interface. -type pointer struct { - v reflect.Value -} +// field returns the given field in the struct as a reflect value. +func structPointer_field(p structPointer, f field) reflect.Value { + // Special case: an extension map entry with a value of type T + // passes a *T to the struct-handling code with a zero field, + // expecting that it will be treated as equivalent to *struct{ X T }, + // which has the same memory layout. We have to handle that case + // specially, because reflect will panic if we call FieldByIndex on a + // non-struct. + if f == nil { + return p.v.Elem() + } -// toPointer converts an interface of pointer type to a pointer -// that points to the same target. -func toPointer(i *Message) pointer { - return pointer{v: reflect.ValueOf(*i)} + return p.v.Elem().FieldByIndex(f) } -// toAddrPointer converts an interface to a pointer that points to -// the interface data. -func toAddrPointer(i *interface{}, isptr bool) pointer { - v := reflect.ValueOf(*i) - u := reflect.New(v.Type()) - u.Elem().Set(v) - return pointer{v: u} +// ifield returns the given field in the struct as an interface value. +func structPointer_ifield(p structPointer, f field) interface{} { + return structPointer_field(p, f).Addr().Interface() } -// valToPointer converts v to a pointer. v must be of pointer type. -func valToPointer(v reflect.Value) pointer { - return pointer{v: v} +// Bytes returns the address of a []byte field in the struct. +func structPointer_Bytes(p structPointer, f field) *[]byte { + return structPointer_ifield(p, f).(*[]byte) } -// offset converts from a pointer to a structure to a pointer to -// one of its fields. -func (p pointer) offset(f field) pointer { - return pointer{v: p.v.Elem().FieldByIndex(f).Addr()} +// BytesSlice returns the address of a [][]byte field in the struct. +func structPointer_BytesSlice(p structPointer, f field) *[][]byte { + return structPointer_ifield(p, f).(*[][]byte) } -func (p pointer) isNil() bool { - return p.v.IsNil() +// Bool returns the address of a *bool field in the struct. +func structPointer_Bool(p structPointer, f field) **bool { + return structPointer_ifield(p, f).(**bool) } -// grow updates the slice s in place to make it one element longer. -// s must be addressable. -// Returns the (addressable) new element. -func grow(s reflect.Value) reflect.Value { - n, m := s.Len(), s.Cap() - if n < m { - s.SetLen(n + 1) - } else { - s.Set(reflect.Append(s, reflect.Zero(s.Type().Elem()))) - } - return s.Index(n) +// BoolVal returns the address of a bool field in the struct. +func structPointer_BoolVal(p structPointer, f field) *bool { + return structPointer_ifield(p, f).(*bool) } -func (p pointer) toInt64() *int64 { - return p.v.Interface().(*int64) +// BoolSlice returns the address of a []bool field in the struct. +func structPointer_BoolSlice(p structPointer, f field) *[]bool { + return structPointer_ifield(p, f).(*[]bool) } -func (p pointer) toInt64Ptr() **int64 { - return p.v.Interface().(**int64) -} -func (p pointer) toInt64Slice() *[]int64 { - return p.v.Interface().(*[]int64) -} - -var int32ptr = reflect.TypeOf((*int32)(nil)) -func (p pointer) toInt32() *int32 { - return p.v.Convert(int32ptr).Interface().(*int32) +// String returns the address of a *string field in the struct. +func structPointer_String(p structPointer, f field) **string { + return structPointer_ifield(p, f).(**string) } -// The toInt32Ptr/Slice methods don't work because of enums. -// Instead, we must use set/get methods for the int32ptr/slice case. -/* - func (p pointer) toInt32Ptr() **int32 { - return p.v.Interface().(**int32) +// StringVal returns the address of a string field in the struct. +func structPointer_StringVal(p structPointer, f field) *string { + return structPointer_ifield(p, f).(*string) } - func (p pointer) toInt32Slice() *[]int32 { - return p.v.Interface().(*[]int32) -} -*/ -func (p pointer) getInt32Ptr() *int32 { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - return p.v.Elem().Interface().(*int32) - } - // an enum - return p.v.Elem().Convert(int32PtrType).Interface().(*int32) -} -func (p pointer) setInt32Ptr(v int32) { - // Allocate value in a *int32. Possibly convert that to a *enum. - // Then assign it to a **int32 or **enum. - // Note: we can convert *int32 to *enum, but we can't convert - // **int32 to **enum! - p.v.Elem().Set(reflect.ValueOf(&v).Convert(p.v.Type().Elem())) -} - -// getInt32Slice copies []int32 from p as a new slice. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) getInt32Slice() []int32 { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - return p.v.Elem().Interface().([]int32) - } - // an enum - // Allocate a []int32, then assign []enum's values into it. - // Note: we can't convert []enum to []int32. - slice := p.v.Elem() - s := make([]int32, slice.Len()) - for i := 0; i < slice.Len(); i++ { - s[i] = int32(slice.Index(i).Int()) - } - return s + +// StringSlice returns the address of a []string field in the struct. +func structPointer_StringSlice(p structPointer, f field) *[]string { + return structPointer_ifield(p, f).(*[]string) } -// setInt32Slice copies []int32 into p as a new slice. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) setInt32Slice(v []int32) { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - p.v.Elem().Set(reflect.ValueOf(v)) - return - } - // an enum - // Allocate a []enum, then assign []int32's values into it. - // Note: we can't convert []enum to []int32. - slice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v)) - for i, x := range v { - slice.Index(i).SetInt(int64(x)) - } - p.v.Elem().Set(slice) +// Extensions returns the address of an extension map field in the struct. +func structPointer_Extensions(p structPointer, f field) *XXX_InternalExtensions { + return structPointer_ifield(p, f).(*XXX_InternalExtensions) } -func (p pointer) appendInt32Slice(v int32) { - grow(p.v.Elem()).SetInt(int64(v)) + +// ExtMap returns the address of an extension map field in the struct. +func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension { + return structPointer_ifield(p, f).(*map[int32]Extension) } -func (p pointer) toUint64() *uint64 { - return p.v.Interface().(*uint64) +// NewAt returns the reflect.Value for a pointer to a field in the struct. +func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value { + return structPointer_field(p, f).Addr() } -func (p pointer) toUint64Ptr() **uint64 { - return p.v.Interface().(**uint64) + +// SetStructPointer writes a *struct field in the struct. +func structPointer_SetStructPointer(p structPointer, f field, q structPointer) { + structPointer_field(p, f).Set(q.v) } -func (p pointer) toUint64Slice() *[]uint64 { - return p.v.Interface().(*[]uint64) + +// GetStructPointer reads a *struct field in the struct. +func structPointer_GetStructPointer(p structPointer, f field) structPointer { + return structPointer{structPointer_field(p, f)} } -func (p pointer) toUint32() *uint32 { - return p.v.Interface().(*uint32) + +// StructPointerSlice the address of a []*struct field in the struct. +func structPointer_StructPointerSlice(p structPointer, f field) structPointerSlice { + return structPointerSlice{structPointer_field(p, f)} } -func (p pointer) toUint32Ptr() **uint32 { - return p.v.Interface().(**uint32) + +// A structPointerSlice represents the address of a slice of pointers to structs +// (themselves messages or groups). That is, v.Type() is *[]*struct{...}. +type structPointerSlice struct { + v reflect.Value } -func (p pointer) toUint32Slice() *[]uint32 { - return p.v.Interface().(*[]uint32) + +func (p structPointerSlice) Len() int { return p.v.Len() } +func (p structPointerSlice) Index(i int) structPointer { return structPointer{p.v.Index(i)} } +func (p structPointerSlice) Append(q structPointer) { + p.v.Set(reflect.Append(p.v, q.v)) } -func (p pointer) toBool() *bool { - return p.v.Interface().(*bool) + +var ( + int32Type = reflect.TypeOf(int32(0)) + uint32Type = reflect.TypeOf(uint32(0)) + float32Type = reflect.TypeOf(float32(0)) + int64Type = reflect.TypeOf(int64(0)) + uint64Type = reflect.TypeOf(uint64(0)) + float64Type = reflect.TypeOf(float64(0)) +) + +// A word32 represents a field of type *int32, *uint32, *float32, or *enum. +// That is, v.Type() is *int32, *uint32, *float32, or *enum and v is assignable. +type word32 struct { + v reflect.Value } -func (p pointer) toBoolPtr() **bool { - return p.v.Interface().(**bool) + +// IsNil reports whether p is nil. +func word32_IsNil(p word32) bool { + return p.v.IsNil() } -func (p pointer) toBoolSlice() *[]bool { - return p.v.Interface().(*[]bool) + +// Set sets p to point at a newly allocated word with bits set to x. +func word32_Set(p word32, o *Buffer, x uint32) { + t := p.v.Type().Elem() + switch t { + case int32Type: + if len(o.int32s) == 0 { + o.int32s = make([]int32, uint32PoolSize) + } + o.int32s[0] = int32(x) + p.v.Set(reflect.ValueOf(&o.int32s[0])) + o.int32s = o.int32s[1:] + return + case uint32Type: + if len(o.uint32s) == 0 { + o.uint32s = make([]uint32, uint32PoolSize) + } + o.uint32s[0] = x + p.v.Set(reflect.ValueOf(&o.uint32s[0])) + o.uint32s = o.uint32s[1:] + return + case float32Type: + if len(o.float32s) == 0 { + o.float32s = make([]float32, uint32PoolSize) + } + o.float32s[0] = math.Float32frombits(x) + p.v.Set(reflect.ValueOf(&o.float32s[0])) + o.float32s = o.float32s[1:] + return + } + + // must be enum + p.v.Set(reflect.New(t)) + p.v.Elem().SetInt(int64(int32(x))) } -func (p pointer) toFloat64() *float64 { - return p.v.Interface().(*float64) + +// Get gets the bits pointed at by p, as a uint32. +func word32_Get(p word32) uint32 { + elem := p.v.Elem() + switch elem.Kind() { + case reflect.Int32: + return uint32(elem.Int()) + case reflect.Uint32: + return uint32(elem.Uint()) + case reflect.Float32: + return math.Float32bits(float32(elem.Float())) + } + panic("unreachable") } -func (p pointer) toFloat64Ptr() **float64 { - return p.v.Interface().(**float64) + +// Word32 returns a reference to a *int32, *uint32, *float32, or *enum field in the struct. +func structPointer_Word32(p structPointer, f field) word32 { + return word32{structPointer_field(p, f)} } -func (p pointer) toFloat64Slice() *[]float64 { - return p.v.Interface().(*[]float64) + +// A word32Val represents a field of type int32, uint32, float32, or enum. +// That is, v.Type() is int32, uint32, float32, or enum and v is assignable. +type word32Val struct { + v reflect.Value } -func (p pointer) toFloat32() *float32 { - return p.v.Interface().(*float32) + +// Set sets *p to x. +func word32Val_Set(p word32Val, x uint32) { + switch p.v.Type() { + case int32Type: + p.v.SetInt(int64(x)) + return + case uint32Type: + p.v.SetUint(uint64(x)) + return + case float32Type: + p.v.SetFloat(float64(math.Float32frombits(x))) + return + } + + // must be enum + p.v.SetInt(int64(int32(x))) } -func (p pointer) toFloat32Ptr() **float32 { - return p.v.Interface().(**float32) + +// Get gets the bits pointed at by p, as a uint32. +func word32Val_Get(p word32Val) uint32 { + elem := p.v + switch elem.Kind() { + case reflect.Int32: + return uint32(elem.Int()) + case reflect.Uint32: + return uint32(elem.Uint()) + case reflect.Float32: + return math.Float32bits(float32(elem.Float())) + } + panic("unreachable") } -func (p pointer) toFloat32Slice() *[]float32 { - return p.v.Interface().(*[]float32) + +// Word32Val returns a reference to a int32, uint32, float32, or enum field in the struct. +func structPointer_Word32Val(p structPointer, f field) word32Val { + return word32Val{structPointer_field(p, f)} } -func (p pointer) toString() *string { - return p.v.Interface().(*string) + +// A word32Slice is a slice of 32-bit values. +// That is, v.Type() is []int32, []uint32, []float32, or []enum. +type word32Slice struct { + v reflect.Value } -func (p pointer) toStringPtr() **string { - return p.v.Interface().(**string) + +func (p word32Slice) Append(x uint32) { + n, m := p.v.Len(), p.v.Cap() + if n < m { + p.v.SetLen(n + 1) + } else { + t := p.v.Type().Elem() + p.v.Set(reflect.Append(p.v, reflect.Zero(t))) + } + elem := p.v.Index(n) + switch elem.Kind() { + case reflect.Int32: + elem.SetInt(int64(int32(x))) + case reflect.Uint32: + elem.SetUint(uint64(x)) + case reflect.Float32: + elem.SetFloat(float64(math.Float32frombits(x))) + } } -func (p pointer) toStringSlice() *[]string { - return p.v.Interface().(*[]string) + +func (p word32Slice) Len() int { + return p.v.Len() } -func (p pointer) toBytes() *[]byte { - return p.v.Interface().(*[]byte) + +func (p word32Slice) Index(i int) uint32 { + elem := p.v.Index(i) + switch elem.Kind() { + case reflect.Int32: + return uint32(elem.Int()) + case reflect.Uint32: + return uint32(elem.Uint()) + case reflect.Float32: + return math.Float32bits(float32(elem.Float())) + } + panic("unreachable") } -func (p pointer) toBytesSlice() *[][]byte { - return p.v.Interface().(*[][]byte) + +// Word32Slice returns a reference to a []int32, []uint32, []float32, or []enum field in the struct. +func structPointer_Word32Slice(p structPointer, f field) word32Slice { + return word32Slice{structPointer_field(p, f)} } -func (p pointer) toExtensions() *XXX_InternalExtensions { - return p.v.Interface().(*XXX_InternalExtensions) + +// word64 is like word32 but for 64-bit values. +type word64 struct { + v reflect.Value } -func (p pointer) toOldExtensions() *map[int32]Extension { - return p.v.Interface().(*map[int32]Extension) + +func word64_Set(p word64, o *Buffer, x uint64) { + t := p.v.Type().Elem() + switch t { + case int64Type: + if len(o.int64s) == 0 { + o.int64s = make([]int64, uint64PoolSize) + } + o.int64s[0] = int64(x) + p.v.Set(reflect.ValueOf(&o.int64s[0])) + o.int64s = o.int64s[1:] + return + case uint64Type: + if len(o.uint64s) == 0 { + o.uint64s = make([]uint64, uint64PoolSize) + } + o.uint64s[0] = x + p.v.Set(reflect.ValueOf(&o.uint64s[0])) + o.uint64s = o.uint64s[1:] + return + case float64Type: + if len(o.float64s) == 0 { + o.float64s = make([]float64, uint64PoolSize) + } + o.float64s[0] = math.Float64frombits(x) + p.v.Set(reflect.ValueOf(&o.float64s[0])) + o.float64s = o.float64s[1:] + return + } + panic("unreachable") } -func (p pointer) getPointer() pointer { - return pointer{v: p.v.Elem()} + +func word64_IsNil(p word64) bool { + return p.v.IsNil() } -func (p pointer) setPointer(q pointer) { - p.v.Elem().Set(q.v) + +func word64_Get(p word64) uint64 { + elem := p.v.Elem() + switch elem.Kind() { + case reflect.Int64: + return uint64(elem.Int()) + case reflect.Uint64: + return elem.Uint() + case reflect.Float64: + return math.Float64bits(elem.Float()) + } + panic("unreachable") } -func (p pointer) appendPointer(q pointer) { - grow(p.v.Elem()).Set(q.v) + +func structPointer_Word64(p structPointer, f field) word64 { + return word64{structPointer_field(p, f)} } -// getPointerSlice copies []*T from p as a new []pointer. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) getPointerSlice() []pointer { - if p.v.IsNil() { - return nil - } - n := p.v.Elem().Len() - s := make([]pointer, n) - for i := 0; i < n; i++ { - s[i] = pointer{v: p.v.Elem().Index(i)} - } - return s +// word64Val is like word32Val but for 64-bit values. +type word64Val struct { + v reflect.Value } -// setPointerSlice copies []pointer into p as a new []*T. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) setPointerSlice(v []pointer) { - if v == nil { - p.v.Elem().Set(reflect.New(p.v.Elem().Type()).Elem()) +func word64Val_Set(p word64Val, o *Buffer, x uint64) { + switch p.v.Type() { + case int64Type: + p.v.SetInt(int64(x)) + return + case uint64Type: + p.v.SetUint(x) + return + case float64Type: + p.v.SetFloat(math.Float64frombits(x)) return } - s := reflect.MakeSlice(p.v.Elem().Type(), 0, len(v)) - for _, p := range v { - s = reflect.Append(s, p.v) - } - p.v.Elem().Set(s) + panic("unreachable") } -// getInterfacePointer returns a pointer that points to the -// interface data of the interface pointed by p. -func (p pointer) getInterfacePointer() pointer { - if p.v.Elem().IsNil() { - return pointer{v: p.v.Elem()} +func word64Val_Get(p word64Val) uint64 { + elem := p.v + switch elem.Kind() { + case reflect.Int64: + return uint64(elem.Int()) + case reflect.Uint64: + return elem.Uint() + case reflect.Float64: + return math.Float64bits(elem.Float()) } - return pointer{v: p.v.Elem().Elem().Elem().Field(0).Addr()} // *interface -> interface -> *struct -> struct + panic("unreachable") } -func (p pointer) asPointerTo(t reflect.Type) reflect.Value { - // TODO: check that p.v.Type().Elem() == t? - return p.v +func structPointer_Word64Val(p structPointer, f field) word64Val { + return word64Val{structPointer_field(p, f)} } -func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} -func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} -func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p +type word64Slice struct { + v reflect.Value } -func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v + +func (p word64Slice) Append(x uint64) { + n, m := p.v.Len(), p.v.Cap() + if n < m { + p.v.SetLen(n + 1) + } else { + t := p.v.Type().Elem() + p.v.Set(reflect.Append(p.v, reflect.Zero(t))) + } + elem := p.v.Index(n) + switch elem.Kind() { + case reflect.Int64: + elem.SetInt(int64(int64(x))) + case reflect.Uint64: + elem.SetUint(uint64(x)) + case reflect.Float64: + elem.SetFloat(float64(math.Float64frombits(x))) + } } -func atomicLoadDiscardInfo(p **discardInfo) *discardInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p + +func (p word64Slice) Len() int { + return p.v.Len() } -func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v + +func (p word64Slice) Index(i int) uint64 { + elem := p.v.Index(i) + switch elem.Kind() { + case reflect.Int64: + return uint64(elem.Int()) + case reflect.Uint64: + return uint64(elem.Uint()) + case reflect.Float64: + return math.Float64bits(float64(elem.Float())) + } + panic("unreachable") } -var atomicLock sync.Mutex +func structPointer_Word64Slice(p structPointer, f field) word64Slice { + return word64Slice{structPointer_field(p, f)} +} diff --git a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go index d55a335d..6b5567d4 100644 --- a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go +++ b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go @@ -29,7 +29,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build !purego,!appengine,!js +// +build !appengine,!js // This file contains the implementation of the proto field accesses using package unsafe. @@ -37,13 +37,38 @@ package proto import ( "reflect" - "sync/atomic" "unsafe" ) -const unsafeAllowed = true +// NOTE: These type_Foo functions would more idiomatically be methods, +// but Go does not allow methods on pointer types, and we must preserve +// some pointer type for the garbage collector. We use these +// funcs with clunky names as our poor approximation to methods. +// +// An alternative would be +// type structPointer struct { p unsafe.Pointer } +// but that does not registerize as well. + +// A structPointer is a pointer to a struct. +type structPointer unsafe.Pointer + +// toStructPointer returns a structPointer equivalent to the given reflect value. +func toStructPointer(v reflect.Value) structPointer { + return structPointer(unsafe.Pointer(v.Pointer())) +} + +// IsNil reports whether p is nil. +func structPointer_IsNil(p structPointer) bool { + return p == nil +} + +// Interface returns the struct pointer, assumed to have element type t, +// as an interface value. +func structPointer_Interface(p structPointer, t reflect.Type) interface{} { + return reflect.NewAt(t, unsafe.Pointer(p)).Interface() +} -// A field identifies a field in a struct, accessible from a pointer. +// A field identifies a field in a struct, accessible from a structPointer. // In this implementation, a field is identified by its byte offset from the start of the struct. type field uintptr @@ -55,254 +80,191 @@ func toField(f *reflect.StructField) field { // invalidField is an invalid field identifier. const invalidField = ^field(0) -// zeroField is a noop when calling pointer.offset. -const zeroField = field(0) - // IsValid reports whether the field identifier is valid. func (f field) IsValid() bool { - return f != invalidField + return f != ^field(0) } -// The pointer type below is for the new table-driven encoder/decoder. -// The implementation here uses unsafe.Pointer to create a generic pointer. -// In pointer_reflect.go we use reflect instead of unsafe to implement -// the same (but slower) interface. -type pointer struct { - p unsafe.Pointer +// Bytes returns the address of a []byte field in the struct. +func structPointer_Bytes(p structPointer, f field) *[]byte { + return (*[]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// size of pointer -var ptrSize = unsafe.Sizeof(uintptr(0)) - -// toPointer converts an interface of pointer type to a pointer -// that points to the same target. -func toPointer(i *Message) pointer { - // Super-tricky - read pointer out of data word of interface value. - // Saves ~25ns over the equivalent: - // return valToPointer(reflect.ValueOf(*i)) - return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} +// BytesSlice returns the address of a [][]byte field in the struct. +func structPointer_BytesSlice(p structPointer, f field) *[][]byte { + return (*[][]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// toAddrPointer converts an interface to a pointer that points to -// the interface data. -func toAddrPointer(i *interface{}, isptr bool) pointer { - // Super-tricky - read or get the address of data word of interface value. - if isptr { - // The interface is of pointer type, thus it is a direct interface. - // The data word is the pointer data itself. We take its address. - return pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)} - } - // The interface is not of pointer type. The data word is the pointer - // to the data. - return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} +// Bool returns the address of a *bool field in the struct. +func structPointer_Bool(p structPointer, f field) **bool { + return (**bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// valToPointer converts v to a pointer. v must be of pointer type. -func valToPointer(v reflect.Value) pointer { - return pointer{p: unsafe.Pointer(v.Pointer())} +// BoolVal returns the address of a bool field in the struct. +func structPointer_BoolVal(p structPointer, f field) *bool { + return (*bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// offset converts from a pointer to a structure to a pointer to -// one of its fields. -func (p pointer) offset(f field) pointer { - // For safety, we should panic if !f.IsValid, however calling panic causes - // this to no longer be inlineable, which is a serious performance cost. - /* - if !f.IsValid() { - panic("invalid field") - } - */ - return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))} +// BoolSlice returns the address of a []bool field in the struct. +func structPointer_BoolSlice(p structPointer, f field) *[]bool { + return (*[]bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -func (p pointer) isNil() bool { - return p.p == nil +// String returns the address of a *string field in the struct. +func structPointer_String(p structPointer, f field) **string { + return (**string)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -func (p pointer) toInt64() *int64 { - return (*int64)(p.p) -} -func (p pointer) toInt64Ptr() **int64 { - return (**int64)(p.p) -} -func (p pointer) toInt64Slice() *[]int64 { - return (*[]int64)(p.p) -} -func (p pointer) toInt32() *int32 { - return (*int32)(p.p) +// StringVal returns the address of a string field in the struct. +func structPointer_StringVal(p structPointer, f field) *string { + return (*string)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// See pointer_reflect.go for why toInt32Ptr/Slice doesn't exist. -/* - func (p pointer) toInt32Ptr() **int32 { - return (**int32)(p.p) - } - func (p pointer) toInt32Slice() *[]int32 { - return (*[]int32)(p.p) - } -*/ -func (p pointer) getInt32Ptr() *int32 { - return *(**int32)(p.p) -} -func (p pointer) setInt32Ptr(v int32) { - *(**int32)(p.p) = &v +// StringSlice returns the address of a []string field in the struct. +func structPointer_StringSlice(p structPointer, f field) *[]string { + return (*[]string)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// getInt32Slice loads a []int32 from p. -// The value returned is aliased with the original slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) getInt32Slice() []int32 { - return *(*[]int32)(p.p) +// ExtMap returns the address of an extension map field in the struct. +func structPointer_Extensions(p structPointer, f field) *XXX_InternalExtensions { + return (*XXX_InternalExtensions)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// setInt32Slice stores a []int32 to p. -// The value set is aliased with the input slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) setInt32Slice(v []int32) { - *(*[]int32)(p.p) = v +func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension { + return (*map[int32]Extension)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -// TODO: Can we get rid of appendInt32Slice and use setInt32Slice instead? -func (p pointer) appendInt32Slice(v int32) { - s := (*[]int32)(p.p) - *s = append(*s, v) +// NewAt returns the reflect.Value for a pointer to a field in the struct. +func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value { + return reflect.NewAt(typ, unsafe.Pointer(uintptr(p)+uintptr(f))) } -func (p pointer) toUint64() *uint64 { - return (*uint64)(p.p) -} -func (p pointer) toUint64Ptr() **uint64 { - return (**uint64)(p.p) -} -func (p pointer) toUint64Slice() *[]uint64 { - return (*[]uint64)(p.p) -} -func (p pointer) toUint32() *uint32 { - return (*uint32)(p.p) -} -func (p pointer) toUint32Ptr() **uint32 { - return (**uint32)(p.p) -} -func (p pointer) toUint32Slice() *[]uint32 { - return (*[]uint32)(p.p) -} -func (p pointer) toBool() *bool { - return (*bool)(p.p) -} -func (p pointer) toBoolPtr() **bool { - return (**bool)(p.p) -} -func (p pointer) toBoolSlice() *[]bool { - return (*[]bool)(p.p) -} -func (p pointer) toFloat64() *float64 { - return (*float64)(p.p) -} -func (p pointer) toFloat64Ptr() **float64 { - return (**float64)(p.p) -} -func (p pointer) toFloat64Slice() *[]float64 { - return (*[]float64)(p.p) -} -func (p pointer) toFloat32() *float32 { - return (*float32)(p.p) +// SetStructPointer writes a *struct field in the struct. +func structPointer_SetStructPointer(p structPointer, f field, q structPointer) { + *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) = q } -func (p pointer) toFloat32Ptr() **float32 { - return (**float32)(p.p) -} -func (p pointer) toFloat32Slice() *[]float32 { - return (*[]float32)(p.p) -} -func (p pointer) toString() *string { - return (*string)(p.p) -} -func (p pointer) toStringPtr() **string { - return (**string)(p.p) -} -func (p pointer) toStringSlice() *[]string { - return (*[]string)(p.p) -} -func (p pointer) toBytes() *[]byte { - return (*[]byte)(p.p) -} -func (p pointer) toBytesSlice() *[][]byte { - return (*[][]byte)(p.p) + +// GetStructPointer reads a *struct field in the struct. +func structPointer_GetStructPointer(p structPointer, f field) structPointer { + return *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -func (p pointer) toExtensions() *XXX_InternalExtensions { - return (*XXX_InternalExtensions)(p.p) + +// StructPointerSlice the address of a []*struct field in the struct. +func structPointer_StructPointerSlice(p structPointer, f field) *structPointerSlice { + return (*structPointerSlice)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -func (p pointer) toOldExtensions() *map[int32]Extension { - return (*map[int32]Extension)(p.p) + +// A structPointerSlice represents a slice of pointers to structs (themselves submessages or groups). +type structPointerSlice []structPointer + +func (v *structPointerSlice) Len() int { return len(*v) } +func (v *structPointerSlice) Index(i int) structPointer { return (*v)[i] } +func (v *structPointerSlice) Append(p structPointer) { *v = append(*v, p) } + +// A word32 is the address of a "pointer to 32-bit value" field. +type word32 **uint32 + +// IsNil reports whether *v is nil. +func word32_IsNil(p word32) bool { + return *p == nil } -// getPointerSlice loads []*T from p as a []pointer. -// The value returned is aliased with the original slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) getPointerSlice() []pointer { - // Super-tricky - p should point to a []*T where T is a - // message type. We load it as []pointer. - return *(*[]pointer)(p.p) +// Set sets *v to point at a newly allocated word set to x. +func word32_Set(p word32, o *Buffer, x uint32) { + if len(o.uint32s) == 0 { + o.uint32s = make([]uint32, uint32PoolSize) + } + o.uint32s[0] = x + *p = &o.uint32s[0] + o.uint32s = o.uint32s[1:] } -// setPointerSlice stores []pointer into p as a []*T. -// The value set is aliased with the input slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) setPointerSlice(v []pointer) { - // Super-tricky - p should point to a []*T where T is a - // message type. We store it as []pointer. - *(*[]pointer)(p.p) = v +// Get gets the value pointed at by *v. +func word32_Get(p word32) uint32 { + return **p } -// getPointer loads the pointer at p and returns it. -func (p pointer) getPointer() pointer { - return pointer{p: *(*unsafe.Pointer)(p.p)} +// Word32 returns the address of a *int32, *uint32, *float32, or *enum field in the struct. +func structPointer_Word32(p structPointer, f field) word32 { + return word32((**uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) } -// setPointer stores the pointer q at p. -func (p pointer) setPointer(q pointer) { - *(*unsafe.Pointer)(p.p) = q.p +// A word32Val is the address of a 32-bit value field. +type word32Val *uint32 + +// Set sets *p to x. +func word32Val_Set(p word32Val, x uint32) { + *p = x } -// append q to the slice pointed to by p. -func (p pointer) appendPointer(q pointer) { - s := (*[]unsafe.Pointer)(p.p) - *s = append(*s, q.p) +// Get gets the value pointed at by p. +func word32Val_Get(p word32Val) uint32 { + return *p } -// getInterfacePointer returns a pointer that points to the -// interface data of the interface pointed by p. -func (p pointer) getInterfacePointer() pointer { - // Super-tricky - read pointer out of data word of interface value. - return pointer{p: (*(*[2]unsafe.Pointer)(p.p))[1]} +// Word32Val returns the address of a *int32, *uint32, *float32, or *enum field in the struct. +func structPointer_Word32Val(p structPointer, f field) word32Val { + return word32Val((*uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) } -// asPointerTo returns a reflect.Value that is a pointer to an -// object of type t stored at p. -func (p pointer) asPointerTo(t reflect.Type) reflect.Value { - return reflect.NewAt(t, p.p) +// A word32Slice is a slice of 32-bit values. +type word32Slice []uint32 + +func (v *word32Slice) Append(x uint32) { *v = append(*v, x) } +func (v *word32Slice) Len() int { return len(*v) } +func (v *word32Slice) Index(i int) uint32 { return (*v)[i] } + +// Word32Slice returns the address of a []int32, []uint32, []float32, or []enum field in the struct. +func structPointer_Word32Slice(p structPointer, f field) *word32Slice { + return (*word32Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) } -func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo { - return (*unmarshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) +// word64 is like word32 but for 64-bit values. +type word64 **uint64 + +func word64_Set(p word64, o *Buffer, x uint64) { + if len(o.uint64s) == 0 { + o.uint64s = make([]uint64, uint64PoolSize) + } + o.uint64s[0] = x + *p = &o.uint64s[0] + o.uint64s = o.uint64s[1:] } -func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) + +func word64_IsNil(p word64) bool { + return *p == nil } -func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo { - return (*marshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) + +func word64_Get(p word64) uint64 { + return **p } -func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) + +func structPointer_Word64(p structPointer, f field) word64 { + return word64((**uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) } -func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo { - return (*mergeInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) + +// word64Val is like word32Val but for 64-bit values. +type word64Val *uint64 + +func word64Val_Set(p word64Val, o *Buffer, x uint64) { + *p = x } -func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) + +func word64Val_Get(p word64Val) uint64 { + return *p } -func atomicLoadDiscardInfo(p **discardInfo) *discardInfo { - return (*discardInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) + +func structPointer_Word64Val(p structPointer, f field) word64Val { + return word64Val((*uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) } -func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) + +// word64Slice is like word32Slice but for 64-bit values. +type word64Slice []uint64 + +func (v *word64Slice) Append(x uint64) { *v = append(*v, x) } +func (v *word64Slice) Len() int { return len(*v) } +func (v *word64Slice) Index(i int) uint64 { return (*v)[i] } + +func structPointer_Word64Slice(p structPointer, f field) *word64Slice { + return (*word64Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) } diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go index f710adab..ec2289c0 100644 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ b/vendor/github.com/golang/protobuf/proto/properties.go @@ -58,6 +58,42 @@ const ( WireFixed32 = 5 ) +const startSize = 10 // initial slice/string sizes + +// Encoders are defined in encode.go +// An encoder outputs the full representation of a field, including its +// tag and encoder type. +type encoder func(p *Buffer, prop *Properties, base structPointer) error + +// A valueEncoder encodes a single integer in a particular encoding. +type valueEncoder func(o *Buffer, x uint64) error + +// Sizers are defined in encode.go +// A sizer returns the encoded size of a field, including its tag and encoder +// type. +type sizer func(prop *Properties, base structPointer) int + +// A valueSizer returns the encoded size of a single integer in a particular +// encoding. +type valueSizer func(x uint64) int + +// Decoders are defined in decode.go +// A decoder creates a value from its wire representation. +// Unrecognized subelements are saved in unrec. +type decoder func(p *Buffer, prop *Properties, base structPointer) error + +// A valueDecoder decodes a single integer in a particular encoding. +type valueDecoder func(o *Buffer) (x uint64, err error) + +// A oneofMarshaler does the marshaling for all oneof fields in a message. +type oneofMarshaler func(Message, *Buffer) error + +// A oneofUnmarshaler does the unmarshaling for a oneof field in a message. +type oneofUnmarshaler func(Message, int, int, *Buffer) (bool, error) + +// A oneofSizer does the sizing for all oneof fields in a message. +type oneofSizer func(Message) int + // tagMap is an optimization over map[int]int for typical protocol buffer // use-cases. Encoded protocol buffers are often in tag order with small tag // numbers. @@ -104,6 +140,13 @@ type StructProperties struct { decoderTags tagMap // map from proto tag to struct field number decoderOrigNames map[string]int // map from original name to struct field number order []int // list of struct field numbers in tag order + unrecField field // field id of the XXX_unrecognized []byte field + extendable bool // is this an extendable proto + + oneofMarshaler oneofMarshaler + oneofUnmarshaler oneofUnmarshaler + oneofSizer oneofSizer + stype reflect.Type // OneofTypes contains information about the oneof fields in this message. // It is keyed by the original name of a field. @@ -144,19 +187,36 @@ type Properties struct { Default string // default value HasDefault bool // whether an explicit default was provided - - stype reflect.Type // set for struct types only - sprop *StructProperties // set for struct types only + def_uint64 uint64 + + enc encoder + valEnc valueEncoder // set for bool and numeric types only + field field + tagcode []byte // encoding of EncodeVarint((Tag<<3)|WireType) + tagbuf [8]byte + stype reflect.Type // set for struct types only + sprop *StructProperties // set for struct types only + isMarshaler bool + isUnmarshaler bool mtype reflect.Type // set for map types only mkeyprop *Properties // set for map types only mvalprop *Properties // set for map types only + + size sizer + valSize valueSizer // set for bool and numeric types only + + dec decoder + valDec valueDecoder // set for bool and numeric types only + + // If this is a packable field, this will be the decoder for the packed version of the field. + packedDec decoder } // String formats the properties in the protobuf struct field tag style. func (p *Properties) String() string { s := p.Wire - s += "," + s = "," s += strconv.Itoa(p.Tag) if p.Required { s += ",req" @@ -202,14 +262,29 @@ func (p *Properties) Parse(s string) { switch p.Wire { case "varint": p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeVarint + p.valDec = (*Buffer).DecodeVarint + p.valSize = sizeVarint case "fixed32": p.WireType = WireFixed32 + p.valEnc = (*Buffer).EncodeFixed32 + p.valDec = (*Buffer).DecodeFixed32 + p.valSize = sizeFixed32 case "fixed64": p.WireType = WireFixed64 + p.valEnc = (*Buffer).EncodeFixed64 + p.valDec = (*Buffer).DecodeFixed64 + p.valSize = sizeFixed64 case "zigzag32": p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeZigzag32 + p.valDec = (*Buffer).DecodeZigzag32 + p.valSize = sizeZigzag32 case "zigzag64": p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeZigzag64 + p.valDec = (*Buffer).DecodeZigzag64 + p.valSize = sizeZigzag64 case "bytes", "group": p.WireType = WireBytes // no numeric converter for non-numeric types @@ -224,7 +299,6 @@ func (p *Properties) Parse(s string) { return } -outer: for i := 2; i < len(fields); i++ { f := fields[i] switch { @@ -252,28 +326,229 @@ outer: if i+1 < len(fields) { // Commas aren't escaped, and def is always last. p.Default += "," + strings.Join(fields[i+1:], ",") - break outer + break } } } } +func logNoSliceEnc(t1, t2 reflect.Type) { + fmt.Fprintf(os.Stderr, "proto: no slice oenc for %T = []%T\n", t1, t2) +} + var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem() -// setFieldProps initializes the field properties for submessages and maps. -func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, lockGetProp bool) { +// Initialize the fields for encoding and decoding. +func (p *Properties) setEncAndDec(typ reflect.Type, f *reflect.StructField, lockGetProp bool) { + p.enc = nil + p.dec = nil + p.size = nil + switch t1 := typ; t1.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no coders for %v\n", t1) + + // proto3 scalar types + + case reflect.Bool: + p.enc = (*Buffer).enc_proto3_bool + p.dec = (*Buffer).dec_proto3_bool + p.size = size_proto3_bool + case reflect.Int32: + p.enc = (*Buffer).enc_proto3_int32 + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_proto3_int32 + case reflect.Uint32: + p.enc = (*Buffer).enc_proto3_uint32 + p.dec = (*Buffer).dec_proto3_int32 // can reuse + p.size = size_proto3_uint32 + case reflect.Int64, reflect.Uint64: + p.enc = (*Buffer).enc_proto3_int64 + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_proto3_int64 + case reflect.Float32: + p.enc = (*Buffer).enc_proto3_uint32 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_proto3_uint32 + case reflect.Float64: + p.enc = (*Buffer).enc_proto3_int64 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_proto3_int64 + case reflect.String: + p.enc = (*Buffer).enc_proto3_string + p.dec = (*Buffer).dec_proto3_string + p.size = size_proto3_string + case reflect.Ptr: - if t1.Elem().Kind() == reflect.Struct { + switch t2 := t1.Elem(); t2.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no encoder function for %v -> %v\n", t1, t2) + break + case reflect.Bool: + p.enc = (*Buffer).enc_bool + p.dec = (*Buffer).dec_bool + p.size = size_bool + case reflect.Int32: + p.enc = (*Buffer).enc_int32 + p.dec = (*Buffer).dec_int32 + p.size = size_int32 + case reflect.Uint32: + p.enc = (*Buffer).enc_uint32 + p.dec = (*Buffer).dec_int32 // can reuse + p.size = size_uint32 + case reflect.Int64, reflect.Uint64: + p.enc = (*Buffer).enc_int64 + p.dec = (*Buffer).dec_int64 + p.size = size_int64 + case reflect.Float32: + p.enc = (*Buffer).enc_uint32 // can just treat them as bits + p.dec = (*Buffer).dec_int32 + p.size = size_uint32 + case reflect.Float64: + p.enc = (*Buffer).enc_int64 // can just treat them as bits + p.dec = (*Buffer).dec_int64 + p.size = size_int64 + case reflect.String: + p.enc = (*Buffer).enc_string + p.dec = (*Buffer).dec_string + p.size = size_string + case reflect.Struct: p.stype = t1.Elem() + p.isMarshaler = isMarshaler(t1) + p.isUnmarshaler = isUnmarshaler(t1) + if p.Wire == "bytes" { + p.enc = (*Buffer).enc_struct_message + p.dec = (*Buffer).dec_struct_message + p.size = size_struct_message + } else { + p.enc = (*Buffer).enc_struct_group + p.dec = (*Buffer).dec_struct_group + p.size = size_struct_group + } } case reflect.Slice: - if t2 := t1.Elem(); t2.Kind() == reflect.Ptr && t2.Elem().Kind() == reflect.Struct { - p.stype = t2.Elem() + switch t2 := t1.Elem(); t2.Kind() { + default: + logNoSliceEnc(t1, t2) + break + case reflect.Bool: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_bool + p.size = size_slice_packed_bool + } else { + p.enc = (*Buffer).enc_slice_bool + p.size = size_slice_bool + } + p.dec = (*Buffer).dec_slice_bool + p.packedDec = (*Buffer).dec_slice_packed_bool + case reflect.Int32: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int32 + p.size = size_slice_packed_int32 + } else { + p.enc = (*Buffer).enc_slice_int32 + p.size = size_slice_int32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case reflect.Uint32: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_uint32 + p.size = size_slice_packed_uint32 + } else { + p.enc = (*Buffer).enc_slice_uint32 + p.size = size_slice_uint32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case reflect.Int64, reflect.Uint64: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int64 + p.size = size_slice_packed_int64 + } else { + p.enc = (*Buffer).enc_slice_int64 + p.size = size_slice_int64 + } + p.dec = (*Buffer).dec_slice_int64 + p.packedDec = (*Buffer).dec_slice_packed_int64 + case reflect.Uint8: + p.dec = (*Buffer).dec_slice_byte + if p.proto3 { + p.enc = (*Buffer).enc_proto3_slice_byte + p.size = size_proto3_slice_byte + } else { + p.enc = (*Buffer).enc_slice_byte + p.size = size_slice_byte + } + case reflect.Float32, reflect.Float64: + switch t2.Bits() { + case 32: + // can just treat them as bits + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_uint32 + p.size = size_slice_packed_uint32 + } else { + p.enc = (*Buffer).enc_slice_uint32 + p.size = size_slice_uint32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case 64: + // can just treat them as bits + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int64 + p.size = size_slice_packed_int64 + } else { + p.enc = (*Buffer).enc_slice_int64 + p.size = size_slice_int64 + } + p.dec = (*Buffer).dec_slice_int64 + p.packedDec = (*Buffer).dec_slice_packed_int64 + default: + logNoSliceEnc(t1, t2) + break + } + case reflect.String: + p.enc = (*Buffer).enc_slice_string + p.dec = (*Buffer).dec_slice_string + p.size = size_slice_string + case reflect.Ptr: + switch t3 := t2.Elem(); t3.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T -> %T\n", t1, t2, t3) + break + case reflect.Struct: + p.stype = t2.Elem() + p.isMarshaler = isMarshaler(t2) + p.isUnmarshaler = isUnmarshaler(t2) + if p.Wire == "bytes" { + p.enc = (*Buffer).enc_slice_struct_message + p.dec = (*Buffer).dec_slice_struct_message + p.size = size_slice_struct_message + } else { + p.enc = (*Buffer).enc_slice_struct_group + p.dec = (*Buffer).dec_slice_struct_group + p.size = size_slice_struct_group + } + } + case reflect.Slice: + switch t2.Elem().Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no slice elem oenc for %T -> %T -> %T\n", t1, t2, t2.Elem()) + break + case reflect.Uint8: + p.enc = (*Buffer).enc_slice_slice_byte + p.dec = (*Buffer).dec_slice_slice_byte + p.size = size_slice_slice_byte + } } case reflect.Map: + p.enc = (*Buffer).enc_new_map + p.dec = (*Buffer).dec_new_map + p.size = size_new_map + p.mtype = t1 p.mkeyprop = &Properties{} p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) @@ -287,6 +562,20 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) } + // precalculate tag code + wire := p.WireType + if p.Packed { + wire = WireBytes + } + x := uint32(p.Tag)<<3 | uint32(wire) + i := 0 + for i = 0; x > 127; i++ { + p.tagbuf[i] = 0x80 | uint8(x&0x7F) + x >>= 7 + } + p.tagbuf[i] = uint8(x) + p.tagcode = p.tagbuf[0 : i+1] + if p.stype != nil { if lockGetProp { p.sprop = GetProperties(p.stype) @@ -297,9 +586,32 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc } var ( - marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() + marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() + unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() ) +// isMarshaler reports whether type t implements Marshaler. +func isMarshaler(t reflect.Type) bool { + // We're checking for (likely) pointer-receiver methods + // so if t is not a pointer, something is very wrong. + // The calls above only invoke isMarshaler on pointer types. + if t.Kind() != reflect.Ptr { + panic("proto: misuse of isMarshaler") + } + return t.Implements(marshalerType) +} + +// isUnmarshaler reports whether type t implements Unmarshaler. +func isUnmarshaler(t reflect.Type) bool { + // We're checking for (likely) pointer-receiver methods + // so if t is not a pointer, something is very wrong. + // The calls above only invoke isUnmarshaler on pointer types. + if t.Kind() != reflect.Ptr { + panic("proto: misuse of isUnmarshaler") + } + return t.Implements(unmarshalerType) +} + // Init populates the properties from a protocol buffer struct tag. func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) { p.init(typ, name, tag, f, true) @@ -309,11 +621,14 @@ func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructF // "bytes,49,opt,def=hello!" p.Name = name p.OrigName = name + if f != nil { + p.field = toField(f) + } if tag == "" { return } p.Parse(tag) - p.setFieldProps(typ, f, lockGetProp) + p.setEncAndDec(typ, f, lockGetProp) } var ( @@ -363,6 +678,9 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { propertiesMap[t] = prop // build properties + prop.extendable = reflect.PtrTo(t).Implements(extendableProtoType) || + reflect.PtrTo(t).Implements(extendableProtoV1Type) + prop.unrecField = invalidField prop.Prop = make([]*Properties, t.NumField()) prop.order = make([]int, t.NumField()) @@ -372,6 +690,17 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { name := f.Name p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false) + if f.Name == "XXX_InternalExtensions" { // special case + p.enc = (*Buffer).enc_exts + p.dec = nil // not needed + p.size = size_exts + } else if f.Name == "XXX_extensions" { // special case + p.enc = (*Buffer).enc_map + p.dec = nil // not needed + p.size = size_map + } else if f.Name == "XXX_unrecognized" { // special case + prop.unrecField = toField(&f) + } oneof := f.Tag.Get("protobuf_oneof") // special case if oneof != "" { // Oneof fields don't use the traditional protobuf tag. @@ -386,6 +715,9 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { } print("\n") } + if p.enc == nil && !strings.HasPrefix(f.Name, "XXX_") && oneof == "" { + fmt.Fprintln(os.Stderr, "proto: no encoder for", f.Name, f.Type.String(), "[GetProperties]") + } } // Re-order prop.order. @@ -396,7 +728,8 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { } if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok { var oots []interface{} - _, _, _, oots = om.XXX_OneofFuncs() + prop.oneofMarshaler, prop.oneofUnmarshaler, prop.oneofSizer, oots = om.XXX_OneofFuncs() + prop.stype = t // Interpret oneof metadata. prop.OneofTypes = make(map[string]*OneofProperties) @@ -446,6 +779,30 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { return prop } +// Return the Properties object for the x[0]'th field of the structure. +func propByIndex(t reflect.Type, x []int) *Properties { + if len(x) != 1 { + fmt.Fprintf(os.Stderr, "proto: field index dimension %d (not 1) for type %s\n", len(x), t) + return nil + } + prop := GetProperties(t) + return prop.Prop[x[0]] +} + +// Get the address and type of a pointer to a struct from an interface. +func getbase(pb Message) (t reflect.Type, b structPointer, err error) { + if pb == nil { + err = ErrNil + return + } + // get the reflect type of the pointer to the struct. + t = reflect.TypeOf(pb) + // get the address of the struct. + value := reflect.ValueOf(pb) + b = toStructPointer(value) + return +} + // A global registry of enum types. // The generated code will register the generated maps by calling RegisterEnum. @@ -469,42 +826,20 @@ func EnumValueMap(enumType string) map[string]int32 { // A registry of all linked message types. // The string is a fully-qualified proto name ("pkg.Message"). var ( - protoTypedNils = make(map[string]Message) // a map from proto names to typed nil pointers - protoMapTypes = make(map[string]reflect.Type) // a map from proto names to map types - revProtoTypes = make(map[reflect.Type]string) + protoTypes = make(map[string]reflect.Type) + revProtoTypes = make(map[reflect.Type]string) ) // RegisterType is called from generated code and maps from the fully qualified // proto name to the type (pointer to struct) of the protocol buffer. func RegisterType(x Message, name string) { - if _, ok := protoTypedNils[name]; ok { + if _, ok := protoTypes[name]; ok { // TODO: Some day, make this a panic. log.Printf("proto: duplicate proto type registered: %s", name) return } t := reflect.TypeOf(x) - if v := reflect.ValueOf(x); v.Kind() == reflect.Ptr && v.Pointer() == 0 { - // Generated code always calls RegisterType with nil x. - // This check is just for extra safety. - protoTypedNils[name] = x - } else { - protoTypedNils[name] = reflect.Zero(t).Interface().(Message) - } - revProtoTypes[t] = name -} - -// RegisterMapType is called from generated code and maps from the fully qualified -// proto name to the native map type of the proto map definition. -func RegisterMapType(x interface{}, name string) { - if reflect.TypeOf(x).Kind() != reflect.Map { - panic(fmt.Sprintf("RegisterMapType(%T, %q); want map", x, name)) - } - if _, ok := protoMapTypes[name]; ok { - log.Printf("proto: duplicate proto type registered: %s", name) - return - } - t := reflect.TypeOf(x) - protoMapTypes[name] = t + protoTypes[name] = t revProtoTypes[t] = name } @@ -520,14 +855,7 @@ func MessageName(x Message) string { } // MessageType returns the message type (pointer to struct) for a named message. -// The type is not guaranteed to implement proto.Message if the name refers to a -// map entry. -func MessageType(name string) reflect.Type { - if t, ok := protoTypedNils[name]; ok { - return reflect.TypeOf(t) - } - return protoMapTypes[name] -} +func MessageType(name string) reflect.Type { return protoTypes[name] } // A registry of all linked proto files. var ( diff --git a/vendor/github.com/golang/protobuf/proto/table_marshal.go b/vendor/github.com/golang/protobuf/proto/table_marshal.go deleted file mode 100644 index 0f212b30..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_marshal.go +++ /dev/null @@ -1,2681 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "errors" - "fmt" - "math" - "reflect" - "sort" - "strconv" - "strings" - "sync" - "sync/atomic" - "unicode/utf8" -) - -// a sizer takes a pointer to a field and the size of its tag, computes the size of -// the encoded data. -type sizer func(pointer, int) int - -// a marshaler takes a byte slice, a pointer to a field, and its tag (in wire format), -// marshals the field to the end of the slice, returns the slice and error (if any). -type marshaler func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) - -// marshalInfo is the information used for marshaling a message. -type marshalInfo struct { - typ reflect.Type - fields []*marshalFieldInfo - unrecognized field // offset of XXX_unrecognized - extensions field // offset of XXX_InternalExtensions - v1extensions field // offset of XXX_extensions - sizecache field // offset of XXX_sizecache - initialized int32 // 0 -- only typ is set, 1 -- fully initialized - messageset bool // uses message set wire format - hasmarshaler bool // has custom marshaler - sync.RWMutex // protect extElems map, also for initialization - extElems map[int32]*marshalElemInfo // info of extension elements -} - -// marshalFieldInfo is the information used for marshaling a field of a message. -type marshalFieldInfo struct { - field field - wiretag uint64 // tag in wire format - tagsize int // size of tag in wire format - sizer sizer - marshaler marshaler - isPointer bool - required bool // field is required - name string // name of the field, for error reporting - oneofElems map[reflect.Type]*marshalElemInfo // info of oneof elements -} - -// marshalElemInfo is the information used for marshaling an extension or oneof element. -type marshalElemInfo struct { - wiretag uint64 // tag in wire format - tagsize int // size of tag in wire format - sizer sizer - marshaler marshaler - isptr bool // elem is pointer typed, thus interface of this type is a direct interface (extension only) -} - -var ( - marshalInfoMap = map[reflect.Type]*marshalInfo{} - marshalInfoLock sync.Mutex -) - -// getMarshalInfo returns the information to marshal a given type of message. -// The info it returns may not necessarily initialized. -// t is the type of the message (NOT the pointer to it). -func getMarshalInfo(t reflect.Type) *marshalInfo { - marshalInfoLock.Lock() - u, ok := marshalInfoMap[t] - if !ok { - u = &marshalInfo{typ: t} - marshalInfoMap[t] = u - } - marshalInfoLock.Unlock() - return u -} - -// Size is the entry point from generated code, -// and should be ONLY called by generated code. -// It computes the size of encoded data of msg. -// a is a pointer to a place to store cached marshal info. -func (a *InternalMessageInfo) Size(msg Message) int { - u := getMessageMarshalInfo(msg, a) - ptr := toPointer(&msg) - if ptr.isNil() { - // We get here if msg is a typed nil ((*SomeMessage)(nil)), - // so it satisfies the interface, and msg == nil wouldn't - // catch it. We don't want crash in this case. - return 0 - } - return u.size(ptr) -} - -// Marshal is the entry point from generated code, -// and should be ONLY called by generated code. -// It marshals msg to the end of b. -// a is a pointer to a place to store cached marshal info. -func (a *InternalMessageInfo) Marshal(b []byte, msg Message, deterministic bool) ([]byte, error) { - u := getMessageMarshalInfo(msg, a) - ptr := toPointer(&msg) - if ptr.isNil() { - // We get here if msg is a typed nil ((*SomeMessage)(nil)), - // so it satisfies the interface, and msg == nil wouldn't - // catch it. We don't want crash in this case. - return b, ErrNil - } - return u.marshal(b, ptr, deterministic) -} - -func getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *marshalInfo { - // u := a.marshal, but atomically. - // We use an atomic here to ensure memory consistency. - u := atomicLoadMarshalInfo(&a.marshal) - if u == nil { - // Get marshal information from type of message. - t := reflect.ValueOf(msg).Type() - if t.Kind() != reflect.Ptr { - panic(fmt.Sprintf("cannot handle non-pointer message type %v", t)) - } - u = getMarshalInfo(t.Elem()) - // Store it in the cache for later users. - // a.marshal = u, but atomically. - atomicStoreMarshalInfo(&a.marshal, u) - } - return u -} - -// size is the main function to compute the size of the encoded data of a message. -// ptr is the pointer to the message. -func (u *marshalInfo) size(ptr pointer) int { - if atomic.LoadInt32(&u.initialized) == 0 { - u.computeMarshalInfo() - } - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if u.hasmarshaler { - m := ptr.asPointerTo(u.typ).Interface().(Marshaler) - b, _ := m.Marshal() - return len(b) - } - - n := 0 - for _, f := range u.fields { - if f.isPointer && ptr.offset(f.field).getPointer().isNil() { - // nil pointer always marshals to nothing - continue - } - n += f.sizer(ptr.offset(f.field), f.tagsize) - } - if u.extensions.IsValid() { - e := ptr.offset(u.extensions).toExtensions() - if u.messageset { - n += u.sizeMessageSet(e) - } else { - n += u.sizeExtensions(e) - } - } - if u.v1extensions.IsValid() { - m := *ptr.offset(u.v1extensions).toOldExtensions() - n += u.sizeV1Extensions(m) - } - if u.unrecognized.IsValid() { - s := *ptr.offset(u.unrecognized).toBytes() - n += len(s) - } - // cache the result for use in marshal - if u.sizecache.IsValid() { - atomic.StoreInt32(ptr.offset(u.sizecache).toInt32(), int32(n)) - } - return n -} - -// cachedsize gets the size from cache. If there is no cache (i.e. message is not generated), -// fall back to compute the size. -func (u *marshalInfo) cachedsize(ptr pointer) int { - if u.sizecache.IsValid() { - return int(atomic.LoadInt32(ptr.offset(u.sizecache).toInt32())) - } - return u.size(ptr) -} - -// marshal is the main function to marshal a message. It takes a byte slice and appends -// the encoded data to the end of the slice, returns the slice and error (if any). -// ptr is the pointer to the message. -// If deterministic is true, map is marshaled in deterministic order. -func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte, error) { - if atomic.LoadInt32(&u.initialized) == 0 { - u.computeMarshalInfo() - } - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if u.hasmarshaler { - m := ptr.asPointerTo(u.typ).Interface().(Marshaler) - b1, err := m.Marshal() - b = append(b, b1...) - return b, err - } - - var err, errreq error - // The old marshaler encodes extensions at beginning. - if u.extensions.IsValid() { - e := ptr.offset(u.extensions).toExtensions() - if u.messageset { - b, err = u.appendMessageSet(b, e, deterministic) - } else { - b, err = u.appendExtensions(b, e, deterministic) - } - if err != nil { - return b, err - } - } - if u.v1extensions.IsValid() { - m := *ptr.offset(u.v1extensions).toOldExtensions() - b, err = u.appendV1Extensions(b, m, deterministic) - if err != nil { - return b, err - } - } - for _, f := range u.fields { - if f.required && errreq == nil { - if ptr.offset(f.field).getPointer().isNil() { - // Required field is not set. - // We record the error but keep going, to give a complete marshaling. - errreq = &RequiredNotSetError{f.name} - continue - } - } - if f.isPointer && ptr.offset(f.field).getPointer().isNil() { - // nil pointer always marshals to nothing - continue - } - b, err = f.marshaler(b, ptr.offset(f.field), f.wiretag, deterministic) - if err != nil { - if err1, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = &RequiredNotSetError{f.name + "." + err1.field} - } - continue - } - if err == errRepeatedHasNil { - err = errors.New("proto: repeated field " + f.name + " has nil element") - } - return b, err - } - } - if u.unrecognized.IsValid() { - s := *ptr.offset(u.unrecognized).toBytes() - b = append(b, s...) - } - return b, errreq -} - -// computeMarshalInfo initializes the marshal info. -func (u *marshalInfo) computeMarshalInfo() { - u.Lock() - defer u.Unlock() - if u.initialized != 0 { // non-atomic read is ok as it is protected by the lock - return - } - - t := u.typ - u.unrecognized = invalidField - u.extensions = invalidField - u.v1extensions = invalidField - u.sizecache = invalidField - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if reflect.PtrTo(t).Implements(marshalerType) { - u.hasmarshaler = true - atomic.StoreInt32(&u.initialized, 1) - return - } - - // get oneof implementers - var oneofImplementers []interface{} - if m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok { - _, _, _, oneofImplementers = m.XXX_OneofFuncs() - } - - n := t.NumField() - - // deal with XXX fields first - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - if !strings.HasPrefix(f.Name, "XXX_") { - continue - } - switch f.Name { - case "XXX_sizecache": - u.sizecache = toField(&f) - case "XXX_unrecognized": - u.unrecognized = toField(&f) - case "XXX_InternalExtensions": - u.extensions = toField(&f) - u.messageset = f.Tag.Get("protobuf_messageset") == "1" - case "XXX_extensions": - u.v1extensions = toField(&f) - case "XXX_NoUnkeyedLiteral": - // nothing to do - default: - panic("unknown XXX field: " + f.Name) - } - n-- - } - - // normal fields - fields := make([]marshalFieldInfo, n) // batch allocation - u.fields = make([]*marshalFieldInfo, 0, n) - for i, j := 0, 0; i < t.NumField(); i++ { - f := t.Field(i) - - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - field := &fields[j] - j++ - field.name = f.Name - u.fields = append(u.fields, field) - if f.Tag.Get("protobuf_oneof") != "" { - field.computeOneofFieldInfo(&f, oneofImplementers) - continue - } - if f.Tag.Get("protobuf") == "" { - // field has no tag (not in generated message), ignore it - u.fields = u.fields[:len(u.fields)-1] - j-- - continue - } - field.computeMarshalFieldInfo(&f) - } - - // fields are marshaled in tag order on the wire. - sort.Sort(byTag(u.fields)) - - atomic.StoreInt32(&u.initialized, 1) -} - -// helper for sorting fields by tag -type byTag []*marshalFieldInfo - -func (a byTag) Len() int { return len(a) } -func (a byTag) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag } - -// getExtElemInfo returns the information to marshal an extension element. -// The info it returns is initialized. -func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo { - // get from cache first - u.RLock() - e, ok := u.extElems[desc.Field] - u.RUnlock() - if ok { - return e - } - - t := reflect.TypeOf(desc.ExtensionType) // pointer or slice to basic type or struct - tags := strings.Split(desc.Tag, ",") - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - sizer, marshaler := typeMarshaler(t, tags, false, false) - e = &marshalElemInfo{ - wiretag: uint64(tag)<<3 | wt, - tagsize: SizeVarint(uint64(tag) << 3), - sizer: sizer, - marshaler: marshaler, - isptr: t.Kind() == reflect.Ptr, - } - - // update cache - u.Lock() - if u.extElems == nil { - u.extElems = make(map[int32]*marshalElemInfo) - } - u.extElems[desc.Field] = e - u.Unlock() - return e -} - -// computeMarshalFieldInfo fills up the information to marshal a field. -func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) { - // parse protobuf tag of the field. - // tag has format of "bytes,49,opt,name=foo,def=hello!" - tags := strings.Split(f.Tag.Get("protobuf"), ",") - if tags[0] == "" { - return - } - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - if tags[2] == "req" { - fi.required = true - } - fi.setTag(f, tag, wt) - fi.setMarshaler(f, tags) -} - -func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) { - fi.field = toField(f) - fi.wiretag = 1<<31 - 1 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. - fi.isPointer = true - fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f) - fi.oneofElems = make(map[reflect.Type]*marshalElemInfo) - - ityp := f.Type // interface type - for _, o := range oneofImplementers { - t := reflect.TypeOf(o) - if !t.Implements(ityp) { - continue - } - sf := t.Elem().Field(0) // oneof implementer is a struct with a single field - tags := strings.Split(sf.Tag.Get("protobuf"), ",") - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - sizer, marshaler := typeMarshaler(sf.Type, tags, false, true) // oneof should not omit any zero value - fi.oneofElems[t.Elem()] = &marshalElemInfo{ - wiretag: uint64(tag)<<3 | wt, - tagsize: SizeVarint(uint64(tag) << 3), - sizer: sizer, - marshaler: marshaler, - } - } -} - -type oneofMessage interface { - XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) -} - -// wiretype returns the wire encoding of the type. -func wiretype(encoding string) uint64 { - switch encoding { - case "fixed32": - return WireFixed32 - case "fixed64": - return WireFixed64 - case "varint", "zigzag32", "zigzag64": - return WireVarint - case "bytes": - return WireBytes - case "group": - return WireStartGroup - } - panic("unknown wire type " + encoding) -} - -// setTag fills up the tag (in wire format) and its size in the info of a field. -func (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt uint64) { - fi.field = toField(f) - fi.wiretag = uint64(tag)<<3 | wt - fi.tagsize = SizeVarint(uint64(tag) << 3) -} - -// setMarshaler fills up the sizer and marshaler in the info of a field. -func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) { - switch f.Type.Kind() { - case reflect.Map: - // map field - fi.isPointer = true - fi.sizer, fi.marshaler = makeMapMarshaler(f) - return - case reflect.Ptr, reflect.Slice: - fi.isPointer = true - } - fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false) -} - -// typeMarshaler returns the sizer and marshaler of a given field. -// t is the type of the field. -// tags is the generated "protobuf" tag of the field. -// If nozero is true, zero value is not marshaled to the wire. -// If oneof is true, it is a oneof field. -func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, marshaler) { - encoding := tags[0] - - pointer := false - slice := false - if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { - slice = true - t = t.Elem() - } - if t.Kind() == reflect.Ptr { - pointer = true - t = t.Elem() - } - - packed := false - proto3 := false - for i := 2; i < len(tags); i++ { - if tags[i] == "packed" { - packed = true - } - if tags[i] == "proto3" { - proto3 = true - } - } - - switch t.Kind() { - case reflect.Bool: - if pointer { - return sizeBoolPtr, appendBoolPtr - } - if slice { - if packed { - return sizeBoolPackedSlice, appendBoolPackedSlice - } - return sizeBoolSlice, appendBoolSlice - } - if nozero { - return sizeBoolValueNoZero, appendBoolValueNoZero - } - return sizeBoolValue, appendBoolValue - case reflect.Uint32: - switch encoding { - case "fixed32": - if pointer { - return sizeFixed32Ptr, appendFixed32Ptr - } - if slice { - if packed { - return sizeFixed32PackedSlice, appendFixed32PackedSlice - } - return sizeFixed32Slice, appendFixed32Slice - } - if nozero { - return sizeFixed32ValueNoZero, appendFixed32ValueNoZero - } - return sizeFixed32Value, appendFixed32Value - case "varint": - if pointer { - return sizeVarint32Ptr, appendVarint32Ptr - } - if slice { - if packed { - return sizeVarint32PackedSlice, appendVarint32PackedSlice - } - return sizeVarint32Slice, appendVarint32Slice - } - if nozero { - return sizeVarint32ValueNoZero, appendVarint32ValueNoZero - } - return sizeVarint32Value, appendVarint32Value - } - case reflect.Int32: - switch encoding { - case "fixed32": - if pointer { - return sizeFixedS32Ptr, appendFixedS32Ptr - } - if slice { - if packed { - return sizeFixedS32PackedSlice, appendFixedS32PackedSlice - } - return sizeFixedS32Slice, appendFixedS32Slice - } - if nozero { - return sizeFixedS32ValueNoZero, appendFixedS32ValueNoZero - } - return sizeFixedS32Value, appendFixedS32Value - case "varint": - if pointer { - return sizeVarintS32Ptr, appendVarintS32Ptr - } - if slice { - if packed { - return sizeVarintS32PackedSlice, appendVarintS32PackedSlice - } - return sizeVarintS32Slice, appendVarintS32Slice - } - if nozero { - return sizeVarintS32ValueNoZero, appendVarintS32ValueNoZero - } - return sizeVarintS32Value, appendVarintS32Value - case "zigzag32": - if pointer { - return sizeZigzag32Ptr, appendZigzag32Ptr - } - if slice { - if packed { - return sizeZigzag32PackedSlice, appendZigzag32PackedSlice - } - return sizeZigzag32Slice, appendZigzag32Slice - } - if nozero { - return sizeZigzag32ValueNoZero, appendZigzag32ValueNoZero - } - return sizeZigzag32Value, appendZigzag32Value - } - case reflect.Uint64: - switch encoding { - case "fixed64": - if pointer { - return sizeFixed64Ptr, appendFixed64Ptr - } - if slice { - if packed { - return sizeFixed64PackedSlice, appendFixed64PackedSlice - } - return sizeFixed64Slice, appendFixed64Slice - } - if nozero { - return sizeFixed64ValueNoZero, appendFixed64ValueNoZero - } - return sizeFixed64Value, appendFixed64Value - case "varint": - if pointer { - return sizeVarint64Ptr, appendVarint64Ptr - } - if slice { - if packed { - return sizeVarint64PackedSlice, appendVarint64PackedSlice - } - return sizeVarint64Slice, appendVarint64Slice - } - if nozero { - return sizeVarint64ValueNoZero, appendVarint64ValueNoZero - } - return sizeVarint64Value, appendVarint64Value - } - case reflect.Int64: - switch encoding { - case "fixed64": - if pointer { - return sizeFixedS64Ptr, appendFixedS64Ptr - } - if slice { - if packed { - return sizeFixedS64PackedSlice, appendFixedS64PackedSlice - } - return sizeFixedS64Slice, appendFixedS64Slice - } - if nozero { - return sizeFixedS64ValueNoZero, appendFixedS64ValueNoZero - } - return sizeFixedS64Value, appendFixedS64Value - case "varint": - if pointer { - return sizeVarintS64Ptr, appendVarintS64Ptr - } - if slice { - if packed { - return sizeVarintS64PackedSlice, appendVarintS64PackedSlice - } - return sizeVarintS64Slice, appendVarintS64Slice - } - if nozero { - return sizeVarintS64ValueNoZero, appendVarintS64ValueNoZero - } - return sizeVarintS64Value, appendVarintS64Value - case "zigzag64": - if pointer { - return sizeZigzag64Ptr, appendZigzag64Ptr - } - if slice { - if packed { - return sizeZigzag64PackedSlice, appendZigzag64PackedSlice - } - return sizeZigzag64Slice, appendZigzag64Slice - } - if nozero { - return sizeZigzag64ValueNoZero, appendZigzag64ValueNoZero - } - return sizeZigzag64Value, appendZigzag64Value - } - case reflect.Float32: - if pointer { - return sizeFloat32Ptr, appendFloat32Ptr - } - if slice { - if packed { - return sizeFloat32PackedSlice, appendFloat32PackedSlice - } - return sizeFloat32Slice, appendFloat32Slice - } - if nozero { - return sizeFloat32ValueNoZero, appendFloat32ValueNoZero - } - return sizeFloat32Value, appendFloat32Value - case reflect.Float64: - if pointer { - return sizeFloat64Ptr, appendFloat64Ptr - } - if slice { - if packed { - return sizeFloat64PackedSlice, appendFloat64PackedSlice - } - return sizeFloat64Slice, appendFloat64Slice - } - if nozero { - return sizeFloat64ValueNoZero, appendFloat64ValueNoZero - } - return sizeFloat64Value, appendFloat64Value - case reflect.String: - if pointer { - return sizeStringPtr, appendStringPtr - } - if slice { - return sizeStringSlice, appendStringSlice - } - if nozero { - return sizeStringValueNoZero, appendStringValueNoZero - } - return sizeStringValue, appendStringValue - case reflect.Slice: - if slice { - return sizeBytesSlice, appendBytesSlice - } - if oneof { - // Oneof bytes field may also have "proto3" tag. - // We want to marshal it as a oneof field. Do this - // check before the proto3 check. - return sizeBytesOneof, appendBytesOneof - } - if proto3 { - return sizeBytes3, appendBytes3 - } - return sizeBytes, appendBytes - case reflect.Struct: - switch encoding { - case "group": - if slice { - return makeGroupSliceMarshaler(getMarshalInfo(t)) - } - return makeGroupMarshaler(getMarshalInfo(t)) - case "bytes": - if slice { - return makeMessageSliceMarshaler(getMarshalInfo(t)) - } - return makeMessageMarshaler(getMarshalInfo(t)) - } - } - panic(fmt.Sprintf("unknown or mismatched type: type: %v, wire type: %v", t, encoding)) -} - -// Below are functions to size/marshal a specific type of a field. -// They are stored in the field's info, and called by function pointers. -// They have type sizer or marshaler. - -func sizeFixed32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFixed32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFixed32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFixed32Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - return (4 + tagsize) * len(s) -} -func sizeFixed32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFixedS32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFixedS32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFixedS32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - return (4 + tagsize) * len(s) -} -func sizeFixedS32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFloat32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFloat32ValueNoZero(ptr pointer, tagsize int) int { - v := math.Float32bits(*ptr.toFloat32()) - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFloat32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toFloat32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFloat32Slice(ptr pointer, tagsize int) int { - s := *ptr.toFloat32Slice() - return (4 + tagsize) * len(s) -} -func sizeFloat32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toFloat32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFixed64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFixed64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFixed64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFixed64Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - return (8 + tagsize) * len(s) -} -func sizeFixed64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeFixedS64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFixedS64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFixedS64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - return (8 + tagsize) * len(s) -} -func sizeFixedS64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeFloat64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFloat64ValueNoZero(ptr pointer, tagsize int) int { - v := math.Float64bits(*ptr.toFloat64()) - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFloat64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toFloat64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFloat64Slice(ptr pointer, tagsize int) int { - s := *ptr.toFloat64Slice() - return (8 + tagsize) * len(s) -} -func sizeFloat64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toFloat64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeVarint32Value(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarint32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarint32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint32Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarint32Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarint32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarintS32Value(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarintS32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarintS32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarint64Value(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - return SizeVarint(v) + tagsize -} -func sizeVarint64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - if v == 0 { - return 0 - } - return SizeVarint(v) + tagsize -} -func sizeVarint64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint64Ptr() - if p == nil { - return 0 - } - return SizeVarint(*p) + tagsize -} -func sizeVarint64Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(v) + tagsize - } - return n -} -func sizeVarint64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(v) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarintS64Value(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarintS64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarintS64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeZigzag32Value(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - v := *p - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize - } - return n -} -func sizeZigzag32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31)))) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeZigzag64Value(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - v := *p - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize - } - return n -} -func sizeZigzag64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63))) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeBoolValue(_ pointer, tagsize int) int { - return 1 + tagsize -} -func sizeBoolValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toBool() - if !v { - return 0 - } - return 1 + tagsize -} -func sizeBoolPtr(ptr pointer, tagsize int) int { - p := *ptr.toBoolPtr() - if p == nil { - return 0 - } - return 1 + tagsize -} -func sizeBoolSlice(ptr pointer, tagsize int) int { - s := *ptr.toBoolSlice() - return (1 + tagsize) * len(s) -} -func sizeBoolPackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toBoolSlice() - if len(s) == 0 { - return 0 - } - return len(s) + SizeVarint(uint64(len(s))) + tagsize -} -func sizeStringValue(ptr pointer, tagsize int) int { - v := *ptr.toString() - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toString() - if v == "" { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringPtr(ptr pointer, tagsize int) int { - p := *ptr.toStringPtr() - if p == nil { - return 0 - } - v := *p - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringSlice(ptr pointer, tagsize int) int { - s := *ptr.toStringSlice() - n := 0 - for _, v := range s { - n += len(v) + SizeVarint(uint64(len(v))) + tagsize - } - return n -} -func sizeBytes(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - if v == nil { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytes3(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - if len(v) == 0 { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytesOneof(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytesSlice(ptr pointer, tagsize int) int { - s := *ptr.toBytesSlice() - n := 0 - for _, v := range s { - n += len(v) + SizeVarint(uint64(len(v))) + tagsize - } - return n -} - -// appendFixed32 appends an encoded fixed32 to b. -func appendFixed32(b []byte, v uint32) []byte { - b = append(b, - byte(v), - byte(v>>8), - byte(v>>16), - byte(v>>24)) - return b -} - -// appendFixed64 appends an encoded fixed64 to b. -func appendFixed64(b []byte, v uint64) []byte { - b = append(b, - byte(v), - byte(v>>8), - byte(v>>16), - byte(v>>24), - byte(v>>32), - byte(v>>40), - byte(v>>48), - byte(v>>56)) - return b -} - -// appendVarint appends an encoded varint to b. -func appendVarint(b []byte, v uint64) []byte { - // TODO: make 1-byte (maybe 2-byte) case inline-able, once we - // have non-leaf inliner. - switch { - case v < 1<<7: - b = append(b, byte(v)) - case v < 1<<14: - b = append(b, - byte(v&0x7f|0x80), - byte(v>>7)) - case v < 1<<21: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte(v>>14)) - case v < 1<<28: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte(v>>21)) - case v < 1<<35: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte(v>>28)) - case v < 1<<42: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte(v>>35)) - case v < 1<<49: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte(v>>42)) - case v < 1<<56: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte(v>>49)) - case v < 1<<63: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte(v>>56)) - default: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte((v>>56)&0x7f|0x80), - 1) - } - return b -} - -func appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, *p) - return b, nil -} -func appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - } - return b, nil -} -func appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, v) - } - return b, nil -} -func appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - return b, nil -} -func appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - return b, nil -} -func appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(*p)) - return b, nil -} -func appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - } - return b, nil -} -func appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, uint32(v)) - } - return b, nil -} -func appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float32bits(*ptr.toFloat32()) - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float32bits(*ptr.toFloat32()) - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toFloat32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, math.Float32bits(*p)) - return b, nil -} -func appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, math.Float32bits(v)) - } - return b, nil -} -func appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, math.Float32bits(v)) - } - return b, nil -} -func appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, *p) - return b, nil -} -func appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - } - return b, nil -} -func appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, v) - } - return b, nil -} -func appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - return b, nil -} -func appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - return b, nil -} -func appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(*p)) - return b, nil -} -func appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - } - return b, nil -} -func appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, uint64(v)) - } - return b, nil -} -func appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float64bits(*ptr.toFloat64()) - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float64bits(*ptr.toFloat64()) - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toFloat64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, math.Float64bits(*p)) - return b, nil -} -func appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, math.Float64bits(v)) - } - return b, nil -} -func appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, math.Float64bits(v)) - } - return b, nil -} -func appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - return b, nil -} -func appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - return b, nil -} -func appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, *p) - return b, nil -} -func appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - } - return b, nil -} -func appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(v) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, v) - } - return b, nil -} -func appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - v := *p - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - } - return b, nil -} -func appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31)))) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - } - return b, nil -} -func appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - v := *p - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - } - return b, nil -} -func appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63))) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - } - return b, nil -} -func appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBool() - b = appendVarint(b, wiretag) - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - return b, nil -} -func appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBool() - if !v { - return b, nil - } - b = appendVarint(b, wiretag) - b = append(b, 1) - return b, nil -} - -func appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toBoolPtr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - if *p { - b = append(b, 1) - } else { - b = append(b, 0) - } - return b, nil -} -func appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBoolSlice() - for _, v := range s { - b = appendVarint(b, wiretag) - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - } - return b, nil -} -func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBoolSlice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(len(s))) - for _, v := range s { - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - } - return b, nil -} -func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toString() - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toString() - if v == "" { - return b, nil - } - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toStringPtr() - if p == nil { - return b, nil - } - v := *p - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toStringSlice() - for _, v := range s { - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - } - return b, nil -} -func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - if v == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - if len(v) == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBytesSlice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - } - return b, nil -} - -// makeGroupMarshaler returns the sizer and marshaler for a group. -// u is the marshal info of the underlying message. -func makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - p := ptr.getPointer() - if p.isNil() { - return 0 - } - return u.size(p) + 2*tagsize - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - p := ptr.getPointer() - if p.isNil() { - return b, nil - } - var err error - b = appendVarint(b, wiretag) // start group - b, err = u.marshal(b, p, deterministic) - b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - return b, err - } -} - -// makeGroupSliceMarshaler returns the sizer and marshaler for a group slice. -// u is the marshal info of the underlying message. -func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - s := ptr.getPointerSlice() - n := 0 - for _, v := range s { - if v.isNil() { - continue - } - n += u.size(v) + 2*tagsize - } - return n - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - s := ptr.getPointerSlice() - var err, errreq error - for _, v := range s { - if v.isNil() { - return b, errRepeatedHasNil - } - b = appendVarint(b, wiretag) // start group - b, err = u.marshal(b, v, deterministic) - b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } - if err == ErrNil { - err = errRepeatedHasNil - } - return b, err - } - } - return b, errreq - } -} - -// makeMessageMarshaler returns the sizer and marshaler for a message field. -// u is the marshal info of the message. -func makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - p := ptr.getPointer() - if p.isNil() { - return 0 - } - siz := u.size(p) - return siz + SizeVarint(uint64(siz)) + tagsize - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - p := ptr.getPointer() - if p.isNil() { - return b, nil - } - b = appendVarint(b, wiretag) - siz := u.cachedsize(p) - b = appendVarint(b, uint64(siz)) - return u.marshal(b, p, deterministic) - } -} - -// makeMessageSliceMarshaler returns the sizer and marshaler for a message slice. -// u is the marshal info of the message. -func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - s := ptr.getPointerSlice() - n := 0 - for _, v := range s { - if v.isNil() { - continue - } - siz := u.size(v) - n += siz + SizeVarint(uint64(siz)) + tagsize - } - return n - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - s := ptr.getPointerSlice() - var err, errreq error - for _, v := range s { - if v.isNil() { - return b, errRepeatedHasNil - } - b = appendVarint(b, wiretag) - siz := u.cachedsize(v) - b = appendVarint(b, uint64(siz)) - b, err = u.marshal(b, v, deterministic) - - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } - if err == ErrNil { - err = errRepeatedHasNil - } - return b, err - } - } - return b, errreq - } -} - -// makeMapMarshaler returns the sizer and marshaler for a map field. -// f is the pointer to the reflect data structure of the field. -func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { - // figure out key and value type - t := f.Type - keyType := t.Key() - valType := t.Elem() - keyTags := strings.Split(f.Tag.Get("protobuf_key"), ",") - valTags := strings.Split(f.Tag.Get("protobuf_val"), ",") - keySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map - valSizer, valMarshaler := typeMarshaler(valType, valTags, false, false) // don't omit zero value in map - keyWireTag := 1<<3 | wiretype(keyTags[0]) - valWireTag := 2<<3 | wiretype(valTags[0]) - - // We create an interface to get the addresses of the map key and value. - // If value is pointer-typed, the interface is a direct interface, the - // idata itself is the value. Otherwise, the idata is the pointer to the - // value. - // Key cannot be pointer-typed. - valIsPtr := valType.Kind() == reflect.Ptr - return func(ptr pointer, tagsize int) int { - m := ptr.asPointerTo(t).Elem() // the map - n := 0 - for _, k := range m.MapKeys() { - ki := k.Interface() - vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) - n += siz + SizeVarint(uint64(siz)) + tagsize - } - return n - }, - func(b []byte, ptr pointer, tag uint64, deterministic bool) ([]byte, error) { - m := ptr.asPointerTo(t).Elem() // the map - var err error - keys := m.MapKeys() - if len(keys) > 1 && deterministic { - sort.Sort(mapKeys(keys)) - } - for _, k := range keys { - ki := k.Interface() - vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value - b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) - b = appendVarint(b, uint64(siz)) - b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if err != nil { - return b, err - } - b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != nil && err != ErrNil { // allow nil value in map - return b, err - } - } - return b, nil - } -} - -// makeOneOfMarshaler returns the sizer and marshaler for a oneof field. -// fi is the marshal info of the field. -// f is the pointer to the reflect data structure of the field. -func makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (sizer, marshaler) { - // Oneof field is an interface. We need to get the actual data type on the fly. - t := f.Type - return func(ptr pointer, _ int) int { - p := ptr.getInterfacePointer() - if p.isNil() { - return 0 - } - v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct - telem := v.Type() - e := fi.oneofElems[telem] - return e.sizer(p, e.tagsize) - }, - func(b []byte, ptr pointer, _ uint64, deterministic bool) ([]byte, error) { - p := ptr.getInterfacePointer() - if p.isNil() { - return b, nil - } - v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct - telem := v.Type() - if telem.Field(0).Type.Kind() == reflect.Ptr && p.getPointer().isNil() { - return b, errOneofHasNil - } - e := fi.oneofElems[telem] - return e.marshaler(b, p, e.wiretag, deterministic) - } -} - -// sizeExtensions computes the size of encoded data for a XXX_InternalExtensions field. -func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int { - m, mu := ext.extensionsRead() - if m == nil { - return 0 - } - mu.Lock() - - n := 0 - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - n += len(e.enc) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - n += ei.sizer(p, ei.tagsize) - } - mu.Unlock() - return n -} - -// appendExtensions marshals a XXX_InternalExtensions field to the end of byte slice b. -func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) { - m, mu := ext.extensionsRead() - if m == nil { - return b, nil - } - mu.Lock() - defer mu.Unlock() - - var err error - - // Fast-path for common cases: zero or one extensions. - // Don't bother sorting the keys. - if len(m) <= 1 { - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { - return b, err - } - } - return b, nil - } - - // Sort the keys to provide a deterministic encoding. - // Not sure this is required, but the old code does it. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - for _, k := range keys { - e := m[int32(k)] - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { - return b, err - } - } - return b, nil -} - -// message set format is: -// message MessageSet { -// repeated group Item = 1 { -// required int32 type_id = 2; -// required string message = 3; -// }; -// } - -// sizeMessageSet computes the size of encoded data for a XXX_InternalExtensions field -// in message set format (above). -func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int { - m, mu := ext.extensionsRead() - if m == nil { - return 0 - } - mu.Lock() - - n := 0 - for id, e := range m { - n += 2 // start group, end group. tag = 1 (size=1) - n += SizeVarint(uint64(id)) + 1 // type_id, tag = 2 (size=1) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - siz := len(msgWithLen) - n += siz + 1 // message, tag = 3 (size=1) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - n += ei.sizer(p, 1) // message, tag = 3 (size=1) - } - mu.Unlock() - return n -} - -// appendMessageSet marshals a XXX_InternalExtensions field in message set format (above) -// to the end of byte slice b. -func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) { - m, mu := ext.extensionsRead() - if m == nil { - return b, nil - } - mu.Lock() - defer mu.Unlock() - - var err error - - // Fast-path for common cases: zero or one extensions. - // Don't bother sorting the keys. - if len(m) <= 1 { - for id, e := range m { - b = append(b, 1<<3|WireStartGroup) - b = append(b, 2<<3|WireVarint) - b = appendVarint(b, uint64(id)) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - b = append(b, 3<<3|WireBytes) - b = append(b, msgWithLen...) - b = append(b, 1<<3|WireEndGroup) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if err != nil { - return b, err - } - b = append(b, 1<<3|WireEndGroup) - } - return b, nil - } - - // Sort the keys to provide a deterministic encoding. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - for _, id := range keys { - e := m[int32(id)] - b = append(b, 1<<3|WireStartGroup) - b = append(b, 2<<3|WireVarint) - b = appendVarint(b, uint64(id)) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - b = append(b, 3<<3|WireBytes) - b = append(b, msgWithLen...) - b = append(b, 1<<3|WireEndGroup) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - b = append(b, 1<<3|WireEndGroup) - if err != nil { - return b, err - } - } - return b, nil -} - -// sizeV1Extensions computes the size of encoded data for a V1-API extension field. -func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int { - if m == nil { - return 0 - } - - n := 0 - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - n += len(e.enc) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - n += ei.sizer(p, ei.tagsize) - } - return n -} - -// appendV1Extensions marshals a V1-API extension field to the end of byte slice b. -func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, deterministic bool) ([]byte, error) { - if m == nil { - return b, nil - } - - // Sort the keys to provide a deterministic encoding. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - var err error - for _, k := range keys { - e := m[int32(k)] - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { - return b, err - } - } - return b, nil -} - -// newMarshaler is the interface representing objects that can marshal themselves. -// -// This exists to support protoc-gen-go generated messages. -// The proto package will stop type-asserting to this interface in the future. -// -// DO NOT DEPEND ON THIS. -type newMarshaler interface { - XXX_Size() int - XXX_Marshal(b []byte, deterministic bool) ([]byte, error) -} - -// Size returns the encoded size of a protocol buffer message. -// This is the main entry point. -func Size(pb Message) int { - if m, ok := pb.(newMarshaler); ok { - return m.XXX_Size() - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - b, _ := m.Marshal() - return len(b) - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return 0 - } - var info InternalMessageInfo - return info.Size(pb) -} - -// Marshal takes a protocol buffer message -// and encodes it into the wire format, returning the data. -// This is the main entry point. -func Marshal(pb Message) ([]byte, error) { - if m, ok := pb.(newMarshaler); ok { - siz := m.XXX_Size() - b := make([]byte, 0, siz) - return m.XXX_Marshal(b, false) - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - return m.Marshal() - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return nil, ErrNil - } - var info InternalMessageInfo - siz := info.Size(pb) - b := make([]byte, 0, siz) - return info.Marshal(b, pb, false) -} - -// Marshal takes a protocol buffer message -// and encodes it into the wire format, writing the result to the -// Buffer. -// This is an alternative entry point. It is not necessary to use -// a Buffer for most applications. -func (p *Buffer) Marshal(pb Message) error { - var err error - if m, ok := pb.(newMarshaler); ok { - siz := m.XXX_Size() - p.grow(siz) // make sure buf has enough capacity - p.buf, err = m.XXX_Marshal(p.buf, p.deterministic) - return err - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - b, err := m.Marshal() - p.buf = append(p.buf, b...) - return err - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return ErrNil - } - var info InternalMessageInfo - siz := info.Size(pb) - p.grow(siz) // make sure buf has enough capacity - p.buf, err = info.Marshal(p.buf, pb, p.deterministic) - return err -} - -// grow grows the buffer's capacity, if necessary, to guarantee space for -// another n bytes. After grow(n), at least n bytes can be written to the -// buffer without another allocation. -func (p *Buffer) grow(n int) { - need := len(p.buf) + n - if need <= cap(p.buf) { - return - } - newCap := len(p.buf) * 2 - if newCap < need { - newCap = need - } - p.buf = append(make([]byte, 0, newCap), p.buf...) -} diff --git a/vendor/github.com/golang/protobuf/proto/table_merge.go b/vendor/github.com/golang/protobuf/proto/table_merge.go deleted file mode 100644 index 5525def6..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_merge.go +++ /dev/null @@ -1,654 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "fmt" - "reflect" - "strings" - "sync" - "sync/atomic" -) - -// Merge merges the src message into dst. -// This assumes that dst and src of the same type and are non-nil. -func (a *InternalMessageInfo) Merge(dst, src Message) { - mi := atomicLoadMergeInfo(&a.merge) - if mi == nil { - mi = getMergeInfo(reflect.TypeOf(dst).Elem()) - atomicStoreMergeInfo(&a.merge, mi) - } - mi.merge(toPointer(&dst), toPointer(&src)) -} - -type mergeInfo struct { - typ reflect.Type - - initialized int32 // 0: only typ is valid, 1: everything is valid - lock sync.Mutex - - fields []mergeFieldInfo - unrecognized field // Offset of XXX_unrecognized -} - -type mergeFieldInfo struct { - field field // Offset of field, guaranteed to be valid - - // isPointer reports whether the value in the field is a pointer. - // This is true for the following situations: - // * Pointer to struct - // * Pointer to basic type (proto2 only) - // * Slice (first value in slice header is a pointer) - // * String (first value in string header is a pointer) - isPointer bool - - // basicWidth reports the width of the field assuming that it is directly - // embedded in the struct (as is the case for basic types in proto3). - // The possible values are: - // 0: invalid - // 1: bool - // 4: int32, uint32, float32 - // 8: int64, uint64, float64 - basicWidth int - - // Where dst and src are pointers to the types being merged. - merge func(dst, src pointer) -} - -var ( - mergeInfoMap = map[reflect.Type]*mergeInfo{} - mergeInfoLock sync.Mutex -) - -func getMergeInfo(t reflect.Type) *mergeInfo { - mergeInfoLock.Lock() - defer mergeInfoLock.Unlock() - mi := mergeInfoMap[t] - if mi == nil { - mi = &mergeInfo{typ: t} - mergeInfoMap[t] = mi - } - return mi -} - -// merge merges src into dst assuming they are both of type *mi.typ. -func (mi *mergeInfo) merge(dst, src pointer) { - if dst.isNil() { - panic("proto: nil destination") - } - if src.isNil() { - return // Nothing to do. - } - - if atomic.LoadInt32(&mi.initialized) == 0 { - mi.computeMergeInfo() - } - - for _, fi := range mi.fields { - sfp := src.offset(fi.field) - - // As an optimization, we can avoid the merge function call cost - // if we know for sure that the source will have no effect - // by checking if it is the zero value. - if unsafeAllowed { - if fi.isPointer && sfp.getPointer().isNil() { // Could be slice or string - continue - } - if fi.basicWidth > 0 { - switch { - case fi.basicWidth == 1 && !*sfp.toBool(): - continue - case fi.basicWidth == 4 && *sfp.toUint32() == 0: - continue - case fi.basicWidth == 8 && *sfp.toUint64() == 0: - continue - } - } - } - - dfp := dst.offset(fi.field) - fi.merge(dfp, sfp) - } - - // TODO: Make this faster? - out := dst.asPointerTo(mi.typ).Elem() - in := src.asPointerTo(mi.typ).Elem() - if emIn, err := extendable(in.Addr().Interface()); err == nil { - emOut, _ := extendable(out.Addr().Interface()) - mIn, muIn := emIn.extensionsRead() - if mIn != nil { - mOut := emOut.extensionsWrite() - muIn.Lock() - mergeExtension(mOut, mIn) - muIn.Unlock() - } - } - - if mi.unrecognized.IsValid() { - if b := *src.offset(mi.unrecognized).toBytes(); len(b) > 0 { - *dst.offset(mi.unrecognized).toBytes() = append([]byte(nil), b...) - } - } -} - -func (mi *mergeInfo) computeMergeInfo() { - mi.lock.Lock() - defer mi.lock.Unlock() - if mi.initialized != 0 { - return - } - t := mi.typ - n := t.NumField() - - props := GetProperties(t) - for i := 0; i < n; i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - - mfi := mergeFieldInfo{field: toField(&f)} - tf := f.Type - - // As an optimization, we can avoid the merge function call cost - // if we know for sure that the source will have no effect - // by checking if it is the zero value. - if unsafeAllowed { - switch tf.Kind() { - case reflect.Ptr, reflect.Slice, reflect.String: - // As a special case, we assume slices and strings are pointers - // since we know that the first field in the SliceSlice or - // StringHeader is a data pointer. - mfi.isPointer = true - case reflect.Bool: - mfi.basicWidth = 1 - case reflect.Int32, reflect.Uint32, reflect.Float32: - mfi.basicWidth = 4 - case reflect.Int64, reflect.Uint64, reflect.Float64: - mfi.basicWidth = 8 - } - } - - // Unwrap tf to get at its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic("both pointer and slice for basic type in " + tf.Name()) - } - - switch tf.Kind() { - case reflect.Int32: - switch { - case isSlice: // E.g., []int32 - mfi.merge = func(dst, src pointer) { - // NOTE: toInt32Slice is not defined (see pointer_reflect.go). - /* - sfsp := src.toInt32Slice() - if *sfsp != nil { - dfsp := dst.toInt32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []int64{} - } - } - */ - sfs := src.getInt32Slice() - if sfs != nil { - dfs := dst.getInt32Slice() - dfs = append(dfs, sfs...) - if dfs == nil { - dfs = []int32{} - } - dst.setInt32Slice(dfs) - } - } - case isPointer: // E.g., *int32 - mfi.merge = func(dst, src pointer) { - // NOTE: toInt32Ptr is not defined (see pointer_reflect.go). - /* - sfpp := src.toInt32Ptr() - if *sfpp != nil { - dfpp := dst.toInt32Ptr() - if *dfpp == nil { - *dfpp = Int32(**sfpp) - } else { - **dfpp = **sfpp - } - } - */ - sfp := src.getInt32Ptr() - if sfp != nil { - dfp := dst.getInt32Ptr() - if dfp == nil { - dst.setInt32Ptr(*sfp) - } else { - *dfp = *sfp - } - } - } - default: // E.g., int32 - mfi.merge = func(dst, src pointer) { - if v := *src.toInt32(); v != 0 { - *dst.toInt32() = v - } - } - } - case reflect.Int64: - switch { - case isSlice: // E.g., []int64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toInt64Slice() - if *sfsp != nil { - dfsp := dst.toInt64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []int64{} - } - } - } - case isPointer: // E.g., *int64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toInt64Ptr() - if *sfpp != nil { - dfpp := dst.toInt64Ptr() - if *dfpp == nil { - *dfpp = Int64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., int64 - mfi.merge = func(dst, src pointer) { - if v := *src.toInt64(); v != 0 { - *dst.toInt64() = v - } - } - } - case reflect.Uint32: - switch { - case isSlice: // E.g., []uint32 - mfi.merge = func(dst, src pointer) { - sfsp := src.toUint32Slice() - if *sfsp != nil { - dfsp := dst.toUint32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []uint32{} - } - } - } - case isPointer: // E.g., *uint32 - mfi.merge = func(dst, src pointer) { - sfpp := src.toUint32Ptr() - if *sfpp != nil { - dfpp := dst.toUint32Ptr() - if *dfpp == nil { - *dfpp = Uint32(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., uint32 - mfi.merge = func(dst, src pointer) { - if v := *src.toUint32(); v != 0 { - *dst.toUint32() = v - } - } - } - case reflect.Uint64: - switch { - case isSlice: // E.g., []uint64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toUint64Slice() - if *sfsp != nil { - dfsp := dst.toUint64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []uint64{} - } - } - } - case isPointer: // E.g., *uint64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toUint64Ptr() - if *sfpp != nil { - dfpp := dst.toUint64Ptr() - if *dfpp == nil { - *dfpp = Uint64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., uint64 - mfi.merge = func(dst, src pointer) { - if v := *src.toUint64(); v != 0 { - *dst.toUint64() = v - } - } - } - case reflect.Float32: - switch { - case isSlice: // E.g., []float32 - mfi.merge = func(dst, src pointer) { - sfsp := src.toFloat32Slice() - if *sfsp != nil { - dfsp := dst.toFloat32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []float32{} - } - } - } - case isPointer: // E.g., *float32 - mfi.merge = func(dst, src pointer) { - sfpp := src.toFloat32Ptr() - if *sfpp != nil { - dfpp := dst.toFloat32Ptr() - if *dfpp == nil { - *dfpp = Float32(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., float32 - mfi.merge = func(dst, src pointer) { - if v := *src.toFloat32(); v != 0 { - *dst.toFloat32() = v - } - } - } - case reflect.Float64: - switch { - case isSlice: // E.g., []float64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toFloat64Slice() - if *sfsp != nil { - dfsp := dst.toFloat64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []float64{} - } - } - } - case isPointer: // E.g., *float64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toFloat64Ptr() - if *sfpp != nil { - dfpp := dst.toFloat64Ptr() - if *dfpp == nil { - *dfpp = Float64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., float64 - mfi.merge = func(dst, src pointer) { - if v := *src.toFloat64(); v != 0 { - *dst.toFloat64() = v - } - } - } - case reflect.Bool: - switch { - case isSlice: // E.g., []bool - mfi.merge = func(dst, src pointer) { - sfsp := src.toBoolSlice() - if *sfsp != nil { - dfsp := dst.toBoolSlice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []bool{} - } - } - } - case isPointer: // E.g., *bool - mfi.merge = func(dst, src pointer) { - sfpp := src.toBoolPtr() - if *sfpp != nil { - dfpp := dst.toBoolPtr() - if *dfpp == nil { - *dfpp = Bool(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., bool - mfi.merge = func(dst, src pointer) { - if v := *src.toBool(); v { - *dst.toBool() = v - } - } - } - case reflect.String: - switch { - case isSlice: // E.g., []string - mfi.merge = func(dst, src pointer) { - sfsp := src.toStringSlice() - if *sfsp != nil { - dfsp := dst.toStringSlice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []string{} - } - } - } - case isPointer: // E.g., *string - mfi.merge = func(dst, src pointer) { - sfpp := src.toStringPtr() - if *sfpp != nil { - dfpp := dst.toStringPtr() - if *dfpp == nil { - *dfpp = String(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., string - mfi.merge = func(dst, src pointer) { - if v := *src.toString(); v != "" { - *dst.toString() = v - } - } - } - case reflect.Slice: - isProto3 := props.Prop[i].proto3 - switch { - case isPointer: - panic("bad pointer in byte slice case in " + tf.Name()) - case tf.Elem().Kind() != reflect.Uint8: - panic("bad element kind in byte slice case in " + tf.Name()) - case isSlice: // E.g., [][]byte - mfi.merge = func(dst, src pointer) { - sbsp := src.toBytesSlice() - if *sbsp != nil { - dbsp := dst.toBytesSlice() - for _, sb := range *sbsp { - if sb == nil { - *dbsp = append(*dbsp, nil) - } else { - *dbsp = append(*dbsp, append([]byte{}, sb...)) - } - } - if *dbsp == nil { - *dbsp = [][]byte{} - } - } - } - default: // E.g., []byte - mfi.merge = func(dst, src pointer) { - sbp := src.toBytes() - if *sbp != nil { - dbp := dst.toBytes() - if !isProto3 || len(*sbp) > 0 { - *dbp = append([]byte{}, *sbp...) - } - } - } - } - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("message field %s without pointer", tf)) - case isSlice: // E.g., []*pb.T - mi := getMergeInfo(tf) - mfi.merge = func(dst, src pointer) { - sps := src.getPointerSlice() - if sps != nil { - dps := dst.getPointerSlice() - for _, sp := range sps { - var dp pointer - if !sp.isNil() { - dp = valToPointer(reflect.New(tf)) - mi.merge(dp, sp) - } - dps = append(dps, dp) - } - if dps == nil { - dps = []pointer{} - } - dst.setPointerSlice(dps) - } - } - default: // E.g., *pb.T - mi := getMergeInfo(tf) - mfi.merge = func(dst, src pointer) { - sp := src.getPointer() - if !sp.isNil() { - dp := dst.getPointer() - if dp.isNil() { - dp = valToPointer(reflect.New(tf)) - dst.setPointer(dp) - } - mi.merge(dp, sp) - } - } - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic("bad pointer or slice in map case in " + tf.Name()) - default: // E.g., map[K]V - mfi.merge = func(dst, src pointer) { - sm := src.asPointerTo(tf).Elem() - if sm.Len() == 0 { - return - } - dm := dst.asPointerTo(tf).Elem() - if dm.IsNil() { - dm.Set(reflect.MakeMap(tf)) - } - - switch tf.Elem().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - val = reflect.ValueOf(Clone(val.Interface().(Message))) - dm.SetMapIndex(key, val) - } - case reflect.Slice: // E.g. Bytes type (e.g., []byte) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - val = reflect.ValueOf(append([]byte{}, val.Bytes()...)) - dm.SetMapIndex(key, val) - } - default: // Basic type (e.g., string) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - dm.SetMapIndex(key, val) - } - } - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic("bad pointer or slice in interface case in " + tf.Name()) - default: // E.g., interface{} - // TODO: Make this faster? - mfi.merge = func(dst, src pointer) { - su := src.asPointerTo(tf).Elem() - if !su.IsNil() { - du := dst.asPointerTo(tf).Elem() - typ := su.Elem().Type() - if du.IsNil() || du.Elem().Type() != typ { - du.Set(reflect.New(typ.Elem())) // Initialize interface if empty - } - sv := su.Elem().Elem().Field(0) - if sv.Kind() == reflect.Ptr && sv.IsNil() { - return - } - dv := du.Elem().Elem().Field(0) - if dv.Kind() == reflect.Ptr && dv.IsNil() { - dv.Set(reflect.New(sv.Type().Elem())) // Initialize proto message if empty - } - switch sv.Type().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - Merge(dv.Interface().(Message), sv.Interface().(Message)) - case reflect.Slice: // E.g. Bytes type (e.g., []byte) - dv.Set(reflect.ValueOf(append([]byte{}, sv.Bytes()...))) - default: // Basic type (e.g., string) - dv.Set(sv) - } - } - } - } - default: - panic(fmt.Sprintf("merger not found for type:%s", tf)) - } - mi.fields = append(mi.fields, mfi) - } - - mi.unrecognized = invalidField - if f, ok := t.FieldByName("XXX_unrecognized"); ok { - if f.Type != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - mi.unrecognized = toField(&f) - } - - atomic.StoreInt32(&mi.initialized, 1) -} diff --git a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go deleted file mode 100644 index 55f0340a..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go +++ /dev/null @@ -1,1967 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "errors" - "fmt" - "io" - "math" - "reflect" - "strconv" - "strings" - "sync" - "sync/atomic" - "unicode/utf8" -) - -// Unmarshal is the entry point from the generated .pb.go files. -// This function is not intended to be used by non-generated code. -// This function is not subject to any compatibility guarantee. -// msg contains a pointer to a protocol buffer struct. -// b is the data to be unmarshaled into the protocol buffer. -// a is a pointer to a place to store cached unmarshal information. -func (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error { - // Load the unmarshal information for this message type. - // The atomic load ensures memory consistency. - u := atomicLoadUnmarshalInfo(&a.unmarshal) - if u == nil { - // Slow path: find unmarshal info for msg, update a with it. - u = getUnmarshalInfo(reflect.TypeOf(msg).Elem()) - atomicStoreUnmarshalInfo(&a.unmarshal, u) - } - // Then do the unmarshaling. - err := u.unmarshal(toPointer(&msg), b) - return err -} - -type unmarshalInfo struct { - typ reflect.Type // type of the protobuf struct - - // 0 = only typ field is initialized - // 1 = completely initialized - initialized int32 - lock sync.Mutex // prevents double initialization - dense []unmarshalFieldInfo // fields indexed by tag # - sparse map[uint64]unmarshalFieldInfo // fields indexed by tag # - reqFields []string // names of required fields - reqMask uint64 // 1<<len(reqFields)-1 - unrecognized field // offset of []byte to put unrecognized data (or invalidField if we should throw it away) - extensions field // offset of extensions field (of type proto.XXX_InternalExtensions), or invalidField if it does not exist - oldExtensions field // offset of old-form extensions field (of type map[int]Extension) - extensionRanges []ExtensionRange // if non-nil, implies extensions field is valid - isMessageSet bool // if true, implies extensions field is valid -} - -// An unmarshaler takes a stream of bytes and a pointer to a field of a message. -// It decodes the field, stores it at f, and returns the unused bytes. -// w is the wire encoding. -// b is the data after the tag and wire encoding have been read. -type unmarshaler func(b []byte, f pointer, w int) ([]byte, error) - -type unmarshalFieldInfo struct { - // location of the field in the proto message structure. - field field - - // function to unmarshal the data for the field. - unmarshal unmarshaler - - // if a required field, contains a single set bit at this field's index in the required field list. - reqMask uint64 -} - -var ( - unmarshalInfoMap = map[reflect.Type]*unmarshalInfo{} - unmarshalInfoLock sync.Mutex -) - -// getUnmarshalInfo returns the data structure which can be -// subsequently used to unmarshal a message of the given type. -// t is the type of the message (note: not pointer to message). -func getUnmarshalInfo(t reflect.Type) *unmarshalInfo { - // It would be correct to return a new unmarshalInfo - // unconditionally. We would end up allocating one - // per occurrence of that type as a message or submessage. - // We use a cache here just to reduce memory usage. - unmarshalInfoLock.Lock() - defer unmarshalInfoLock.Unlock() - u := unmarshalInfoMap[t] - if u == nil { - u = &unmarshalInfo{typ: t} - // Note: we just set the type here. The rest of the fields - // will be initialized on first use. - unmarshalInfoMap[t] = u - } - return u -} - -// unmarshal does the main work of unmarshaling a message. -// u provides type information used to unmarshal the message. -// m is a pointer to a protocol buffer message. -// b is a byte stream to unmarshal into m. -// This is top routine used when recursively unmarshaling submessages. -func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { - if atomic.LoadInt32(&u.initialized) == 0 { - u.computeUnmarshalInfo() - } - if u.isMessageSet { - return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) - } - var reqMask uint64 // bitmask of required fields we've seen. - var rnse *RequiredNotSetError // an instance of a RequiredNotSetError returned by a submessage. - for len(b) > 0 { - // Read tag and wire type. - // Special case 1 and 2 byte varints. - var x uint64 - if b[0] < 128 { - x = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - x = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - x, n = decodeVarint(b) - if n == 0 { - return io.ErrUnexpectedEOF - } - b = b[n:] - } - tag := x >> 3 - wire := int(x) & 7 - - // Dispatch on the tag to one of the unmarshal* functions below. - var f unmarshalFieldInfo - if tag < uint64(len(u.dense)) { - f = u.dense[tag] - } else { - f = u.sparse[tag] - } - if fn := f.unmarshal; fn != nil { - var err error - b, err = fn(b, m.offset(f.field), wire) - if err == nil { - reqMask |= f.reqMask - continue - } - if r, ok := err.(*RequiredNotSetError); ok { - // Remember this error, but keep parsing. We need to produce - // a full parse even if a required field is missing. - rnse = r - reqMask |= f.reqMask - continue - } - if err != errInternalBadWireType { - return err - } - // Fragments with bad wire type are treated as unknown fields. - } - - // Unknown tag. - if !u.unrecognized.IsValid() { - // Don't keep unrecognized data; just skip it. - var err error - b, err = skipField(b, wire) - if err != nil { - return err - } - continue - } - // Keep unrecognized data around. - // maybe in extensions, maybe in the unrecognized field. - z := m.offset(u.unrecognized).toBytes() - var emap map[int32]Extension - var e Extension - for _, r := range u.extensionRanges { - if uint64(r.Start) <= tag && tag <= uint64(r.End) { - if u.extensions.IsValid() { - mp := m.offset(u.extensions).toExtensions() - emap = mp.extensionsWrite() - e = emap[int32(tag)] - z = &e.enc - break - } - if u.oldExtensions.IsValid() { - p := m.offset(u.oldExtensions).toOldExtensions() - emap = *p - if emap == nil { - emap = map[int32]Extension{} - *p = emap - } - e = emap[int32(tag)] - z = &e.enc - break - } - panic("no extensions field available") - } - } - - // Use wire type to skip data. - var err error - b0 := b - b, err = skipField(b, wire) - if err != nil { - return err - } - *z = encodeVarint(*z, tag<<3|uint64(wire)) - *z = append(*z, b0[:len(b0)-len(b)]...) - - if emap != nil { - emap[int32(tag)] = e - } - } - if rnse != nil { - // A required field of a submessage/group is missing. Return that error. - return rnse - } - if reqMask != u.reqMask { - // A required field of this message is missing. - for _, n := range u.reqFields { - if reqMask&1 == 0 { - return &RequiredNotSetError{n} - } - reqMask >>= 1 - } - } - return nil -} - -// computeUnmarshalInfo fills in u with information for use -// in unmarshaling protocol buffers of type u.typ. -func (u *unmarshalInfo) computeUnmarshalInfo() { - u.lock.Lock() - defer u.lock.Unlock() - if u.initialized != 0 { - return - } - t := u.typ - n := t.NumField() - - // Set up the "not found" value for the unrecognized byte buffer. - // This is the default for proto3. - u.unrecognized = invalidField - u.extensions = invalidField - u.oldExtensions = invalidField - - // List of the generated type and offset for each oneof field. - type oneofField struct { - ityp reflect.Type // interface type of oneof field - field field // offset in containing message - } - var oneofFields []oneofField - - for i := 0; i < n; i++ { - f := t.Field(i) - if f.Name == "XXX_unrecognized" { - // The byte slice used to hold unrecognized input is special. - if f.Type != reflect.TypeOf(([]byte)(nil)) { - panic("bad type for XXX_unrecognized field: " + f.Type.Name()) - } - u.unrecognized = toField(&f) - continue - } - if f.Name == "XXX_InternalExtensions" { - // Ditto here. - if f.Type != reflect.TypeOf(XXX_InternalExtensions{}) { - panic("bad type for XXX_InternalExtensions field: " + f.Type.Name()) - } - u.extensions = toField(&f) - if f.Tag.Get("protobuf_messageset") == "1" { - u.isMessageSet = true - } - continue - } - if f.Name == "XXX_extensions" { - // An older form of the extensions field. - if f.Type != reflect.TypeOf((map[int32]Extension)(nil)) { - panic("bad type for XXX_extensions field: " + f.Type.Name()) - } - u.oldExtensions = toField(&f) - continue - } - if f.Name == "XXX_NoUnkeyedLiteral" || f.Name == "XXX_sizecache" { - continue - } - - oneof := f.Tag.Get("protobuf_oneof") - if oneof != "" { - oneofFields = append(oneofFields, oneofField{f.Type, toField(&f)}) - // The rest of oneof processing happens below. - continue - } - - tags := f.Tag.Get("protobuf") - tagArray := strings.Split(tags, ",") - if len(tagArray) < 2 { - panic("protobuf tag not enough fields in " + t.Name() + "." + f.Name + ": " + tags) - } - tag, err := strconv.Atoi(tagArray[1]) - if err != nil { - panic("protobuf tag field not an integer: " + tagArray[1]) - } - - name := "" - for _, tag := range tagArray[3:] { - if strings.HasPrefix(tag, "name=") { - name = tag[5:] - } - } - - // Extract unmarshaling function from the field (its type and tags). - unmarshal := fieldUnmarshaler(&f) - - // Required field? - var reqMask uint64 - if tagArray[2] == "req" { - bit := len(u.reqFields) - u.reqFields = append(u.reqFields, name) - reqMask = uint64(1) << uint(bit) - // TODO: if we have more than 64 required fields, we end up - // not verifying that all required fields are present. - // Fix this, perhaps using a count of required fields? - } - - // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask) - } - - // Find any types associated with oneof fields. - // TODO: XXX_OneofFuncs returns more info than we need. Get rid of some of it? - fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("XXX_OneofFuncs") - if fn.IsValid() { - res := fn.Call(nil)[3] // last return value from XXX_OneofFuncs: []interface{} - for i := res.Len() - 1; i >= 0; i-- { - v := res.Index(i) // interface{} - tptr := reflect.ValueOf(v.Interface()).Type() // *Msg_X - typ := tptr.Elem() // Msg_X - - f := typ.Field(0) // oneof implementers have one field - baseUnmarshal := fieldUnmarshaler(&f) - tagstr := strings.Split(f.Tag.Get("protobuf"), ",")[1] - tag, err := strconv.Atoi(tagstr) - if err != nil { - panic("protobuf tag field not an integer: " + tagstr) - } - - // Find the oneof field that this struct implements. - // Might take O(n^2) to process all of the oneofs, but who cares. - for _, of := range oneofFields { - if tptr.Implements(of.ityp) { - // We have found the corresponding interface for this struct. - // That lets us know where this struct should be stored - // when we encounter it during unmarshaling. - unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(tag, of.field, unmarshal, 0) - } - } - } - } - - // Get extension ranges, if any. - fn = reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray") - if fn.IsValid() { - if !u.extensions.IsValid() && !u.oldExtensions.IsValid() { - panic("a message with extensions, but no extensions field in " + t.Name()) - } - u.extensionRanges = fn.Call(nil)[0].Interface().([]ExtensionRange) - } - - // Explicitly disallow tag 0. This will ensure we flag an error - // when decoding a buffer of all zeros. Without this code, we - // would decode and skip an all-zero buffer of even length. - // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. - u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { - return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0) - - // Set mask for required field check. - u.reqMask = uint64(1)<<uint(len(u.reqFields)) - 1 - - atomic.StoreInt32(&u.initialized, 1) -} - -// setTag stores the unmarshal information for the given tag. -// tag = tag # for field -// field/unmarshal = unmarshal info for that field. -// reqMask = if required, bitmask for field position in required field list. 0 otherwise. -func (u *unmarshalInfo) setTag(tag int, field field, unmarshal unmarshaler, reqMask uint64) { - i := unmarshalFieldInfo{field: field, unmarshal: unmarshal, reqMask: reqMask} - n := u.typ.NumField() - if tag >= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? - for len(u.dense) <= tag { - u.dense = append(u.dense, unmarshalFieldInfo{}) - } - u.dense[tag] = i - return - } - if u.sparse == nil { - u.sparse = map[uint64]unmarshalFieldInfo{} - } - u.sparse[uint64(tag)] = i -} - -// fieldUnmarshaler returns an unmarshaler for the given field. -func fieldUnmarshaler(f *reflect.StructField) unmarshaler { - if f.Type.Kind() == reflect.Map { - return makeUnmarshalMap(f) - } - return typeUnmarshaler(f.Type, f.Tag.Get("protobuf")) -} - -// typeUnmarshaler returns an unmarshaler for the given field type / field tag pair. -func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { - tagArray := strings.Split(tags, ",") - encoding := tagArray[0] - name := "unknown" - for _, tag := range tagArray[3:] { - if strings.HasPrefix(tag, "name=") { - name = tag[5:] - } - } - - // Figure out packaging (pointer, slice, or both) - slice := false - pointer := false - if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { - slice = true - t = t.Elem() - } - if t.Kind() == reflect.Ptr { - pointer = true - t = t.Elem() - } - - // We'll never have both pointer and slice for basic types. - if pointer && slice && t.Kind() != reflect.Struct { - panic("both pointer and slice for basic type in " + t.Name()) - } - - switch t.Kind() { - case reflect.Bool: - if pointer { - return unmarshalBoolPtr - } - if slice { - return unmarshalBoolSlice - } - return unmarshalBoolValue - case reflect.Int32: - switch encoding { - case "fixed32": - if pointer { - return unmarshalFixedS32Ptr - } - if slice { - return unmarshalFixedS32Slice - } - return unmarshalFixedS32Value - case "varint": - // this could be int32 or enum - if pointer { - return unmarshalInt32Ptr - } - if slice { - return unmarshalInt32Slice - } - return unmarshalInt32Value - case "zigzag32": - if pointer { - return unmarshalSint32Ptr - } - if slice { - return unmarshalSint32Slice - } - return unmarshalSint32Value - } - case reflect.Int64: - switch encoding { - case "fixed64": - if pointer { - return unmarshalFixedS64Ptr - } - if slice { - return unmarshalFixedS64Slice - } - return unmarshalFixedS64Value - case "varint": - if pointer { - return unmarshalInt64Ptr - } - if slice { - return unmarshalInt64Slice - } - return unmarshalInt64Value - case "zigzag64": - if pointer { - return unmarshalSint64Ptr - } - if slice { - return unmarshalSint64Slice - } - return unmarshalSint64Value - } - case reflect.Uint32: - switch encoding { - case "fixed32": - if pointer { - return unmarshalFixed32Ptr - } - if slice { - return unmarshalFixed32Slice - } - return unmarshalFixed32Value - case "varint": - if pointer { - return unmarshalUint32Ptr - } - if slice { - return unmarshalUint32Slice - } - return unmarshalUint32Value - } - case reflect.Uint64: - switch encoding { - case "fixed64": - if pointer { - return unmarshalFixed64Ptr - } - if slice { - return unmarshalFixed64Slice - } - return unmarshalFixed64Value - case "varint": - if pointer { - return unmarshalUint64Ptr - } - if slice { - return unmarshalUint64Slice - } - return unmarshalUint64Value - } - case reflect.Float32: - if pointer { - return unmarshalFloat32Ptr - } - if slice { - return unmarshalFloat32Slice - } - return unmarshalFloat32Value - case reflect.Float64: - if pointer { - return unmarshalFloat64Ptr - } - if slice { - return unmarshalFloat64Slice - } - return unmarshalFloat64Value - case reflect.Map: - panic("map type in typeUnmarshaler in " + t.Name()) - case reflect.Slice: - if pointer { - panic("bad pointer in slice case in " + t.Name()) - } - if slice { - return unmarshalBytesSlice - } - return unmarshalBytesValue - case reflect.String: - if pointer { - return unmarshalStringPtr - } - if slice { - return unmarshalStringSlice - } - return unmarshalStringValue - case reflect.Struct: - // message or group field - if !pointer { - panic(fmt.Sprintf("message/group field %s:%s without pointer", t, encoding)) - } - switch encoding { - case "bytes": - if slice { - return makeUnmarshalMessageSlicePtr(getUnmarshalInfo(t), name) - } - return makeUnmarshalMessagePtr(getUnmarshalInfo(t), name) - case "group": - if slice { - return makeUnmarshalGroupSlicePtr(getUnmarshalInfo(t), name) - } - return makeUnmarshalGroupPtr(getUnmarshalInfo(t), name) - } - } - panic(fmt.Sprintf("unmarshaler not found type:%s encoding:%s", t, encoding)) -} - -// Below are all the unmarshalers for individual fields of various types. - -func unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - *f.toInt64() = v - return b, nil -} - -func unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - *f.toInt64Ptr() = &v - return b, nil -} - -func unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - s := f.toInt64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - s := f.toInt64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - *f.toInt64() = v - return b, nil -} - -func unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - *f.toInt64Ptr() = &v - return b, nil -} - -func unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - s := f.toInt64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - s := f.toInt64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - *f.toUint64() = v - return b, nil -} - -func unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - *f.toUint64Ptr() = &v - return b, nil -} - -func unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - s := f.toUint64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - s := f.toUint64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - *f.toInt32() = v - return b, nil -} - -func unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.setInt32Ptr(v) - return b, nil -} - -func unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.appendInt32Slice(v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.appendInt32Slice(v) - return b, nil -} - -func unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - *f.toInt32() = v - return b, nil -} - -func unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.setInt32Ptr(v) - return b, nil -} - -func unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.appendInt32Slice(v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.appendInt32Slice(v) - return b, nil -} - -func unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - *f.toUint32() = v - return b, nil -} - -func unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - *f.toUint32Ptr() = &v - return b, nil -} - -func unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - s := f.toUint32Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - s := f.toUint32Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - *f.toUint64() = v - return b[8:], nil -} - -func unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - *f.toUint64Ptr() = &v - return b[8:], nil -} - -func unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - s := f.toUint64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - s := f.toUint64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - *f.toInt64() = v - return b[8:], nil -} - -func unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - *f.toInt64Ptr() = &v - return b[8:], nil -} - -func unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - s := f.toInt64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - s := f.toInt64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - *f.toUint32() = v - return b[4:], nil -} - -func unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - *f.toUint32Ptr() = &v - return b[4:], nil -} - -func unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - s := f.toUint32Slice() - *s = append(*s, v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - s := f.toUint32Slice() - *s = append(*s, v) - return b[4:], nil -} - -func unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - *f.toInt32() = v - return b[4:], nil -} - -func unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.setInt32Ptr(v) - return b[4:], nil -} - -func unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.appendInt32Slice(v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.appendInt32Slice(v) - return b[4:], nil -} - -func unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - // Note: any length varint is allowed, even though any sane - // encoder will use one byte. - // See https://github.com/golang/protobuf/issues/76 - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - // TODO: check if x>1? Tests seem to indicate no. - v := x != 0 - *f.toBool() = v - return b[n:], nil -} - -func unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - *f.toBoolPtr() = &v - return b[n:], nil -} - -func unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - s := f.toBoolSlice() - *s = append(*s, v) - b = b[n:] - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - s := f.toBoolSlice() - *s = append(*s, v) - return b[n:], nil -} - -func unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - *f.toFloat64() = v - return b[8:], nil -} - -func unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - *f.toFloat64Ptr() = &v - return b[8:], nil -} - -func unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - s := f.toFloat64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - s := f.toFloat64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - *f.toFloat32() = v - return b[4:], nil -} - -func unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - *f.toFloat32Ptr() = &v - return b[4:], nil -} - -func unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - s := f.toFloat32Slice() - *s = append(*s, v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - s := f.toFloat32Slice() - *s = append(*s, v) - return b[4:], nil -} - -func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - *f.toString() = v - return b[x:], nil -} - -func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - *f.toStringPtr() = &v - return b[x:], nil -} - -func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } - s := f.toStringSlice() - *s = append(*s, v) - return b[x:], nil -} - -var emptyBuf [0]byte - -func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - // The use of append here is a trick which avoids the zeroing - // that would be required if we used a make/copy pair. - // We append to emptyBuf instead of nil because we want - // a non-nil result even when the length is 0. - v := append(emptyBuf[:], b[:x]...) - *f.toBytes() = v - return b[x:], nil -} - -func unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := append(emptyBuf[:], b[:x]...) - s := f.toBytesSlice() - *s = append(*s, v) - return b[x:], nil -} - -func makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - // First read the message field to see if something is there. - // The semantics of multiple submessages are weird. Instead of - // the last one winning (as it is for all other fields), multiple - // submessages are merged. - v := f.getPointer() - if v.isNil() { - v = valToPointer(reflect.New(sub.typ)) - f.setPointer(v) - } - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - return b[x:], err - } -} - -func makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := valToPointer(reflect.New(sub.typ)) - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - f.appendPointer(v) - return b[x:], err - } -} - -func makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireStartGroup { - return b, errInternalBadWireType - } - x, y := findEndGroup(b) - if x < 0 { - return nil, io.ErrUnexpectedEOF - } - v := f.getPointer() - if v.isNil() { - v = valToPointer(reflect.New(sub.typ)) - f.setPointer(v) - } - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - return b[y:], err - } -} - -func makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireStartGroup { - return b, errInternalBadWireType - } - x, y := findEndGroup(b) - if x < 0 { - return nil, io.ErrUnexpectedEOF - } - v := valToPointer(reflect.New(sub.typ)) - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - f.appendPointer(v) - return b[y:], err - } -} - -func makeUnmarshalMap(f *reflect.StructField) unmarshaler { - t := f.Type - kt := t.Key() - vt := t.Elem() - unmarshalKey := typeUnmarshaler(kt, f.Tag.Get("protobuf_key")) - unmarshalVal := typeUnmarshaler(vt, f.Tag.Get("protobuf_val")) - return func(b []byte, f pointer, w int) ([]byte, error) { - // The map entry is a submessage. Figure out how big it is. - if w != WireBytes { - return nil, fmt.Errorf("proto: bad wiretype for map field: got %d want %d", w, WireBytes) - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - r := b[x:] // unused data to return - b = b[:x] // data for map entry - - // Note: we could use #keys * #values ~= 200 functions - // to do map decoding without reflection. Probably not worth it. - // Maps will be somewhat slow. Oh well. - - // Read key and value from data. - k := reflect.New(kt) - v := reflect.New(vt) - for len(b) > 0 { - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - wire := int(x) & 7 - b = b[n:] - - var err error - switch x >> 3 { - case 1: - b, err = unmarshalKey(b, valToPointer(k), wire) - case 2: - b, err = unmarshalVal(b, valToPointer(v), wire) - default: - err = errInternalBadWireType // skip unknown tag - } - - if err == nil { - continue - } - if err != errInternalBadWireType { - return nil, err - } - - // Skip past unknown fields. - b, err = skipField(b, wire) - if err != nil { - return nil, err - } - } - - // Get map, allocate if needed. - m := f.asPointerTo(t).Elem() // an addressable map[K]T - if m.IsNil() { - m.Set(reflect.MakeMap(t)) - } - - // Insert into map. - m.SetMapIndex(k.Elem(), v.Elem()) - - return r, nil - } -} - -// makeUnmarshalOneof makes an unmarshaler for oneof fields. -// for: -// message Msg { -// oneof F { -// int64 X = 1; -// float64 Y = 2; -// } -// } -// typ is the type of the concrete entry for a oneof case (e.g. Msg_X). -// ityp is the interface type of the oneof field (e.g. isMsg_F). -// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64). -// Note that this function will be called once for each case in the oneof. -func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshaler { - sf := typ.Field(0) - field0 := toField(&sf) - return func(b []byte, f pointer, w int) ([]byte, error) { - // Allocate holder for value. - v := reflect.New(typ) - - // Unmarshal data into holder. - // We unmarshal into the first field of the holder object. - var err error - b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if err != nil { - return nil, err - } - - // Write pointer to holder into target field. - f.asPointerTo(ityp).Elem().Set(v) - - return b, nil - } -} - -// Error used by decode internally. -var errInternalBadWireType = errors.New("proto: internal error: bad wiretype") - -// skipField skips past a field of type wire and returns the remaining bytes. -func skipField(b []byte, wire int) ([]byte, error) { - switch wire { - case WireVarint: - _, k := decodeVarint(b) - if k == 0 { - return b, io.ErrUnexpectedEOF - } - b = b[k:] - case WireFixed32: - if len(b) < 4 { - return b, io.ErrUnexpectedEOF - } - b = b[4:] - case WireFixed64: - if len(b) < 8 { - return b, io.ErrUnexpectedEOF - } - b = b[8:] - case WireBytes: - m, k := decodeVarint(b) - if k == 0 || uint64(len(b)-k) < m { - return b, io.ErrUnexpectedEOF - } - b = b[uint64(k)+m:] - case WireStartGroup: - _, i := findEndGroup(b) - if i == -1 { - return b, io.ErrUnexpectedEOF - } - b = b[i:] - default: - return b, fmt.Errorf("proto: can't skip unknown wire type %d", wire) - } - return b, nil -} - -// findEndGroup finds the index of the next EndGroup tag. -// Groups may be nested, so the "next" EndGroup tag is the first -// unpaired EndGroup. -// findEndGroup returns the indexes of the start and end of the EndGroup tag. -// Returns (-1,-1) if it can't find one. -func findEndGroup(b []byte) (int, int) { - depth := 1 - i := 0 - for { - x, n := decodeVarint(b[i:]) - if n == 0 { - return -1, -1 - } - j := i - i += n - switch x & 7 { - case WireVarint: - _, k := decodeVarint(b[i:]) - if k == 0 { - return -1, -1 - } - i += k - case WireFixed32: - if len(b)-4 < i { - return -1, -1 - } - i += 4 - case WireFixed64: - if len(b)-8 < i { - return -1, -1 - } - i += 8 - case WireBytes: - m, k := decodeVarint(b[i:]) - if k == 0 { - return -1, -1 - } - i += k - if uint64(len(b)-i) < m { - return -1, -1 - } - i += int(m) - case WireStartGroup: - depth++ - case WireEndGroup: - depth-- - if depth == 0 { - return j, i - } - default: - return -1, -1 - } - } -} - -// encodeVarint appends a varint-encoded integer to b and returns the result. -func encodeVarint(b []byte, x uint64) []byte { - for x >= 1<<7 { - b = append(b, byte(x&0x7f|0x80)) - x >>= 7 - } - return append(b, byte(x)) -} - -// decodeVarint reads a varint-encoded integer from b. -// Returns the decoded integer and the number of bytes read. -// If there is an error, it returns 0,0. -func decodeVarint(b []byte) (uint64, int) { - var x, y uint64 - if len(b) <= 0 { - goto bad - } - x = uint64(b[0]) - if x < 0x80 { - return x, 1 - } - x -= 0x80 - - if len(b) <= 1 { - goto bad - } - y = uint64(b[1]) - x += y << 7 - if y < 0x80 { - return x, 2 - } - x -= 0x80 << 7 - - if len(b) <= 2 { - goto bad - } - y = uint64(b[2]) - x += y << 14 - if y < 0x80 { - return x, 3 - } - x -= 0x80 << 14 - - if len(b) <= 3 { - goto bad - } - y = uint64(b[3]) - x += y << 21 - if y < 0x80 { - return x, 4 - } - x -= 0x80 << 21 - - if len(b) <= 4 { - goto bad - } - y = uint64(b[4]) - x += y << 28 - if y < 0x80 { - return x, 5 - } - x -= 0x80 << 28 - - if len(b) <= 5 { - goto bad - } - y = uint64(b[5]) - x += y << 35 - if y < 0x80 { - return x, 6 - } - x -= 0x80 << 35 - - if len(b) <= 6 { - goto bad - } - y = uint64(b[6]) - x += y << 42 - if y < 0x80 { - return x, 7 - } - x -= 0x80 << 42 - - if len(b) <= 7 { - goto bad - } - y = uint64(b[7]) - x += y << 49 - if y < 0x80 { - return x, 8 - } - x -= 0x80 << 49 - - if len(b) <= 8 { - goto bad - } - y = uint64(b[8]) - x += y << 56 - if y < 0x80 { - return x, 9 - } - x -= 0x80 << 56 - - if len(b) <= 9 { - goto bad - } - y = uint64(b[9]) - x += y << 63 - if y < 2 { - return x, 10 - } - -bad: - return 0, 0 -} diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go index 2205fdaa..965876bf 100644 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ b/vendor/github.com/golang/protobuf/proto/text.go @@ -50,6 +50,7 @@ import ( var ( newline = []byte("\n") spaces = []byte(" ") + gtNewline = []byte(">\n") endBraceNewline = []byte("}\n") backslashN = []byte{'\\', 'n'} backslashR = []byte{'\\', 'r'} @@ -169,6 +170,11 @@ func writeName(w *textWriter, props *Properties) error { return nil } +// raw is the interface satisfied by RawMessage. +type raw interface { + Bytes() []byte +} + func requiresQuotes(u string) bool { // When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted. for _, ch := range u { @@ -263,10 +269,6 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { props := sprops.Prop[i] name := st.Field(i).Name - if name == "XXX_NoUnkeyedLiteral" { - continue - } - if strings.HasPrefix(name, "XXX_") { // There are two XXX_ fields: // XXX_unrecognized []byte @@ -434,6 +436,12 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } + if b, ok := fv.Interface().(raw); ok { + if err := writeRaw(w, b.Bytes()); err != nil { + return err + } + continue + } // Enums have a String method, so writeAny will work fine. if err := tm.writeAny(w, fv, props); err != nil { @@ -447,7 +455,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { // Extensions (the XXX_extensions field). pv := sv.Addr() - if _, err := extendable(pv.Interface()); err == nil { + if _, ok := extendable(pv.Interface()); ok { if err := tm.writeExtensions(w, pv); err != nil { return err } @@ -456,6 +464,27 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return nil } +// writeRaw writes an uninterpreted raw message. +func writeRaw(w *textWriter, b []byte) error { + if err := w.WriteByte('<'); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte('\n'); err != nil { + return err + } + } + w.indent() + if err := writeUnknownStruct(w, b); err != nil { + return err + } + w.unindent() + if err := w.WriteByte('>'); err != nil { + return err + } + return nil +} + // writeAny writes an arbitrary field. func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error { v = reflect.Indirect(v) @@ -506,19 +535,6 @@ func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Propert } } w.indent() - if v.CanAddr() { - // Calling v.Interface on a struct causes the reflect package to - // copy the entire struct. This is racy with the new Marshaler - // since we atomically update the XXX_sizecache. - // - // Thus, we retrieve a pointer to the struct if possible to avoid - // a race since v.Interface on the pointer doesn't copy the struct. - // - // If v is not addressable, then we are not worried about a race - // since it implies that the binary Marshaler cannot possibly be - // mutating this value. - v = v.Addr() - } if etm, ok := v.Interface().(encoding.TextMarshaler); ok { text, err := etm.MarshalText() if err != nil { @@ -527,13 +543,8 @@ func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Propert if _, err = w.Write(text); err != nil { return err } - } else { - if v.Kind() == reflect.Ptr { - v = v.Elem() - } - if err := tm.writeStruct(w, v); err != nil { - return err - } + } else if err := tm.writeStruct(w, v); err != nil { + return err } w.unindent() if err := w.WriteByte(ket); err != nil { diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go index 0685bae3..5e14513f 100644 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ b/vendor/github.com/golang/protobuf/proto/text_parser.go @@ -206,6 +206,7 @@ func (p *textParser) advance() { var ( errBadUTF8 = errors.New("proto: bad UTF-8") + errBadHex = errors.New("proto: bad hexadecimal") ) func unquoteC(s string, quote rune) (string, error) { @@ -276,47 +277,60 @@ func unescape(s string) (ch string, tail string, err error) { return "?", s, nil // trigraph workaround case '\'', '"', '\\': return string(r), s, nil - case '0', '1', '2', '3', '4', '5', '6', '7': + case '0', '1', '2', '3', '4', '5', '6', '7', 'x', 'X': if len(s) < 2 { return "", "", fmt.Errorf(`\%c requires 2 following digits`, r) } - ss := string(r) + s[:2] + base := 8 + ss := s[:2] s = s[2:] - i, err := strconv.ParseUint(ss, 8, 8) + if r == 'x' || r == 'X' { + base = 16 + } else { + ss = string(r) + ss + } + i, err := strconv.ParseUint(ss, base, 8) if err != nil { - return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss) + return "", "", err } return string([]byte{byte(i)}), s, nil - case 'x', 'X', 'u', 'U': - var n int - switch r { - case 'x', 'X': - n = 2 - case 'u': - n = 4 - case 'U': + case 'u', 'U': + n := 4 + if r == 'U' { n = 8 } if len(s) < n { - return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n) - } - ss := s[:n] - s = s[n:] - i, err := strconv.ParseUint(ss, 16, 64) - if err != nil { - return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss) + return "", "", fmt.Errorf(`\%c requires %d digits`, r, n) } - if r == 'x' || r == 'X' { - return string([]byte{byte(i)}), s, nil - } - if i > utf8.MaxRune { - return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss) + + bs := make([]byte, n/2) + for i := 0; i < n; i += 2 { + a, ok1 := unhex(s[i]) + b, ok2 := unhex(s[i+1]) + if !ok1 || !ok2 { + return "", "", errBadHex + } + bs[i/2] = a<<4 | b } - return string(i), s, nil + s = s[n:] + return string(bs), s, nil } return "", "", fmt.Errorf(`unknown escape \%c`, r) } +// Adapted from src/pkg/strconv/quote.go. +func unhex(b byte) (v byte, ok bool) { + switch { + case '0' <= b && b <= '9': + return b - '0', true + case 'a' <= b && b <= 'f': + return b - 'a' + 10, true + case 'A' <= b && b <= 'F': + return b - 'A' + 10, true + } + return 0, false +} + // Back off the parser by one token. Can only be done between calls to next(). // It makes the next advance() a no-op. func (p *textParser) back() { p.backed = true } @@ -714,9 +728,6 @@ func (p *textParser) consumeExtName() (string, error) { if tok.err != nil { return "", p.errorf("unrecognized type_url or extension name: %s", tok.err) } - if p.done && tok.value != "]" { - return "", p.errorf("unclosed type_url or extension name") - } } return strings.Join(parts, ""), nil } @@ -854,7 +865,7 @@ func (p *textParser) readAny(v reflect.Value, props *Properties) error { return p.readStruct(fv, terminator) case reflect.Uint32: if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - fv.SetUint(uint64(x)) + fv.SetUint(x) return nil } case reflect.Uint64: @@ -872,9 +883,13 @@ func (p *textParser) readAny(v reflect.Value, props *Properties) error { // UnmarshalText returns *RequiredNotSetError. func UnmarshalText(s string, pb Message) error { if um, ok := pb.(encoding.TextUnmarshaler); ok { - return um.UnmarshalText([]byte(s)) + err := um.UnmarshalText([]byte(s)) + return err } pb.Reset() v := reflect.ValueOf(pb) - return newTextParser(s).readStruct(v.Elem(), "") + if pe := newTextParser(s).readStruct(v.Elem(), ""); pe != nil { + return pe + } + return nil } diff --git a/vendor/github.com/miekg/dns/AUTHORS b/vendor/github.com/miekg/dns/AUTHORS new file mode 100644 index 00000000..19656835 --- /dev/null +++ b/vendor/github.com/miekg/dns/AUTHORS @@ -0,0 +1 @@ +Miek Gieben <miek@miek.nl> diff --git a/vendor/github.com/miekg/dns/CONTRIBUTORS b/vendor/github.com/miekg/dns/CONTRIBUTORS new file mode 100644 index 00000000..f77e8a89 --- /dev/null +++ b/vendor/github.com/miekg/dns/CONTRIBUTORS @@ -0,0 +1,9 @@ +Alex A. Skinner +Andrew Tunnell-Jones +Ask Bjørn Hansen +Dave Cheney +Dusty Wilson +Marek Majkowski +Peter van Dijk +Omri Bahumi +Alex Sergeyev diff --git a/vendor/github.com/miekg/dns/COPYRIGHT b/vendor/github.com/miekg/dns/COPYRIGHT new file mode 100644 index 00000000..35702b10 --- /dev/null +++ b/vendor/github.com/miekg/dns/COPYRIGHT @@ -0,0 +1,9 @@ +Copyright 2009 The Go Authors. All rights reserved. Use of this source code +is governed by a BSD-style license that can be found in the LICENSE file. +Extensions of the original work are copyright (c) 2011 Miek Gieben + +Copyright 2011 Miek Gieben. All rights reserved. Use of this source code is +governed by a BSD-style license that can be found in the LICENSE file. + +Copyright 2014 CloudFlare. All rights reserved. Use of this source code is +governed by a BSD-style license that can be found in the LICENSE file. diff --git a/vendor/github.com/miekg/dns/LICENSE b/vendor/github.com/miekg/dns/LICENSE new file mode 100644 index 00000000..5763fa7f --- /dev/null +++ b/vendor/github.com/miekg/dns/LICENSE @@ -0,0 +1,32 @@ +Extensions of the original work are copyright (c) 2011 Miek Gieben + +As this is fork of the official Go code the same license applies: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/vendor/github.com/miekg/dns/README.md b/vendor/github.com/miekg/dns/README.md new file mode 100644 index 00000000..744e20de --- /dev/null +++ b/vendor/github.com/miekg/dns/README.md @@ -0,0 +1,149 @@ +[](https://travis-ci.org/miekg/dns) + +# Alternative (more granular) approach to a DNS library + +> Less is more. + +Complete and usable DNS library. All widely used Resource Records are +supported, including the DNSSEC types. It follows a lean and mean philosophy. +If there is stuff you should know as a DNS programmer there isn't a convenience +function for it. Server side and client side programming is supported, i.e. you +can build servers and resolvers with it. + +If you like this, you may also be interested in: + +* https://github.com/miekg/unbound -- Go wrapper for the Unbound resolver. + +# Goals + +* KISS; +* Fast; +* Small API, if its easy to code in Go, don't make a function for it. + +# Users + +A not-so-up-to-date-list-that-may-be-actually-current: + +* https://cloudflare.com +* https://github.com/abh/geodns +* http://www.statdns.com/ +* http://www.dnsinspect.com/ +* https://github.com/chuangbo/jianbing-dictionary-dns +* http://www.dns-lg.com/ +* https://github.com/fcambus/rrda +* https://github.com/kenshinx/godns +* https://github.com/skynetservices/skydns +* https://github.com/DevelopersPL/godnsagent +* https://github.com/duedil-ltd/discodns +* https://github.com/StalkR/dns-reverse-proxy +* https://github.com/tianon/rawdns +* https://mesosphere.github.io/mesos-dns/ +* https://pulse.turbobytes.com/ +* https://play.google.com/store/apps/details?id=com.turbobytes.dig +* https://github.com/fcambus/statzone +* https://github.com/benschw/dns-clb-go +* https://github.com/corny/dnscheck for http://public-dns.tk/ + +Send pull request if you want to be listed here. + +# Features + +* UDP/TCP queries, IPv4 and IPv6; +* RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported; +* Fast: + * Reply speed around ~ 80K qps (faster hardware results in more qps); + * Parsing RRs ~ 100K RR/s, that's 5M records in about 50 seconds; +* Server side programming (mimicking the net/http package); +* Client side programming; +* DNSSEC: signing, validating and key generation for DSA, RSA and ECDSA; +* EDNS0, NSID; +* AXFR/IXFR; +* TSIG, SIG(0); +* DNS name compression; +* Depends only on the standard library. + +Have fun! + +Miek Gieben - 2010-2012 - <miek@miek.nl> + +# Building + +Building is done with the `go` tool. If you have setup your GOPATH +correctly, the following should work: + + go get github.com/miekg/dns + go build github.com/miekg/dns + +## Examples + +A short "how to use the API" is at the beginning of doc.go (this also will show +when you call `godoc github.com/miekg/dns`). + +Example programs can be found in the `github.com/miekg/exdns` repository. + +## Supported RFCs + +*all of them* + +* 103{4,5} - DNS standard +* 1348 - NSAP record (removed the record) +* 1982 - Serial Arithmetic +* 1876 - LOC record +* 1995 - IXFR +* 1996 - DNS notify +* 2136 - DNS Update (dynamic updates) +* 2181 - RRset definition - there is no RRset type though, just []RR +* 2537 - RSAMD5 DNS keys +* 2065 - DNSSEC (updated in later RFCs) +* 2671 - EDNS record +* 2782 - SRV record +* 2845 - TSIG record +* 2915 - NAPTR record +* 2929 - DNS IANA Considerations +* 3110 - RSASHA1 DNS keys +* 3225 - DO bit (DNSSEC OK) +* 340{1,2,3} - NAPTR record +* 3445 - Limiting the scope of (DNS)KEY +* 3597 - Unknown RRs +* 4025 - IPSECKEY +* 403{3,4,5} - DNSSEC + validation functions +* 4255 - SSHFP record +* 4343 - Case insensitivity +* 4408 - SPF record +* 4509 - SHA256 Hash in DS +* 4592 - Wildcards in the DNS +* 4635 - HMAC SHA TSIG +* 4701 - DHCID +* 4892 - id.server +* 5001 - NSID +* 5155 - NSEC3 record +* 5205 - HIP record +* 5702 - SHA2 in the DNS +* 5936 - AXFR +* 5966 - TCP implementation recommendations +* 6605 - ECDSA +* 6725 - IANA Registry Update +* 6742 - ILNP DNS +* 6844 - CAA record +* 6891 - EDNS0 update +* 6895 - DNS IANA considerations +* 6975 - Algorithm Understanding in DNSSEC +* 7043 - EUI48/EUI64 records +* 7314 - DNS (EDNS) EXPIRE Option +* 7553 - URI record +* xxxx - EDNS0 DNS Update Lease (draft) + +## Loosely based upon + +* `ldns` +* `NSD` +* `Net::DNS` +* `GRONG` + +## TODO + +* privatekey.Precompute() when signing? +* Last remaining RRs: APL, ATMA, A6, NSAP and NXT. +* Missing in parsing: ISDN, UNSPEC, NSAP and ATMA. +* NSEC(3) cover/match/closest enclose. +* Replies with TC bit are not parsed to the end. diff --git a/vendor/github.com/miekg/dns/client.go b/vendor/github.com/miekg/dns/client.go new file mode 100644 index 00000000..ea098519 --- /dev/null +++ b/vendor/github.com/miekg/dns/client.go @@ -0,0 +1,378 @@ +package dns + +// A client implementation. + +import ( + "bytes" + "io" + "net" + "time" +) + +const dnsTimeout time.Duration = 2 * time.Second +const tcpIdleTimeout time.Duration = 8 * time.Second + +// A Conn represents a connection to a DNS server. +type Conn struct { + net.Conn // a net.Conn holding the connection + UDPSize uint16 // minimum receive buffer for UDP messages + TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be fully qualified + rtt time.Duration + t time.Time + tsigRequestMAC string +} + +// A Client defines parameters for a DNS client. +type Client struct { + Net string // if "tcp" a TCP query will be initiated, otherwise an UDP one (default is "" for UDP) + UDPSize uint16 // minimum receive buffer for UDP messages + DialTimeout time.Duration // net.DialTimeout, defaults to 2 seconds + ReadTimeout time.Duration // net.Conn.SetReadTimeout value for connections, defaults to 2 seconds + WriteTimeout time.Duration // net.Conn.SetWriteTimeout value for connections, defaults to 2 seconds + TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be fully qualified + SingleInflight bool // if true suppress multiple outstanding queries for the same Qname, Qtype and Qclass + group singleflight +} + +// Exchange performs a synchronous UDP query. It sends the message m to the address +// contained in a and waits for an reply. Exchange does not retry a failed query, nor +// will it fall back to TCP in case of truncation. +// If you need to send a DNS message on an already existing connection, you can use the +// following: +// +// co := &dns.Conn{Conn: c} // c is your net.Conn +// co.WriteMsg(m) +// in, err := co.ReadMsg() +// co.Close() +// +func Exchange(m *Msg, a string) (r *Msg, err error) { + var co *Conn + co, err = DialTimeout("udp", a, dnsTimeout) + if err != nil { + return nil, err + } + + defer co.Close() + co.SetReadDeadline(time.Now().Add(dnsTimeout)) + co.SetWriteDeadline(time.Now().Add(dnsTimeout)) + + opt := m.IsEdns0() + // If EDNS0 is used use that for size. + if opt != nil && opt.UDPSize() >= MinMsgSize { + co.UDPSize = opt.UDPSize() + } + + if err = co.WriteMsg(m); err != nil { + return nil, err + } + r, err = co.ReadMsg() + if err == nil && r.Id != m.Id { + err = ErrId + } + return r, err +} + +// ExchangeConn performs a synchronous query. It sends the message m via the connection +// c and waits for a reply. The connection c is not closed by ExchangeConn. +// This function is going away, but can easily be mimicked: +// +// co := &dns.Conn{Conn: c} // c is your net.Conn +// co.WriteMsg(m) +// in, _ := co.ReadMsg() +// co.Close() +// +func ExchangeConn(c net.Conn, m *Msg) (r *Msg, err error) { + println("dns: this function is deprecated") + co := new(Conn) + co.Conn = c + if err = co.WriteMsg(m); err != nil { + return nil, err + } + r, err = co.ReadMsg() + if err == nil && r.Id != m.Id { + err = ErrId + } + return r, err +} + +// Exchange performs an synchronous query. It sends the message m to the address +// contained in a and waits for an reply. Basic use pattern with a *dns.Client: +// +// c := new(dns.Client) +// in, rtt, err := c.Exchange(message, "127.0.0.1:53") +// +// Exchange does not retry a failed query, nor will it fall back to TCP in +// case of truncation. +func (c *Client) Exchange(m *Msg, a string) (r *Msg, rtt time.Duration, err error) { + if !c.SingleInflight { + return c.exchange(m, a) + } + // This adds a bunch of garbage, TODO(miek). + t := "nop" + if t1, ok := TypeToString[m.Question[0].Qtype]; ok { + t = t1 + } + cl := "nop" + if cl1, ok := ClassToString[m.Question[0].Qclass]; ok { + cl = cl1 + } + r, rtt, err, shared := c.group.Do(m.Question[0].Name+t+cl, func() (*Msg, time.Duration, error) { + return c.exchange(m, a) + }) + if err != nil { + return r, rtt, err + } + if shared { + return r.Copy(), rtt, nil + } + return r, rtt, nil +} + +func (c *Client) dialTimeout() time.Duration { + if c.DialTimeout != 0 { + return c.DialTimeout + } + return dnsTimeout +} + +func (c *Client) readTimeout() time.Duration { + if c.ReadTimeout != 0 { + return c.ReadTimeout + } + return dnsTimeout +} + +func (c *Client) writeTimeout() time.Duration { + if c.WriteTimeout != 0 { + return c.WriteTimeout + } + return dnsTimeout +} + +func (c *Client) exchange(m *Msg, a string) (r *Msg, rtt time.Duration, err error) { + var co *Conn + if c.Net == "" { + co, err = DialTimeout("udp", a, c.dialTimeout()) + } else { + co, err = DialTimeout(c.Net, a, c.dialTimeout()) + } + if err != nil { + return nil, 0, err + } + defer co.Close() + + opt := m.IsEdns0() + // If EDNS0 is used use that for size. + if opt != nil && opt.UDPSize() >= MinMsgSize { + co.UDPSize = opt.UDPSize() + } + // Otherwise use the client's configured UDP size. + if opt == nil && c.UDPSize >= MinMsgSize { + co.UDPSize = c.UDPSize + } + + co.SetReadDeadline(time.Now().Add(c.readTimeout())) + co.SetWriteDeadline(time.Now().Add(c.writeTimeout())) + + co.TsigSecret = c.TsigSecret + if err = co.WriteMsg(m); err != nil { + return nil, 0, err + } + r, err = co.ReadMsg() + if err == nil && r.Id != m.Id { + err = ErrId + } + return r, co.rtt, err +} + +// ReadMsg reads a message from the connection co. +// If the received message contains a TSIG record the transaction +// signature is verified. +func (co *Conn) ReadMsg() (*Msg, error) { + p, err := co.ReadMsgHeader(nil) + if err != nil { + return nil, err + } + + m := new(Msg) + if err := m.Unpack(p); err != nil { + return nil, err + } + if t := m.IsTsig(); t != nil { + if _, ok := co.TsigSecret[t.Hdr.Name]; !ok { + return m, ErrSecret + } + // Need to work on the original message p, as that was used to calculate the tsig. + err = TsigVerify(p, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false) + } + return m, err +} + +// ReadMsgHeader reads a DNS message, parses and populates hdr (when hdr is not nil). +// Returns message as a byte slice to be parsed with Msg.Unpack later on. +// Note that error handling on the message body is not possible as only the header is parsed. +func (co *Conn) ReadMsgHeader(hdr *Header) ([]byte, error) { + var ( + p []byte + n int + err error + ) + + if t, ok := co.Conn.(*net.TCPConn); ok { + // First two bytes specify the length of the entire message. + l, err := tcpMsgLen(t) + if err != nil { + return nil, err + } + p = make([]byte, l) + n, err = tcpRead(t, p) + } else { + if co.UDPSize > MinMsgSize { + p = make([]byte, co.UDPSize) + } else { + p = make([]byte, MinMsgSize) + } + n, err = co.Read(p) + } + + if err != nil { + return nil, err + } else if n < headerSize { + return nil, ErrShortRead + } + + p = p[:n] + if hdr != nil { + if _, err = UnpackStruct(hdr, p, 0); err != nil { + return nil, err + } + } + return p, err +} + +// tcpMsgLen is a helper func to read first two bytes of stream as uint16 packet length. +func tcpMsgLen(t *net.TCPConn) (int, error) { + p := []byte{0, 0} + n, err := t.Read(p) + if err != nil { + return 0, err + } + if n != 2 { + return 0, ErrShortRead + } + l, _ := unpackUint16(p, 0) + if l == 0 { + return 0, ErrShortRead + } + return int(l), nil +} + +// tcpRead calls TCPConn.Read enough times to fill allocated buffer. +func tcpRead(t *net.TCPConn, p []byte) (int, error) { + n, err := t.Read(p) + if err != nil { + return n, err + } + for n < len(p) { + j, err := t.Read(p[n:]) + if err != nil { + return n, err + } + n += j + } + return n, err +} + +// Read implements the net.Conn read method. +func (co *Conn) Read(p []byte) (n int, err error) { + if co.Conn == nil { + return 0, ErrConnEmpty + } + if len(p) < 2 { + return 0, io.ErrShortBuffer + } + if t, ok := co.Conn.(*net.TCPConn); ok { + l, err := tcpMsgLen(t) + if err != nil { + return 0, err + } + if l > len(p) { + return int(l), io.ErrShortBuffer + } + return tcpRead(t, p[:l]) + } + // UDP connection + n, err = co.Conn.Read(p) + if err != nil { + return n, err + } + + co.rtt = time.Since(co.t) + return n, err +} + +// WriteMsg sends a message throught the connection co. +// If the message m contains a TSIG record the transaction +// signature is calculated. +func (co *Conn) WriteMsg(m *Msg) (err error) { + var out []byte + if t := m.IsTsig(); t != nil { + mac := "" + if _, ok := co.TsigSecret[t.Hdr.Name]; !ok { + return ErrSecret + } + out, mac, err = TsigGenerate(m, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false) + // Set for the next read, allthough only used in zone transfers + co.tsigRequestMAC = mac + } else { + out, err = m.Pack() + } + if err != nil { + return err + } + co.t = time.Now() + if _, err = co.Write(out); err != nil { + return err + } + return nil +} + +// Write implements the net.Conn Write method. +func (co *Conn) Write(p []byte) (n int, err error) { + if t, ok := co.Conn.(*net.TCPConn); ok { + lp := len(p) + if lp < 2 { + return 0, io.ErrShortBuffer + } + if lp > MaxMsgSize { + return 0, &Error{err: "message too large"} + } + l := make([]byte, 2, lp+2) + l[0], l[1] = packUint16(uint16(lp)) + p = append(l, p...) + n, err := io.Copy(t, bytes.NewReader(p)) + return int(n), err + } + n, err = co.Conn.(*net.UDPConn).Write(p) + return n, err +} + +// Dial connects to the address on the named network. +func Dial(network, address string) (conn *Conn, err error) { + conn = new(Conn) + conn.Conn, err = net.Dial(network, address) + if err != nil { + return nil, err + } + return conn, nil +} + +// DialTimeout acts like Dial but takes a timeout. +func DialTimeout(network, address string, timeout time.Duration) (conn *Conn, err error) { + conn = new(Conn) + conn.Conn, err = net.DialTimeout(network, address, timeout) + if err != nil { + return nil, err + } + return conn, nil +} diff --git a/vendor/github.com/miekg/dns/clientconfig.go b/vendor/github.com/miekg/dns/clientconfig.go new file mode 100644 index 00000000..cfa9ad0b --- /dev/null +++ b/vendor/github.com/miekg/dns/clientconfig.go @@ -0,0 +1,99 @@ +package dns + +import ( + "bufio" + "os" + "strconv" + "strings" +) + +// ClientConfig wraps the contents of the /etc/resolv.conf file. +type ClientConfig struct { + Servers []string // servers to use + Search []string // suffixes to append to local name + Port string // what port to use + Ndots int // number of dots in name to trigger absolute lookup + Timeout int // seconds before giving up on packet + Attempts int // lost packets before giving up on server, not used in the package dns +} + +// ClientConfigFromFile parses a resolv.conf(5) like file and returns +// a *ClientConfig. +func ClientConfigFromFile(resolvconf string) (*ClientConfig, error) { + file, err := os.Open(resolvconf) + if err != nil { + return nil, err + } + defer file.Close() + c := new(ClientConfig) + scanner := bufio.NewScanner(file) + c.Servers = make([]string, 0) + c.Search = make([]string, 0) + c.Port = "53" + c.Ndots = 1 + c.Timeout = 5 + c.Attempts = 2 + + for scanner.Scan() { + if err := scanner.Err(); err != nil { + return nil, err + } + line := scanner.Text() + f := strings.Fields(line) + if len(f) < 1 { + continue + } + switch f[0] { + case "nameserver": // add one name server + if len(f) > 1 { + // One more check: make sure server name is + // just an IP address. Otherwise we need DNS + // to look it up. + name := f[1] + c.Servers = append(c.Servers, name) + } + + case "domain": // set search path to just this domain + if len(f) > 1 { + c.Search = make([]string, 1) + c.Search[0] = f[1] + } else { + c.Search = make([]string, 0) + } + + case "search": // set search path to given servers + c.Search = make([]string, len(f)-1) + for i := 0; i < len(c.Search); i++ { + c.Search[i] = f[i+1] + } + + case "options": // magic options + for i := 1; i < len(f); i++ { + s := f[i] + switch { + case len(s) >= 6 && s[:6] == "ndots:": + n, _ := strconv.Atoi(s[6:]) + if n < 1 { + n = 1 + } + c.Ndots = n + case len(s) >= 8 && s[:8] == "timeout:": + n, _ := strconv.Atoi(s[8:]) + if n < 1 { + n = 1 + } + c.Timeout = n + case len(s) >= 8 && s[:9] == "attempts:": + n, _ := strconv.Atoi(s[9:]) + if n < 1 { + n = 1 + } + c.Attempts = n + case s == "rotate": + /* not imp */ + } + } + } + } + return c, nil +} diff --git a/vendor/github.com/miekg/dns/defaults.go b/vendor/github.com/miekg/dns/defaults.go new file mode 100644 index 00000000..63165b4f --- /dev/null +++ b/vendor/github.com/miekg/dns/defaults.go @@ -0,0 +1,278 @@ +package dns + +import ( + "errors" + "net" + "strconv" +) + +const hexDigit = "0123456789abcdef" + +// Everything is assumed in ClassINET. + +// SetReply creates a reply message from a request message. +func (dns *Msg) SetReply(request *Msg) *Msg { + dns.Id = request.Id + dns.RecursionDesired = request.RecursionDesired // Copy rd bit + dns.Response = true + dns.Opcode = OpcodeQuery + dns.Rcode = RcodeSuccess + if len(request.Question) > 0 { + dns.Question = make([]Question, 1) + dns.Question[0] = request.Question[0] + } + return dns +} + +// SetQuestion creates a question message, it sets the Question +// section, generates an Id and sets the RecursionDesired (RD) +// bit to true. +func (dns *Msg) SetQuestion(z string, t uint16) *Msg { + dns.Id = Id() + dns.RecursionDesired = true + dns.Question = make([]Question, 1) + dns.Question[0] = Question{z, t, ClassINET} + return dns +} + +// SetNotify creates a notify message, it sets the Question +// section, generates an Id and sets the Authoritative (AA) +// bit to true. +func (dns *Msg) SetNotify(z string) *Msg { + dns.Opcode = OpcodeNotify + dns.Authoritative = true + dns.Id = Id() + dns.Question = make([]Question, 1) + dns.Question[0] = Question{z, TypeSOA, ClassINET} + return dns +} + +// SetRcode creates an error message suitable for the request. +func (dns *Msg) SetRcode(request *Msg, rcode int) *Msg { + dns.SetReply(request) + dns.Rcode = rcode + return dns +} + +// SetRcodeFormatError creates a message with FormError set. +func (dns *Msg) SetRcodeFormatError(request *Msg) *Msg { + dns.Rcode = RcodeFormatError + dns.Opcode = OpcodeQuery + dns.Response = true + dns.Authoritative = false + dns.Id = request.Id + return dns +} + +// SetUpdate makes the message a dynamic update message. It +// sets the ZONE section to: z, TypeSOA, ClassINET. +func (dns *Msg) SetUpdate(z string) *Msg { + dns.Id = Id() + dns.Response = false + dns.Opcode = OpcodeUpdate + dns.Compress = false // BIND9 cannot handle compression + dns.Question = make([]Question, 1) + dns.Question[0] = Question{z, TypeSOA, ClassINET} + return dns +} + +// SetIxfr creates message for requesting an IXFR. +func (dns *Msg) SetIxfr(z string, serial uint32, ns, mbox string) *Msg { + dns.Id = Id() + dns.Question = make([]Question, 1) + dns.Ns = make([]RR, 1) + s := new(SOA) + s.Hdr = RR_Header{z, TypeSOA, ClassINET, defaultTtl, 0} + s.Serial = serial + s.Ns = ns + s.Mbox = mbox + dns.Question[0] = Question{z, TypeIXFR, ClassINET} + dns.Ns[0] = s + return dns +} + +// SetAxfr creates message for requesting an AXFR. +func (dns *Msg) SetAxfr(z string) *Msg { + dns.Id = Id() + dns.Question = make([]Question, 1) + dns.Question[0] = Question{z, TypeAXFR, ClassINET} + return dns +} + +// SetTsig appends a TSIG RR to the message. +// This is only a skeleton TSIG RR that is added as the last RR in the +// additional section. The Tsig is calculated when the message is being send. +func (dns *Msg) SetTsig(z, algo string, fudge, timesigned int64) *Msg { + t := new(TSIG) + t.Hdr = RR_Header{z, TypeTSIG, ClassANY, 0, 0} + t.Algorithm = algo + t.Fudge = 300 + t.TimeSigned = uint64(timesigned) + t.OrigId = dns.Id + dns.Extra = append(dns.Extra, t) + return dns +} + +// SetEdns0 appends a EDNS0 OPT RR to the message. +// TSIG should always the last RR in a message. +func (dns *Msg) SetEdns0(udpsize uint16, do bool) *Msg { + e := new(OPT) + e.Hdr.Name = "." + e.Hdr.Rrtype = TypeOPT + e.SetUDPSize(udpsize) + if do { + e.SetDo() + } + dns.Extra = append(dns.Extra, e) + return dns +} + +// IsTsig checks if the message has a TSIG record as the last record +// in the additional section. It returns the TSIG record found or nil. +func (dns *Msg) IsTsig() *TSIG { + if len(dns.Extra) > 0 { + if dns.Extra[len(dns.Extra)-1].Header().Rrtype == TypeTSIG { + return dns.Extra[len(dns.Extra)-1].(*TSIG) + } + } + return nil +} + +// IsEdns0 checks if the message has a EDNS0 (OPT) record, any EDNS0 +// record in the additional section will do. It returns the OPT record +// found or nil. +func (dns *Msg) IsEdns0() *OPT { + for _, r := range dns.Extra { + if r.Header().Rrtype == TypeOPT { + return r.(*OPT) + } + } + return nil +} + +// IsDomainName checks if s is a valid domain name, it returns the number of +// labels and true, when a domain name is valid. Note that non fully qualified +// domain name is considered valid, in this case the last label is counted in +// the number of labels. When false is returned the number of labels is not +// defined. Also note that this function is extremely liberal; almost any +// string is a valid domain name as the DNS is 8 bit protocol. It checks if each +// label fits in 63 characters, but there is no length check for the entire +// string s. I.e. a domain name longer than 255 characters is considered valid. +func IsDomainName(s string) (labels int, ok bool) { + _, labels, err := packDomainName(s, nil, 0, nil, false) + return labels, err == nil +} + +// IsSubDomain checks if child is indeed a child of the parent. Both child and +// parent are *not* downcased before doing the comparison. +func IsSubDomain(parent, child string) bool { + // Entire child is contained in parent + return CompareDomainName(parent, child) == CountLabel(parent) +} + +// IsMsg sanity checks buf and returns an error if it isn't a valid DNS packet. +// The checking is performed on the binary payload. +func IsMsg(buf []byte) error { + // Header + if len(buf) < 12 { + return errors.New("dns: bad message header") + } + // Header: Opcode + // TODO(miek): more checks here, e.g. check all header bits. + return nil +} + +// IsFqdn checks if a domain name is fully qualified. +func IsFqdn(s string) bool { + l := len(s) + if l == 0 { + return false + } + return s[l-1] == '.' +} + +// IsRRset checks if a set of RRs is a valid RRset as defined by RFC 2181. +// This means the RRs need to have the same type, name, and class. Returns true +// if the RR set is valid, otherwise false. +func IsRRset(rrset []RR) bool { + if len(rrset) == 0 { + return false + } + if len(rrset) == 1 { + return true + } + rrHeader := rrset[0].Header() + rrType := rrHeader.Rrtype + rrClass := rrHeader.Class + rrName := rrHeader.Name + + for _, rr := range rrset[1:] { + curRRHeader := rr.Header() + if curRRHeader.Rrtype != rrType || curRRHeader.Class != rrClass || curRRHeader.Name != rrName { + // Mismatch between the records, so this is not a valid rrset for + //signing/verifying + return false + } + } + + return true +} + +// Fqdn return the fully qualified domain name from s. +// If s is already fully qualified, it behaves as the identity function. +func Fqdn(s string) string { + if IsFqdn(s) { + return s + } + return s + "." +} + +// Copied from the official Go code. + +// ReverseAddr returns the in-addr.arpa. or ip6.arpa. hostname of the IP +// address suitable for reverse DNS (PTR) record lookups or an error if it fails +// to parse the IP address. +func ReverseAddr(addr string) (arpa string, err error) { + ip := net.ParseIP(addr) + if ip == nil { + return "", &Error{err: "unrecognized address: " + addr} + } + if ip.To4() != nil { + return strconv.Itoa(int(ip[15])) + "." + strconv.Itoa(int(ip[14])) + "." + strconv.Itoa(int(ip[13])) + "." + + strconv.Itoa(int(ip[12])) + ".in-addr.arpa.", nil + } + // Must be IPv6 + buf := make([]byte, 0, len(ip)*4+len("ip6.arpa.")) + // Add it, in reverse, to the buffer + for i := len(ip) - 1; i >= 0; i-- { + v := ip[i] + buf = append(buf, hexDigit[v&0xF]) + buf = append(buf, '.') + buf = append(buf, hexDigit[v>>4]) + buf = append(buf, '.') + } + // Append "ip6.arpa." and return (buf already has the final .) + buf = append(buf, "ip6.arpa."...) + return string(buf), nil +} + +// String returns the string representation for the type t. +func (t Type) String() string { + if t1, ok := TypeToString[uint16(t)]; ok { + return t1 + } + return "TYPE" + strconv.Itoa(int(t)) +} + +// String returns the string representation for the class c. +func (c Class) String() string { + if c1, ok := ClassToString[uint16(c)]; ok { + return c1 + } + return "CLASS" + strconv.Itoa(int(c)) +} + +// String returns the string representation for the name n. +func (n Name) String() string { + return sprintName(string(n)) +} diff --git a/vendor/github.com/miekg/dns/dns.go b/vendor/github.com/miekg/dns/dns.go new file mode 100644 index 00000000..a3e4a0ef --- /dev/null +++ b/vendor/github.com/miekg/dns/dns.go @@ -0,0 +1,100 @@ +package dns + +import "strconv" + +const ( + year68 = 1 << 31 // For RFC1982 (Serial Arithmetic) calculations in 32 bits. + // DefaultMsgSize is the standard default for messages larger than 512 bytes. + DefaultMsgSize = 4096 + // MinMsgSize is the minimal size of a DNS packet. + MinMsgSize = 512 + // MaxMsgSize is the largest possible DNS packet. + MaxMsgSize = 65535 + defaultTtl = 3600 // Default internal TTL. +) + +// Error represents a DNS error +type Error struct{ err string } + +func (e *Error) Error() string { + if e == nil { + return "dns: <nil>" + } + return "dns: " + e.err +} + +// An RR represents a resource record. +type RR interface { + // Header returns the header of an resource record. The header contains + // everything up to the rdata. + Header() *RR_Header + // String returns the text representation of the resource record. + String() string + // copy returns a copy of the RR + copy() RR + // len returns the length (in octets) of the uncompressed RR in wire format. + len() int +} + +// RR_Header is the header all DNS resource records share. +type RR_Header struct { + Name string `dns:"cdomain-name"` + Rrtype uint16 + Class uint16 + Ttl uint32 + Rdlength uint16 // length of data after header +} + +// Header returns itself. This is here to make RR_Header implement the RR interface. +func (h *RR_Header) Header() *RR_Header { return h } + +// Just to imlement the RR interface. +func (h *RR_Header) copy() RR { return nil } + +func (h *RR_Header) copyHeader() *RR_Header { + r := new(RR_Header) + r.Name = h.Name + r.Rrtype = h.Rrtype + r.Class = h.Class + r.Ttl = h.Ttl + r.Rdlength = h.Rdlength + return r +} + +func (h *RR_Header) String() string { + var s string + + if h.Rrtype == TypeOPT { + s = ";" + // and maybe other things + } + + s += sprintName(h.Name) + "\t" + s += strconv.FormatInt(int64(h.Ttl), 10) + "\t" + s += Class(h.Class).String() + "\t" + s += Type(h.Rrtype).String() + "\t" + return s +} + +func (h *RR_Header) len() int { + l := len(h.Name) + 1 + l += 10 // rrtype(2) + class(2) + ttl(4) + rdlength(2) + return l +} + +// ToRFC3597 converts a known RR to the unknown RR representation +// from RFC 3597. +func (rr *RFC3597) ToRFC3597(r RR) error { + buf := make([]byte, r.len()*2) + off, err := PackStruct(r, buf, 0) + if err != nil { + return err + } + buf = buf[:off] + rawSetRdlength(buf, 0, off) + _, err = UnpackStruct(rr, buf, 0) + if err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/miekg/dns/dnssec.go b/vendor/github.com/miekg/dns/dnssec.go new file mode 100644 index 00000000..49ab4f1e --- /dev/null +++ b/vendor/github.com/miekg/dns/dnssec.go @@ -0,0 +1,659 @@ +package dns + +import ( + "bytes" + "crypto" + "crypto/dsa" + "crypto/ecdsa" + "crypto/elliptic" + _ "crypto/md5" + "crypto/rand" + "crypto/rsa" + _ "crypto/sha1" + _ "crypto/sha256" + _ "crypto/sha512" + "encoding/asn1" + "encoding/hex" + "math/big" + "sort" + "strings" + "time" +) + +// DNSSEC encryption algorithm codes. +const ( + _ uint8 = iota + RSAMD5 + DH + DSA + _ // Skip 4, RFC 6725, section 2.1 + RSASHA1 + DSANSEC3SHA1 + RSASHA1NSEC3SHA1 + RSASHA256 + _ // Skip 9, RFC 6725, section 2.1 + RSASHA512 + _ // Skip 11, RFC 6725, section 2.1 + ECCGOST + ECDSAP256SHA256 + ECDSAP384SHA384 + INDIRECT uint8 = 252 + PRIVATEDNS uint8 = 253 // Private (experimental keys) + PRIVATEOID uint8 = 254 +) + +// Map for algorithm names. +var AlgorithmToString = map[uint8]string{ + RSAMD5: "RSAMD5", + DH: "DH", + DSA: "DSA", + RSASHA1: "RSASHA1", + DSANSEC3SHA1: "DSA-NSEC3-SHA1", + RSASHA1NSEC3SHA1: "RSASHA1-NSEC3-SHA1", + RSASHA256: "RSASHA256", + RSASHA512: "RSASHA512", + ECCGOST: "ECC-GOST", + ECDSAP256SHA256: "ECDSAP256SHA256", + ECDSAP384SHA384: "ECDSAP384SHA384", + INDIRECT: "INDIRECT", + PRIVATEDNS: "PRIVATEDNS", + PRIVATEOID: "PRIVATEOID", +} + +// Map of algorithm strings. +var StringToAlgorithm = reverseInt8(AlgorithmToString) + +// Map of algorithm crypto hashes. +var AlgorithmToHash = map[uint8]crypto.Hash{ + RSAMD5: crypto.MD5, // Deprecated in RFC 6725 + RSASHA1: crypto.SHA1, + RSASHA1NSEC3SHA1: crypto.SHA1, + RSASHA256: crypto.SHA256, + ECDSAP256SHA256: crypto.SHA256, + ECDSAP384SHA384: crypto.SHA384, + RSASHA512: crypto.SHA512, +} + +// DNSSEC hashing algorithm codes. +const ( + _ uint8 = iota + SHA1 // RFC 4034 + SHA256 // RFC 4509 + GOST94 // RFC 5933 + SHA384 // Experimental + SHA512 // Experimental +) + +// Map for hash names. +var HashToString = map[uint8]string{ + SHA1: "SHA1", + SHA256: "SHA256", + GOST94: "GOST94", + SHA384: "SHA384", + SHA512: "SHA512", +} + +// Map of hash strings. +var StringToHash = reverseInt8(HashToString) + +// DNSKEY flag values. +const ( + SEP = 1 + REVOKE = 1 << 7 + ZONE = 1 << 8 +) + +// The RRSIG needs to be converted to wireformat with some of +// the rdata (the signature) missing. Use this struct to easy +// the conversion (and re-use the pack/unpack functions). +type rrsigWireFmt struct { + TypeCovered uint16 + Algorithm uint8 + Labels uint8 + OrigTtl uint32 + Expiration uint32 + Inception uint32 + KeyTag uint16 + SignerName string `dns:"domain-name"` + /* No Signature */ +} + +// Used for converting DNSKEY's rdata to wirefmt. +type dnskeyWireFmt struct { + Flags uint16 + Protocol uint8 + Algorithm uint8 + PublicKey string `dns:"base64"` + /* Nothing is left out */ +} + +func divRoundUp(a, b int) int { + return (a + b - 1) / b +} + +// KeyTag calculates the keytag (or key-id) of the DNSKEY. +func (k *DNSKEY) KeyTag() uint16 { + if k == nil { + return 0 + } + var keytag int + switch k.Algorithm { + case RSAMD5: + // Look at the bottom two bytes of the modules, which the last + // item in the pubkey. We could do this faster by looking directly + // at the base64 values. But I'm lazy. + modulus, _ := fromBase64([]byte(k.PublicKey)) + if len(modulus) > 1 { + x, _ := unpackUint16(modulus, len(modulus)-2) + keytag = int(x) + } + default: + keywire := new(dnskeyWireFmt) + keywire.Flags = k.Flags + keywire.Protocol = k.Protocol + keywire.Algorithm = k.Algorithm + keywire.PublicKey = k.PublicKey + wire := make([]byte, DefaultMsgSize) + n, err := PackStruct(keywire, wire, 0) + if err != nil { + return 0 + } + wire = wire[:n] + for i, v := range wire { + if i&1 != 0 { + keytag += int(v) // must be larger than uint32 + } else { + keytag += int(v) << 8 + } + } + keytag += (keytag >> 16) & 0xFFFF + keytag &= 0xFFFF + } + return uint16(keytag) +} + +// ToDS converts a DNSKEY record to a DS record. +func (k *DNSKEY) ToDS(h uint8) *DS { + if k == nil { + return nil + } + ds := new(DS) + ds.Hdr.Name = k.Hdr.Name + ds.Hdr.Class = k.Hdr.Class + ds.Hdr.Rrtype = TypeDS + ds.Hdr.Ttl = k.Hdr.Ttl + ds.Algorithm = k.Algorithm + ds.DigestType = h + ds.KeyTag = k.KeyTag() + + keywire := new(dnskeyWireFmt) + keywire.Flags = k.Flags + keywire.Protocol = k.Protocol + keywire.Algorithm = k.Algorithm + keywire.PublicKey = k.PublicKey + wire := make([]byte, DefaultMsgSize) + n, err := PackStruct(keywire, wire, 0) + if err != nil { + return nil + } + wire = wire[:n] + + owner := make([]byte, 255) + off, err1 := PackDomainName(strings.ToLower(k.Hdr.Name), owner, 0, nil, false) + if err1 != nil { + return nil + } + owner = owner[:off] + // RFC4034: + // digest = digest_algorithm( DNSKEY owner name | DNSKEY RDATA); + // "|" denotes concatenation + // DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key. + + // digest buffer + digest := append(owner, wire...) // another copy + + var hash crypto.Hash + switch h { + case SHA1: + hash = crypto.SHA1 + case SHA256: + hash = crypto.SHA256 + case SHA384: + hash = crypto.SHA384 + case SHA512: + hash = crypto.SHA512 + default: + return nil + } + + s := hash.New() + s.Write(digest) + ds.Digest = hex.EncodeToString(s.Sum(nil)) + return ds +} + +// ToCDNSKEY converts a DNSKEY record to a CDNSKEY record. +func (k *DNSKEY) ToCDNSKEY() *CDNSKEY { + c := &CDNSKEY{DNSKEY: *k} + c.Hdr = *k.Hdr.copyHeader() + c.Hdr.Rrtype = TypeCDNSKEY + return c +} + +// ToCDS converts a DS record to a CDS record. +func (d *DS) ToCDS() *CDS { + c := &CDS{DS: *d} + c.Hdr = *d.Hdr.copyHeader() + c.Hdr.Rrtype = TypeCDS + return c +} + +// Sign signs an RRSet. The signature needs to be filled in with +// the values: Inception, Expiration, KeyTag, SignerName and Algorithm. +// The rest is copied from the RRset. Sign returns true when the signing went OK, +// otherwise false. +// There is no check if RRSet is a proper (RFC 2181) RRSet. +// If OrigTTL is non zero, it is used as-is, otherwise the TTL of the RRset +// is used as the OrigTTL. +func (rr *RRSIG) Sign(k crypto.Signer, rrset []RR) error { + if k == nil { + return ErrPrivKey + } + // s.Inception and s.Expiration may be 0 (rollover etc.), the rest must be set + if rr.KeyTag == 0 || len(rr.SignerName) == 0 || rr.Algorithm == 0 { + return ErrKey + } + + rr.Hdr.Rrtype = TypeRRSIG + rr.Hdr.Name = rrset[0].Header().Name + rr.Hdr.Class = rrset[0].Header().Class + if rr.OrigTtl == 0 { // If set don't override + rr.OrigTtl = rrset[0].Header().Ttl + } + rr.TypeCovered = rrset[0].Header().Rrtype + rr.Labels = uint8(CountLabel(rrset[0].Header().Name)) + + if strings.HasPrefix(rrset[0].Header().Name, "*") { + rr.Labels-- // wildcard, remove from label count + } + + sigwire := new(rrsigWireFmt) + sigwire.TypeCovered = rr.TypeCovered + sigwire.Algorithm = rr.Algorithm + sigwire.Labels = rr.Labels + sigwire.OrigTtl = rr.OrigTtl + sigwire.Expiration = rr.Expiration + sigwire.Inception = rr.Inception + sigwire.KeyTag = rr.KeyTag + // For signing, lowercase this name + sigwire.SignerName = strings.ToLower(rr.SignerName) + + // Create the desired binary blob + signdata := make([]byte, DefaultMsgSize) + n, err := PackStruct(sigwire, signdata, 0) + if err != nil { + return err + } + signdata = signdata[:n] + wire, err := rawSignatureData(rrset, rr) + if err != nil { + return err + } + signdata = append(signdata, wire...) + + hash, ok := AlgorithmToHash[rr.Algorithm] + if !ok { + return ErrAlg + } + + h := hash.New() + h.Write(signdata) + + signature, err := sign(k, h.Sum(nil), hash, rr.Algorithm) + if err != nil { + return err + } + + rr.Signature = toBase64(signature) + + return nil +} + +func sign(k crypto.Signer, hashed []byte, hash crypto.Hash, alg uint8) ([]byte, error) { + signature, err := k.Sign(rand.Reader, hashed, hash) + if err != nil { + return nil, err + } + + switch alg { + case RSASHA1, RSASHA1NSEC3SHA1, RSASHA256, RSASHA512: + return signature, nil + + case ECDSAP256SHA256, ECDSAP384SHA384: + ecdsaSignature := &struct { + R, S *big.Int + }{} + if _, err := asn1.Unmarshal(signature, ecdsaSignature); err != nil { + return nil, err + } + + var intlen int + switch alg { + case ECDSAP256SHA256: + intlen = 32 + case ECDSAP384SHA384: + intlen = 48 + } + + signature := intToBytes(ecdsaSignature.R, intlen) + signature = append(signature, intToBytes(ecdsaSignature.S, intlen)...) + return signature, nil + + // There is no defined interface for what a DSA backed crypto.Signer returns + case DSA, DSANSEC3SHA1: + // t := divRoundUp(divRoundUp(p.PublicKey.Y.BitLen(), 8)-64, 8) + // signature := []byte{byte(t)} + // signature = append(signature, intToBytes(r1, 20)...) + // signature = append(signature, intToBytes(s1, 20)...) + // rr.Signature = signature + } + + return nil, ErrAlg +} + +// Verify validates an RRSet with the signature and key. This is only the +// cryptographic test, the signature validity period must be checked separately. +// This function copies the rdata of some RRs (to lowercase domain names) for the validation to work. +func (rr *RRSIG) Verify(k *DNSKEY, rrset []RR) error { + // First the easy checks + if !IsRRset(rrset) { + return ErrRRset + } + if rr.KeyTag != k.KeyTag() { + return ErrKey + } + if rr.Hdr.Class != k.Hdr.Class { + return ErrKey + } + if rr.Algorithm != k.Algorithm { + return ErrKey + } + if strings.ToLower(rr.SignerName) != strings.ToLower(k.Hdr.Name) { + return ErrKey + } + if k.Protocol != 3 { + return ErrKey + } + + // IsRRset checked that we have at least one RR and that the RRs in + // the set have consistent type, class, and name. Also check that type and + // class matches the RRSIG record. + if rrset[0].Header().Class != rr.Hdr.Class { + return ErrRRset + } + if rrset[0].Header().Rrtype != rr.TypeCovered { + return ErrRRset + } + + // RFC 4035 5.3.2. Reconstructing the Signed Data + // Copy the sig, except the rrsig data + sigwire := new(rrsigWireFmt) + sigwire.TypeCovered = rr.TypeCovered + sigwire.Algorithm = rr.Algorithm + sigwire.Labels = rr.Labels + sigwire.OrigTtl = rr.OrigTtl + sigwire.Expiration = rr.Expiration + sigwire.Inception = rr.Inception + sigwire.KeyTag = rr.KeyTag + sigwire.SignerName = strings.ToLower(rr.SignerName) + // Create the desired binary blob + signeddata := make([]byte, DefaultMsgSize) + n, err := PackStruct(sigwire, signeddata, 0) + if err != nil { + return err + } + signeddata = signeddata[:n] + wire, err := rawSignatureData(rrset, rr) + if err != nil { + return err + } + signeddata = append(signeddata, wire...) + + sigbuf := rr.sigBuf() // Get the binary signature data + if rr.Algorithm == PRIVATEDNS { // PRIVATEOID + // TODO(mg) + // remove the domain name and assume its our + } + + hash, ok := AlgorithmToHash[rr.Algorithm] + if !ok { + return ErrAlg + } + + switch rr.Algorithm { + case RSASHA1, RSASHA1NSEC3SHA1, RSASHA256, RSASHA512, RSAMD5: + // TODO(mg): this can be done quicker, ie. cache the pubkey data somewhere?? + pubkey := k.publicKeyRSA() // Get the key + if pubkey == nil { + return ErrKey + } + + h := hash.New() + h.Write(signeddata) + return rsa.VerifyPKCS1v15(pubkey, hash, h.Sum(nil), sigbuf) + + case ECDSAP256SHA256, ECDSAP384SHA384: + pubkey := k.publicKeyECDSA() + if pubkey == nil { + return ErrKey + } + + // Split sigbuf into the r and s coordinates + r := new(big.Int).SetBytes(sigbuf[:len(sigbuf)/2]) + s := new(big.Int).SetBytes(sigbuf[len(sigbuf)/2:]) + + h := hash.New() + h.Write(signeddata) + if ecdsa.Verify(pubkey, h.Sum(nil), r, s) { + return nil + } + return ErrSig + + default: + return ErrAlg + } +} + +// ValidityPeriod uses RFC1982 serial arithmetic to calculate +// if a signature period is valid. If t is the zero time, the +// current time is taken other t is. Returns true if the signature +// is valid at the given time, otherwise returns false. +func (rr *RRSIG) ValidityPeriod(t time.Time) bool { + var utc int64 + if t.IsZero() { + utc = time.Now().UTC().Unix() + } else { + utc = t.UTC().Unix() + } + modi := (int64(rr.Inception) - utc) / year68 + mode := (int64(rr.Expiration) - utc) / year68 + ti := int64(rr.Inception) + (modi * year68) + te := int64(rr.Expiration) + (mode * year68) + return ti <= utc && utc <= te +} + +// Return the signatures base64 encodedig sigdata as a byte slice. +func (rr *RRSIG) sigBuf() []byte { + sigbuf, err := fromBase64([]byte(rr.Signature)) + if err != nil { + return nil + } + return sigbuf +} + +// publicKeyRSA returns the RSA public key from a DNSKEY record. +func (k *DNSKEY) publicKeyRSA() *rsa.PublicKey { + keybuf, err := fromBase64([]byte(k.PublicKey)) + if err != nil { + return nil + } + + // RFC 2537/3110, section 2. RSA Public KEY Resource Records + // Length is in the 0th byte, unless its zero, then it + // it in bytes 1 and 2 and its a 16 bit number + explen := uint16(keybuf[0]) + keyoff := 1 + if explen == 0 { + explen = uint16(keybuf[1])<<8 | uint16(keybuf[2]) + keyoff = 3 + } + pubkey := new(rsa.PublicKey) + + pubkey.N = big.NewInt(0) + shift := uint64((explen - 1) * 8) + expo := uint64(0) + for i := int(explen - 1); i > 0; i-- { + expo += uint64(keybuf[keyoff+i]) << shift + shift -= 8 + } + // Remainder + expo += uint64(keybuf[keyoff]) + if expo > 2<<31 { + // Larger expo than supported. + // println("dns: F5 primes (or larger) are not supported") + return nil + } + pubkey.E = int(expo) + + pubkey.N.SetBytes(keybuf[keyoff+int(explen):]) + return pubkey +} + +// publicKeyECDSA returns the Curve public key from the DNSKEY record. +func (k *DNSKEY) publicKeyECDSA() *ecdsa.PublicKey { + keybuf, err := fromBase64([]byte(k.PublicKey)) + if err != nil { + return nil + } + pubkey := new(ecdsa.PublicKey) + switch k.Algorithm { + case ECDSAP256SHA256: + pubkey.Curve = elliptic.P256() + if len(keybuf) != 64 { + // wrongly encoded key + return nil + } + case ECDSAP384SHA384: + pubkey.Curve = elliptic.P384() + if len(keybuf) != 96 { + // Wrongly encoded key + return nil + } + } + pubkey.X = big.NewInt(0) + pubkey.X.SetBytes(keybuf[:len(keybuf)/2]) + pubkey.Y = big.NewInt(0) + pubkey.Y.SetBytes(keybuf[len(keybuf)/2:]) + return pubkey +} + +func (k *DNSKEY) publicKeyDSA() *dsa.PublicKey { + keybuf, err := fromBase64([]byte(k.PublicKey)) + if err != nil { + return nil + } + if len(keybuf) < 22 { + return nil + } + t, keybuf := int(keybuf[0]), keybuf[1:] + size := 64 + t*8 + q, keybuf := keybuf[:20], keybuf[20:] + if len(keybuf) != 3*size { + return nil + } + p, keybuf := keybuf[:size], keybuf[size:] + g, y := keybuf[:size], keybuf[size:] + pubkey := new(dsa.PublicKey) + pubkey.Parameters.Q = big.NewInt(0).SetBytes(q) + pubkey.Parameters.P = big.NewInt(0).SetBytes(p) + pubkey.Parameters.G = big.NewInt(0).SetBytes(g) + pubkey.Y = big.NewInt(0).SetBytes(y) + return pubkey +} + +type wireSlice [][]byte + +func (p wireSlice) Len() int { return len(p) } +func (p wireSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } +func (p wireSlice) Less(i, j int) bool { + _, ioff, _ := UnpackDomainName(p[i], 0) + _, joff, _ := UnpackDomainName(p[j], 0) + return bytes.Compare(p[i][ioff+10:], p[j][joff+10:]) < 0 +} + +// Return the raw signature data. +func rawSignatureData(rrset []RR, s *RRSIG) (buf []byte, err error) { + wires := make(wireSlice, len(rrset)) + for i, r := range rrset { + r1 := r.copy() + r1.Header().Ttl = s.OrigTtl + labels := SplitDomainName(r1.Header().Name) + // 6.2. Canonical RR Form. (4) - wildcards + if len(labels) > int(s.Labels) { + // Wildcard + r1.Header().Name = "*." + strings.Join(labels[len(labels)-int(s.Labels):], ".") + "." + } + // RFC 4034: 6.2. Canonical RR Form. (2) - domain name to lowercase + r1.Header().Name = strings.ToLower(r1.Header().Name) + // 6.2. Canonical RR Form. (3) - domain rdata to lowercase. + // NS, MD, MF, CNAME, SOA, MB, MG, MR, PTR, + // HINFO, MINFO, MX, RP, AFSDB, RT, SIG, PX, NXT, NAPTR, KX, + // SRV, DNAME, A6 + switch x := r1.(type) { + case *NS: + x.Ns = strings.ToLower(x.Ns) + case *CNAME: + x.Target = strings.ToLower(x.Target) + case *SOA: + x.Ns = strings.ToLower(x.Ns) + x.Mbox = strings.ToLower(x.Mbox) + case *MB: + x.Mb = strings.ToLower(x.Mb) + case *MG: + x.Mg = strings.ToLower(x.Mg) + case *MR: + x.Mr = strings.ToLower(x.Mr) + case *PTR: + x.Ptr = strings.ToLower(x.Ptr) + case *MINFO: + x.Rmail = strings.ToLower(x.Rmail) + x.Email = strings.ToLower(x.Email) + case *MX: + x.Mx = strings.ToLower(x.Mx) + case *NAPTR: + x.Replacement = strings.ToLower(x.Replacement) + case *KX: + x.Exchanger = strings.ToLower(x.Exchanger) + case *SRV: + x.Target = strings.ToLower(x.Target) + case *DNAME: + x.Target = strings.ToLower(x.Target) + } + // 6.2. Canonical RR Form. (5) - origTTL + wire := make([]byte, r1.len()+1) // +1 to be safe(r) + off, err1 := PackRR(r1, wire, 0, nil, false) + if err1 != nil { + return nil, err1 + } + wire = wire[:off] + wires[i] = wire + } + sort.Sort(wires) + for i, wire := range wires { + if i > 0 && bytes.Equal(wire, wires[i-1]) { + continue + } + buf = append(buf, wire...) + } + return buf, nil +} diff --git a/vendor/github.com/miekg/dns/dnssec_keygen.go b/vendor/github.com/miekg/dns/dnssec_keygen.go new file mode 100644 index 00000000..229a0793 --- /dev/null +++ b/vendor/github.com/miekg/dns/dnssec_keygen.go @@ -0,0 +1,156 @@ +package dns + +import ( + "crypto" + "crypto/dsa" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/rsa" + "math/big" +) + +// Generate generates a DNSKEY of the given bit size. +// The public part is put inside the DNSKEY record. +// The Algorithm in the key must be set as this will define +// what kind of DNSKEY will be generated. +// The ECDSA algorithms imply a fixed keysize, in that case +// bits should be set to the size of the algorithm. +func (k *DNSKEY) Generate(bits int) (crypto.PrivateKey, error) { + switch k.Algorithm { + case DSA, DSANSEC3SHA1: + if bits != 1024 { + return nil, ErrKeySize + } + case RSAMD5, RSASHA1, RSASHA256, RSASHA1NSEC3SHA1: + if bits < 512 || bits > 4096 { + return nil, ErrKeySize + } + case RSASHA512: + if bits < 1024 || bits > 4096 { + return nil, ErrKeySize + } + case ECDSAP256SHA256: + if bits != 256 { + return nil, ErrKeySize + } + case ECDSAP384SHA384: + if bits != 384 { + return nil, ErrKeySize + } + } + + switch k.Algorithm { + case DSA, DSANSEC3SHA1: + params := new(dsa.Parameters) + if err := dsa.GenerateParameters(params, rand.Reader, dsa.L1024N160); err != nil { + return nil, err + } + priv := new(dsa.PrivateKey) + priv.PublicKey.Parameters = *params + err := dsa.GenerateKey(priv, rand.Reader) + if err != nil { + return nil, err + } + k.setPublicKeyDSA(params.Q, params.P, params.G, priv.PublicKey.Y) + return priv, nil + case RSAMD5, RSASHA1, RSASHA256, RSASHA512, RSASHA1NSEC3SHA1: + priv, err := rsa.GenerateKey(rand.Reader, bits) + if err != nil { + return nil, err + } + k.setPublicKeyRSA(priv.PublicKey.E, priv.PublicKey.N) + return priv, nil + case ECDSAP256SHA256, ECDSAP384SHA384: + var c elliptic.Curve + switch k.Algorithm { + case ECDSAP256SHA256: + c = elliptic.P256() + case ECDSAP384SHA384: + c = elliptic.P384() + } + priv, err := ecdsa.GenerateKey(c, rand.Reader) + if err != nil { + return nil, err + } + k.setPublicKeyECDSA(priv.PublicKey.X, priv.PublicKey.Y) + return priv, nil + default: + return nil, ErrAlg + } +} + +// Set the public key (the value E and N) +func (k *DNSKEY) setPublicKeyRSA(_E int, _N *big.Int) bool { + if _E == 0 || _N == nil { + return false + } + buf := exponentToBuf(_E) + buf = append(buf, _N.Bytes()...) + k.PublicKey = toBase64(buf) + return true +} + +// Set the public key for Elliptic Curves +func (k *DNSKEY) setPublicKeyECDSA(_X, _Y *big.Int) bool { + if _X == nil || _Y == nil { + return false + } + var intlen int + switch k.Algorithm { + case ECDSAP256SHA256: + intlen = 32 + case ECDSAP384SHA384: + intlen = 48 + } + k.PublicKey = toBase64(curveToBuf(_X, _Y, intlen)) + return true +} + +// Set the public key for DSA +func (k *DNSKEY) setPublicKeyDSA(_Q, _P, _G, _Y *big.Int) bool { + if _Q == nil || _P == nil || _G == nil || _Y == nil { + return false + } + buf := dsaToBuf(_Q, _P, _G, _Y) + k.PublicKey = toBase64(buf) + return true +} + +// Set the public key (the values E and N) for RSA +// RFC 3110: Section 2. RSA Public KEY Resource Records +func exponentToBuf(_E int) []byte { + var buf []byte + i := big.NewInt(int64(_E)) + if len(i.Bytes()) < 256 { + buf = make([]byte, 1) + buf[0] = uint8(len(i.Bytes())) + } else { + buf = make([]byte, 3) + buf[0] = 0 + buf[1] = uint8(len(i.Bytes()) >> 8) + buf[2] = uint8(len(i.Bytes())) + } + buf = append(buf, i.Bytes()...) + return buf +} + +// Set the public key for X and Y for Curve. The two +// values are just concatenated. +func curveToBuf(_X, _Y *big.Int, intlen int) []byte { + buf := intToBytes(_X, intlen) + buf = append(buf, intToBytes(_Y, intlen)...) + return buf +} + +// Set the public key for X and Y for Curve. The two +// values are just concatenated. +func dsaToBuf(_Q, _P, _G, _Y *big.Int) []byte { + t := divRoundUp(divRoundUp(_G.BitLen(), 8)-64, 8) + buf := []byte{byte(t)} + buf = append(buf, intToBytes(_Q, 20)...) + buf = append(buf, intToBytes(_P, 64+t*8)...) + buf = append(buf, intToBytes(_G, 64+t*8)...) + buf = append(buf, intToBytes(_Y, 64+t*8)...) + return buf +} diff --git a/vendor/github.com/miekg/dns/dnssec_keyscan.go b/vendor/github.com/miekg/dns/dnssec_keyscan.go new file mode 100644 index 00000000..19a78338 --- /dev/null +++ b/vendor/github.com/miekg/dns/dnssec_keyscan.go @@ -0,0 +1,249 @@ +package dns + +import ( + "crypto" + "crypto/dsa" + "crypto/ecdsa" + "crypto/rsa" + "io" + "math/big" + "strconv" + "strings" +) + +// NewPrivateKey returns a PrivateKey by parsing the string s. +// s should be in the same form of the BIND private key files. +func (k *DNSKEY) NewPrivateKey(s string) (crypto.PrivateKey, error) { + if s[len(s)-1] != '\n' { // We need a closing newline + return k.ReadPrivateKey(strings.NewReader(s+"\n"), "") + } + return k.ReadPrivateKey(strings.NewReader(s), "") +} + +// ReadPrivateKey reads a private key from the io.Reader q. The string file is +// only used in error reporting. +// The public key must be known, because some cryptographic algorithms embed +// the public inside the privatekey. +func (k *DNSKEY) ReadPrivateKey(q io.Reader, file string) (crypto.PrivateKey, error) { + m, e := parseKey(q, file) + if m == nil { + return nil, e + } + if _, ok := m["private-key-format"]; !ok { + return nil, ErrPrivKey + } + if m["private-key-format"] != "v1.2" && m["private-key-format"] != "v1.3" { + return nil, ErrPrivKey + } + // TODO(mg): check if the pubkey matches the private key + algo, err := strconv.Atoi(strings.SplitN(m["algorithm"], " ", 2)[0]) + if err != nil { + return nil, ErrPrivKey + } + switch uint8(algo) { + case DSA: + priv, e := readPrivateKeyDSA(m) + if e != nil { + return nil, e + } + pub := k.publicKeyDSA() + if pub == nil { + return nil, ErrKey + } + priv.PublicKey = *pub + return priv, e + case RSAMD5: + fallthrough + case RSASHA1: + fallthrough + case RSASHA1NSEC3SHA1: + fallthrough + case RSASHA256: + fallthrough + case RSASHA512: + priv, e := readPrivateKeyRSA(m) + if e != nil { + return nil, e + } + pub := k.publicKeyRSA() + if pub == nil { + return nil, ErrKey + } + priv.PublicKey = *pub + return priv, e + case ECCGOST: + return nil, ErrPrivKey + case ECDSAP256SHA256: + fallthrough + case ECDSAP384SHA384: + priv, e := readPrivateKeyECDSA(m) + if e != nil { + return nil, e + } + pub := k.publicKeyECDSA() + if pub == nil { + return nil, ErrKey + } + priv.PublicKey = *pub + return priv, e + default: + return nil, ErrPrivKey + } +} + +// Read a private key (file) string and create a public key. Return the private key. +func readPrivateKeyRSA(m map[string]string) (*rsa.PrivateKey, error) { + p := new(rsa.PrivateKey) + p.Primes = []*big.Int{nil, nil} + for k, v := range m { + switch k { + case "modulus", "publicexponent", "privateexponent", "prime1", "prime2": + v1, err := fromBase64([]byte(v)) + if err != nil { + return nil, err + } + switch k { + case "modulus": + p.PublicKey.N = big.NewInt(0) + p.PublicKey.N.SetBytes(v1) + case "publicexponent": + i := big.NewInt(0) + i.SetBytes(v1) + p.PublicKey.E = int(i.Int64()) // int64 should be large enough + case "privateexponent": + p.D = big.NewInt(0) + p.D.SetBytes(v1) + case "prime1": + p.Primes[0] = big.NewInt(0) + p.Primes[0].SetBytes(v1) + case "prime2": + p.Primes[1] = big.NewInt(0) + p.Primes[1].SetBytes(v1) + } + case "exponent1", "exponent2", "coefficient": + // not used in Go (yet) + case "created", "publish", "activate": + // not used in Go (yet) + } + } + return p, nil +} + +func readPrivateKeyDSA(m map[string]string) (*dsa.PrivateKey, error) { + p := new(dsa.PrivateKey) + p.X = big.NewInt(0) + for k, v := range m { + switch k { + case "private_value(x)": + v1, err := fromBase64([]byte(v)) + if err != nil { + return nil, err + } + p.X.SetBytes(v1) + case "created", "publish", "activate": + /* not used in Go (yet) */ + } + } + return p, nil +} + +func readPrivateKeyECDSA(m map[string]string) (*ecdsa.PrivateKey, error) { + p := new(ecdsa.PrivateKey) + p.D = big.NewInt(0) + // TODO: validate that the required flags are present + for k, v := range m { + switch k { + case "privatekey": + v1, err := fromBase64([]byte(v)) + if err != nil { + return nil, err + } + p.D.SetBytes(v1) + case "created", "publish", "activate": + /* not used in Go (yet) */ + } + } + return p, nil +} + +// parseKey reads a private key from r. It returns a map[string]string, +// with the key-value pairs, or an error when the file is not correct. +func parseKey(r io.Reader, file string) (map[string]string, error) { + s := scanInit(r) + m := make(map[string]string) + c := make(chan lex) + k := "" + // Start the lexer + go klexer(s, c) + for l := range c { + // It should alternate + switch l.value { + case zKey: + k = l.token + case zValue: + if k == "" { + return nil, &ParseError{file, "no private key seen", l} + } + //println("Setting", strings.ToLower(k), "to", l.token, "b") + m[strings.ToLower(k)] = l.token + k = "" + } + } + return m, nil +} + +// klexer scans the sourcefile and returns tokens on the channel c. +func klexer(s *scan, c chan lex) { + var l lex + str := "" // Hold the current read text + commt := false + key := true + x, err := s.tokenText() + defer close(c) + for err == nil { + l.column = s.position.Column + l.line = s.position.Line + switch x { + case ':': + if commt { + break + } + l.token = str + if key { + l.value = zKey + c <- l + // Next token is a space, eat it + s.tokenText() + key = false + str = "" + } else { + l.value = zValue + } + case ';': + commt = true + case '\n': + if commt { + // Reset a comment + commt = false + } + l.value = zValue + l.token = str + c <- l + str = "" + commt = false + key = true + default: + if commt { + break + } + str += string(x) + } + x, err = s.tokenText() + } + if len(str) > 0 { + // Send remainder + l.token = str + l.value = zValue + c <- l + } +} diff --git a/vendor/github.com/miekg/dns/dnssec_privkey.go b/vendor/github.com/miekg/dns/dnssec_privkey.go new file mode 100644 index 00000000..56f3ea93 --- /dev/null +++ b/vendor/github.com/miekg/dns/dnssec_privkey.go @@ -0,0 +1,85 @@ +package dns + +import ( + "crypto" + "crypto/dsa" + "crypto/ecdsa" + "crypto/rsa" + "math/big" + "strconv" +) + +const format = "Private-key-format: v1.3\n" + +// PrivateKeyString converts a PrivateKey to a string. This string has the same +// format as the private-key-file of BIND9 (Private-key-format: v1.3). +// It needs some info from the key (the algorithm), so its a method of the DNSKEY +// It supports rsa.PrivateKey, ecdsa.PrivateKey and dsa.PrivateKey +func (r *DNSKEY) PrivateKeyString(p crypto.PrivateKey) string { + algorithm := strconv.Itoa(int(r.Algorithm)) + algorithm += " (" + AlgorithmToString[r.Algorithm] + ")" + + switch p := p.(type) { + case *rsa.PrivateKey: + modulus := toBase64(p.PublicKey.N.Bytes()) + e := big.NewInt(int64(p.PublicKey.E)) + publicExponent := toBase64(e.Bytes()) + privateExponent := toBase64(p.D.Bytes()) + prime1 := toBase64(p.Primes[0].Bytes()) + prime2 := toBase64(p.Primes[1].Bytes()) + // Calculate Exponent1/2 and Coefficient as per: http://en.wikipedia.org/wiki/RSA#Using_the_Chinese_remainder_algorithm + // and from: http://code.google.com/p/go/issues/detail?id=987 + one := big.NewInt(1) + p1 := big.NewInt(0).Sub(p.Primes[0], one) + q1 := big.NewInt(0).Sub(p.Primes[1], one) + exp1 := big.NewInt(0).Mod(p.D, p1) + exp2 := big.NewInt(0).Mod(p.D, q1) + coeff := big.NewInt(0).ModInverse(p.Primes[1], p.Primes[0]) + + exponent1 := toBase64(exp1.Bytes()) + exponent2 := toBase64(exp2.Bytes()) + coefficient := toBase64(coeff.Bytes()) + + return format + + "Algorithm: " + algorithm + "\n" + + "Modulus: " + modulus + "\n" + + "PublicExponent: " + publicExponent + "\n" + + "PrivateExponent: " + privateExponent + "\n" + + "Prime1: " + prime1 + "\n" + + "Prime2: " + prime2 + "\n" + + "Exponent1: " + exponent1 + "\n" + + "Exponent2: " + exponent2 + "\n" + + "Coefficient: " + coefficient + "\n" + + case *ecdsa.PrivateKey: + var intlen int + switch r.Algorithm { + case ECDSAP256SHA256: + intlen = 32 + case ECDSAP384SHA384: + intlen = 48 + } + private := toBase64(intToBytes(p.D, intlen)) + return format + + "Algorithm: " + algorithm + "\n" + + "PrivateKey: " + private + "\n" + + case *dsa.PrivateKey: + T := divRoundUp(divRoundUp(p.PublicKey.Parameters.G.BitLen(), 8)-64, 8) + prime := toBase64(intToBytes(p.PublicKey.Parameters.P, 64+T*8)) + subprime := toBase64(intToBytes(p.PublicKey.Parameters.Q, 20)) + base := toBase64(intToBytes(p.PublicKey.Parameters.G, 64+T*8)) + priv := toBase64(intToBytes(p.X, 20)) + pub := toBase64(intToBytes(p.PublicKey.Y, 64+T*8)) + return format + + "Algorithm: " + algorithm + "\n" + + "Prime(p): " + prime + "\n" + + "Subprime(q): " + subprime + "\n" + + "Base(g): " + base + "\n" + + "Private_value(x): " + priv + "\n" + + "Public_value(y): " + pub + "\n" + + default: + return "" + } +} diff --git a/vendor/github.com/miekg/dns/doc.go b/vendor/github.com/miekg/dns/doc.go new file mode 100644 index 00000000..89eace59 --- /dev/null +++ b/vendor/github.com/miekg/dns/doc.go @@ -0,0 +1,251 @@ +/* +Package dns implements a full featured interface to the Domain Name System. +Server- and client-side programming is supported. +The package allows complete control over what is send out to the DNS. The package +API follows the less-is-more principle, by presenting a small, clean interface. + +The package dns supports (asynchronous) querying/replying, incoming/outgoing zone transfers, +TSIG, EDNS0, dynamic updates, notifies and DNSSEC validation/signing. +Note that domain names MUST be fully qualified, before sending them, unqualified +names in a message will result in a packing failure. + +Resource records are native types. They are not stored in wire format. +Basic usage pattern for creating a new resource record: + + r := new(dns.MX) + r.Hdr = dns.RR_Header{Name: "miek.nl.", Rrtype: dns.TypeMX, + Class: dns.ClassINET, Ttl: 3600} + r.Preference = 10 + r.Mx = "mx.miek.nl." + +Or directly from a string: + + mx, err := dns.NewRR("miek.nl. 3600 IN MX 10 mx.miek.nl.") + +Or when the default TTL (3600) and class (IN) suit you: + + mx, err := dns.NewRR("miek.nl. MX 10 mx.miek.nl.") + +Or even: + + mx, err := dns.NewRR("$ORIGIN nl.\nmiek 1H IN MX 10 mx.miek") + +In the DNS messages are exchanged, these messages contain resource +records (sets). Use pattern for creating a message: + + m := new(dns.Msg) + m.SetQuestion("miek.nl.", dns.TypeMX) + +Or when not certain if the domain name is fully qualified: + + m.SetQuestion(dns.Fqdn("miek.nl"), dns.TypeMX) + +The message m is now a message with the question section set to ask +the MX records for the miek.nl. zone. + +The following is slightly more verbose, but more flexible: + + m1 := new(dns.Msg) + m1.Id = dns.Id() + m1.RecursionDesired = true + m1.Question = make([]dns.Question, 1) + m1.Question[0] = dns.Question{"miek.nl.", dns.TypeMX, dns.ClassINET} + +After creating a message it can be send. +Basic use pattern for synchronous querying the DNS at a +server configured on 127.0.0.1 and port 53: + + c := new(dns.Client) + in, rtt, err := c.Exchange(m1, "127.0.0.1:53") + +Suppressing multiple outstanding queries (with the same question, type and +class) is as easy as setting: + + c.SingleInflight = true + +If these "advanced" features are not needed, a simple UDP query can be send, +with: + + in, err := dns.Exchange(m1, "127.0.0.1:53") + +When this functions returns you will get dns message. A dns message consists +out of four sections. +The question section: in.Question, the answer section: in.Answer, +the authority section: in.Ns and the additional section: in.Extra. + +Each of these sections (except the Question section) contain a []RR. Basic +use pattern for accessing the rdata of a TXT RR as the first RR in +the Answer section: + + if t, ok := in.Answer[0].(*dns.TXT); ok { + // do something with t.Txt + } + +Domain Name and TXT Character String Representations + +Both domain names and TXT character strings are converted to presentation +form both when unpacked and when converted to strings. + +For TXT character strings, tabs, carriage returns and line feeds will be +converted to \t, \r and \n respectively. Back slashes and quotations marks +will be escaped. Bytes below 32 and above 127 will be converted to \DDD +form. + +For domain names, in addition to the above rules brackets, periods, +spaces, semicolons and the at symbol are escaped. + +DNSSEC + +DNSSEC (DNS Security Extension) adds a layer of security to the DNS. It +uses public key cryptography to sign resource records. The +public keys are stored in DNSKEY records and the signatures in RRSIG records. + +Requesting DNSSEC information for a zone is done by adding the DO (DNSSEC OK) bit +to an request. + + m := new(dns.Msg) + m.SetEdns0(4096, true) + +Signature generation, signature verification and key generation are all supported. + +DYNAMIC UPDATES + +Dynamic updates reuses the DNS message format, but renames three of +the sections. Question is Zone, Answer is Prerequisite, Authority is +Update, only the Additional is not renamed. See RFC 2136 for the gory details. + +You can set a rather complex set of rules for the existence of absence of +certain resource records or names in a zone to specify if resource records +should be added or removed. The table from RFC 2136 supplemented with the Go +DNS function shows which functions exist to specify the prerequisites. + + 3.2.4 - Table Of Metavalues Used In Prerequisite Section + + CLASS TYPE RDATA Meaning Function + -------------------------------------------------------------- + ANY ANY empty Name is in use dns.NameUsed + ANY rrset empty RRset exists (value indep) dns.RRsetUsed + NONE ANY empty Name is not in use dns.NameNotUsed + NONE rrset empty RRset does not exist dns.RRsetNotUsed + zone rrset rr RRset exists (value dep) dns.Used + +The prerequisite section can also be left empty. +If you have decided on the prerequisites you can tell what RRs should +be added or deleted. The next table shows the options you have and +what functions to call. + + 3.4.2.6 - Table Of Metavalues Used In Update Section + + CLASS TYPE RDATA Meaning Function + --------------------------------------------------------------- + ANY ANY empty Delete all RRsets from name dns.RemoveName + ANY rrset empty Delete an RRset dns.RemoveRRset + NONE rrset rr Delete an RR from RRset dns.Remove + zone rrset rr Add to an RRset dns.Insert + +TRANSACTION SIGNATURE + +An TSIG or transaction signature adds a HMAC TSIG record to each message sent. +The supported algorithms include: HmacMD5, HmacSHA1, HmacSHA256 and HmacSHA512. + +Basic use pattern when querying with a TSIG name "axfr." (note that these key names +must be fully qualified - as they are domain names) and the base64 secret +"so6ZGir4GPAqINNh9U5c3A==": + + c := new(dns.Client) + c.TsigSecret = map[string]string{"axfr.": "so6ZGir4GPAqINNh9U5c3A=="} + m := new(dns.Msg) + m.SetQuestion("miek.nl.", dns.TypeMX) + m.SetTsig("axfr.", dns.HmacMD5, 300, time.Now().Unix()) + ... + // When sending the TSIG RR is calculated and filled in before sending + +When requesting an zone transfer (almost all TSIG usage is when requesting zone transfers), with +TSIG, this is the basic use pattern. In this example we request an AXFR for +miek.nl. with TSIG key named "axfr." and secret "so6ZGir4GPAqINNh9U5c3A==" +and using the server 176.58.119.54: + + t := new(dns.Transfer) + m := new(dns.Msg) + t.TsigSecret = map[string]string{"axfr.": "so6ZGir4GPAqINNh9U5c3A=="} + m.SetAxfr("miek.nl.") + m.SetTsig("axfr.", dns.HmacMD5, 300, time.Now().Unix()) + c, err := t.In(m, "176.58.119.54:53") + for r := range c { ... } + +You can now read the records from the transfer as they come in. Each envelope is checked with TSIG. +If something is not correct an error is returned. + +Basic use pattern validating and replying to a message that has TSIG set. + + server := &dns.Server{Addr: ":53", Net: "udp"} + server.TsigSecret = map[string]string{"axfr.": "so6ZGir4GPAqINNh9U5c3A=="} + go server.ListenAndServe() + dns.HandleFunc(".", handleRequest) + + func handleRequest(w dns.ResponseWriter, r *dns.Msg) { + m := new(dns.Msg) + m.SetReply(r) + if r.IsTsig() { + if w.TsigStatus() == nil { + // *Msg r has an TSIG record and it was validated + m.SetTsig("axfr.", dns.HmacMD5, 300, time.Now().Unix()) + } else { + // *Msg r has an TSIG records and it was not valided + } + } + w.WriteMsg(m) + } + +PRIVATE RRS + +RFC 6895 sets aside a range of type codes for private use. This range +is 65,280 - 65,534 (0xFF00 - 0xFFFE). When experimenting with new Resource Records these +can be used, before requesting an official type code from IANA. + +see http://miek.nl/posts/2014/Sep/21/Private%20RRs%20and%20IDN%20in%20Go%20DNS/ for more +information. + +EDNS0 + +EDNS0 is an extension mechanism for the DNS defined in RFC 2671 and updated +by RFC 6891. It defines an new RR type, the OPT RR, which is then completely +abused. +Basic use pattern for creating an (empty) OPT RR: + + o := new(dns.OPT) + o.Hdr.Name = "." // MUST be the root zone, per definition. + o.Hdr.Rrtype = dns.TypeOPT + +The rdata of an OPT RR consists out of a slice of EDNS0 (RFC 6891) +interfaces. Currently only a few have been standardized: EDNS0_NSID +(RFC 5001) and EDNS0_SUBNET (draft-vandergaast-edns-client-subnet-02). Note +that these options may be combined in an OPT RR. +Basic use pattern for a server to check if (and which) options are set: + + // o is a dns.OPT + for _, s := range o.Option { + switch e := s.(type) { + case *dns.EDNS0_NSID: + // do stuff with e.Nsid + case *dns.EDNS0_SUBNET: + // access e.Family, e.Address, etc. + } + } + +SIG(0) + +From RFC 2931: + + SIG(0) provides protection for DNS transactions and requests .... + ... protection for glue records, DNS requests, protection for message headers + on requests and responses, and protection of the overall integrity of a response. + +It works like TSIG, except that SIG(0) uses public key cryptography, instead of the shared +secret approach in TSIG. +Supported algorithms: DSA, ECDSAP256SHA256, ECDSAP384SHA384, RSASHA1, RSASHA256 and +RSASHA512. + +Signing subsequent messages in multi-message sessions is not implemented. +*/ +package dns diff --git a/vendor/github.com/miekg/dns/edns.go b/vendor/github.com/miekg/dns/edns.go new file mode 100644 index 00000000..87c8affe --- /dev/null +++ b/vendor/github.com/miekg/dns/edns.go @@ -0,0 +1,514 @@ +package dns + +import ( + "encoding/hex" + "errors" + "net" + "strconv" +) + +// EDNS0 Option codes. +const ( + EDNS0LLQ = 0x1 // long lived queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01 + EDNS0UL = 0x2 // update lease draft: http://files.dns-sd.org/draft-sekar-dns-ul.txt + EDNS0NSID = 0x3 // nsid (RFC5001) + EDNS0DAU = 0x5 // DNSSEC Algorithm Understood + EDNS0DHU = 0x6 // DS Hash Understood + EDNS0N3U = 0x7 // NSEC3 Hash Understood + EDNS0SUBNET = 0x8 // client-subnet (RFC6891) + EDNS0EXPIRE = 0x9 // EDNS0 expire + EDNS0SUBNETDRAFT = 0x50fa // Don't use! Use EDNS0SUBNET + EDNS0LOCALSTART = 0xFDE9 // Beginning of range reserved for local/experimental use (RFC6891) + EDNS0LOCALEND = 0xFFFE // End of range reserved for local/experimental use (RFC6891) + _DO = 1 << 15 // dnssec ok +) + +// OPT is the EDNS0 RR appended to messages to convey extra (meta) information. +// See RFC 6891. +type OPT struct { + Hdr RR_Header + Option []EDNS0 `dns:"opt"` +} + +// Header implements the RR interface. +func (rr *OPT) Header() *RR_Header { + return &rr.Hdr +} + +func (rr *OPT) String() string { + s := "\n;; OPT PSEUDOSECTION:\n; EDNS: version " + strconv.Itoa(int(rr.Version())) + "; " + if rr.Do() { + s += "flags: do; " + } else { + s += "flags: ; " + } + s += "udp: " + strconv.Itoa(int(rr.UDPSize())) + + for _, o := range rr.Option { + switch o.(type) { + case *EDNS0_NSID: + s += "\n; NSID: " + o.String() + h, e := o.pack() + var r string + if e == nil { + for _, c := range h { + r += "(" + string(c) + ")" + } + s += " " + r + } + case *EDNS0_SUBNET: + s += "\n; SUBNET: " + o.String() + if o.(*EDNS0_SUBNET).DraftOption { + s += " (draft)" + } + case *EDNS0_UL: + s += "\n; UPDATE LEASE: " + o.String() + case *EDNS0_LLQ: + s += "\n; LONG LIVED QUERIES: " + o.String() + case *EDNS0_DAU: + s += "\n; DNSSEC ALGORITHM UNDERSTOOD: " + o.String() + case *EDNS0_DHU: + s += "\n; DS HASH UNDERSTOOD: " + o.String() + case *EDNS0_N3U: + s += "\n; NSEC3 HASH UNDERSTOOD: " + o.String() + case *EDNS0_LOCAL: + s += "\n; LOCAL OPT: " + o.String() + } + } + return s +} + +func (rr *OPT) len() int { + l := rr.Hdr.len() + for i := 0; i < len(rr.Option); i++ { + l += 4 // Account for 2-byte option code and 2-byte option length. + lo, _ := rr.Option[i].pack() + l += len(lo) + } + return l +} + +func (rr *OPT) copy() RR { + return &OPT{*rr.Hdr.copyHeader(), rr.Option} +} + +// return the old value -> delete SetVersion? + +// Version returns the EDNS version used. Only zero is defined. +func (rr *OPT) Version() uint8 { + return uint8((rr.Hdr.Ttl & 0x00FF0000) >> 16) +} + +// SetVersion sets the version of EDNS. This is usually zero. +func (rr *OPT) SetVersion(v uint8) { + rr.Hdr.Ttl = rr.Hdr.Ttl&0xFF00FFFF | (uint32(v) << 16) +} + +// ExtendedRcode returns the EDNS extended RCODE field (the upper 8 bits of the TTL). +func (rr *OPT) ExtendedRcode() uint8 { + return uint8((rr.Hdr.Ttl & 0xFF000000) >> 24) +} + +// SetExtendedRcode sets the EDNS extended RCODE field. +func (rr *OPT) SetExtendedRcode(v uint8) { + rr.Hdr.Ttl = rr.Hdr.Ttl&0x00FFFFFF | (uint32(v) << 24) +} + +// UDPSize returns the UDP buffer size. +func (rr *OPT) UDPSize() uint16 { + return rr.Hdr.Class +} + +// SetUDPSize sets the UDP buffer size. +func (rr *OPT) SetUDPSize(size uint16) { + rr.Hdr.Class = size +} + +// Do returns the value of the DO (DNSSEC OK) bit. +func (rr *OPT) Do() bool { + return rr.Hdr.Ttl&_DO == _DO +} + +// SetDo sets the DO (DNSSEC OK) bit. +func (rr *OPT) SetDo() { + rr.Hdr.Ttl |= _DO +} + +// EDNS0 defines an EDNS0 Option. An OPT RR can have multiple options appended to +// it. +type EDNS0 interface { + // Option returns the option code for the option. + Option() uint16 + // pack returns the bytes of the option data. + pack() ([]byte, error) + // unpack sets the data as found in the buffer. Is also sets + // the length of the slice as the length of the option data. + unpack([]byte) error + // String returns the string representation of the option. + String() string +} + +// The nsid EDNS0 option is used to retrieve a nameserver +// identifier. When sending a request Nsid must be set to the empty string +// The identifier is an opaque string encoded as hex. +// Basic use pattern for creating an nsid option: +// +// o := new(dns.OPT) +// o.Hdr.Name = "." +// o.Hdr.Rrtype = dns.TypeOPT +// e := new(dns.EDNS0_NSID) +// e.Code = dns.EDNS0NSID +// e.Nsid = "AA" +// o.Option = append(o.Option, e) +type EDNS0_NSID struct { + Code uint16 // Always EDNS0NSID + Nsid string // This string needs to be hex encoded +} + +func (e *EDNS0_NSID) pack() ([]byte, error) { + h, err := hex.DecodeString(e.Nsid) + if err != nil { + return nil, err + } + return h, nil +} + +func (e *EDNS0_NSID) Option() uint16 { return EDNS0NSID } +func (e *EDNS0_NSID) unpack(b []byte) error { e.Nsid = hex.EncodeToString(b); return nil } +func (e *EDNS0_NSID) String() string { return string(e.Nsid) } + +// EDNS0_SUBNET is the subnet option that is used to give the remote nameserver +// an idea of where the client lives. It can then give back a different +// answer depending on the location or network topology. +// Basic use pattern for creating an subnet option: +// +// o := new(dns.OPT) +// o.Hdr.Name = "." +// o.Hdr.Rrtype = dns.TypeOPT +// e := new(dns.EDNS0_SUBNET) +// e.Code = dns.EDNS0SUBNET +// e.Family = 1 // 1 for IPv4 source address, 2 for IPv6 +// e.NetMask = 32 // 32 for IPV4, 128 for IPv6 +// e.SourceScope = 0 +// e.Address = net.ParseIP("127.0.0.1").To4() // for IPv4 +// // e.Address = net.ParseIP("2001:7b8:32a::2") // for IPV6 +// o.Option = append(o.Option, e) +// +// Note: the spec (draft-ietf-dnsop-edns-client-subnet-00) has some insane logic +// for which netmask applies to the address. This code will parse all the +// available bits when unpacking (up to optlen). When packing it will apply +// SourceNetmask. If you need more advanced logic, patches welcome and good luck. +type EDNS0_SUBNET struct { + Code uint16 // Always EDNS0SUBNET + Family uint16 // 1 for IP, 2 for IP6 + SourceNetmask uint8 + SourceScope uint8 + Address net.IP + DraftOption bool // Set to true if using the old (0x50fa) option code +} + +func (e *EDNS0_SUBNET) Option() uint16 { + if e.DraftOption { + return EDNS0SUBNETDRAFT + } + return EDNS0SUBNET +} + +func (e *EDNS0_SUBNET) pack() ([]byte, error) { + b := make([]byte, 4) + b[0], b[1] = packUint16(e.Family) + b[2] = e.SourceNetmask + b[3] = e.SourceScope + switch e.Family { + case 1: + if e.SourceNetmask > net.IPv4len*8 { + return nil, errors.New("dns: bad netmask") + } + if len(e.Address.To4()) != net.IPv4len { + return nil, errors.New("dns: bad address") + } + ip := e.Address.To4().Mask(net.CIDRMask(int(e.SourceNetmask), net.IPv4len*8)) + needLength := (e.SourceNetmask + 8 - 1) / 8 // division rounding up + b = append(b, ip[:needLength]...) + case 2: + if e.SourceNetmask > net.IPv6len*8 { + return nil, errors.New("dns: bad netmask") + } + if len(e.Address) != net.IPv6len { + return nil, errors.New("dns: bad address") + } + ip := e.Address.Mask(net.CIDRMask(int(e.SourceNetmask), net.IPv6len*8)) + needLength := (e.SourceNetmask + 8 - 1) / 8 // division rounding up + b = append(b, ip[:needLength]...) + default: + return nil, errors.New("dns: bad address family") + } + return b, nil +} + +func (e *EDNS0_SUBNET) unpack(b []byte) error { + if len(b) < 4 { + return ErrBuf + } + e.Family, _ = unpackUint16(b, 0) + e.SourceNetmask = b[2] + e.SourceScope = b[3] + switch e.Family { + case 1: + if e.SourceNetmask > net.IPv4len*8 || e.SourceScope > net.IPv4len*8 { + return errors.New("dns: bad netmask") + } + addr := make([]byte, net.IPv4len) + for i := 0; i < net.IPv4len && 4+i < len(b); i++ { + addr[i] = b[4+i] + } + e.Address = net.IPv4(addr[0], addr[1], addr[2], addr[3]) + case 2: + if e.SourceNetmask > net.IPv6len*8 || e.SourceScope > net.IPv6len*8 { + return errors.New("dns: bad netmask") + } + addr := make([]byte, net.IPv6len) + for i := 0; i < net.IPv6len && 4+i < len(b); i++ { + addr[i] = b[4+i] + } + e.Address = net.IP{addr[0], addr[1], addr[2], addr[3], addr[4], + addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], + addr[11], addr[12], addr[13], addr[14], addr[15]} + default: + return errors.New("dns: bad address family") + } + return nil +} + +func (e *EDNS0_SUBNET) String() (s string) { + if e.Address == nil { + s = "<nil>" + } else if e.Address.To4() != nil { + s = e.Address.String() + } else { + s = "[" + e.Address.String() + "]" + } + s += "/" + strconv.Itoa(int(e.SourceNetmask)) + "/" + strconv.Itoa(int(e.SourceScope)) + return +} + +// The EDNS0_UL (Update Lease) (draft RFC) option is used to tell the server to set +// an expiration on an update RR. This is helpful for clients that cannot clean +// up after themselves. This is a draft RFC and more information can be found at +// http://files.dns-sd.org/draft-sekar-dns-ul.txt +// +// o := new(dns.OPT) +// o.Hdr.Name = "." +// o.Hdr.Rrtype = dns.TypeOPT +// e := new(dns.EDNS0_UL) +// e.Code = dns.EDNS0UL +// e.Lease = 120 // in seconds +// o.Option = append(o.Option, e) +type EDNS0_UL struct { + Code uint16 // Always EDNS0UL + Lease uint32 +} + +func (e *EDNS0_UL) Option() uint16 { return EDNS0UL } +func (e *EDNS0_UL) String() string { return strconv.FormatUint(uint64(e.Lease), 10) } + +// Copied: http://golang.org/src/pkg/net/dnsmsg.go +func (e *EDNS0_UL) pack() ([]byte, error) { + b := make([]byte, 4) + b[0] = byte(e.Lease >> 24) + b[1] = byte(e.Lease >> 16) + b[2] = byte(e.Lease >> 8) + b[3] = byte(e.Lease) + return b, nil +} + +func (e *EDNS0_UL) unpack(b []byte) error { + if len(b) < 4 { + return ErrBuf + } + e.Lease = uint32(b[0])<<24 | uint32(b[1])<<16 | uint32(b[2])<<8 | uint32(b[3]) + return nil +} + +// EDNS0_LLQ stands for Long Lived Queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01 +// Implemented for completeness, as the EDNS0 type code is assigned. +type EDNS0_LLQ struct { + Code uint16 // Always EDNS0LLQ + Version uint16 + Opcode uint16 + Error uint16 + Id uint64 + LeaseLife uint32 +} + +func (e *EDNS0_LLQ) Option() uint16 { return EDNS0LLQ } + +func (e *EDNS0_LLQ) pack() ([]byte, error) { + b := make([]byte, 18) + b[0], b[1] = packUint16(e.Version) + b[2], b[3] = packUint16(e.Opcode) + b[4], b[5] = packUint16(e.Error) + b[6] = byte(e.Id >> 56) + b[7] = byte(e.Id >> 48) + b[8] = byte(e.Id >> 40) + b[9] = byte(e.Id >> 32) + b[10] = byte(e.Id >> 24) + b[11] = byte(e.Id >> 16) + b[12] = byte(e.Id >> 8) + b[13] = byte(e.Id) + b[14] = byte(e.LeaseLife >> 24) + b[15] = byte(e.LeaseLife >> 16) + b[16] = byte(e.LeaseLife >> 8) + b[17] = byte(e.LeaseLife) + return b, nil +} + +func (e *EDNS0_LLQ) unpack(b []byte) error { + if len(b) < 18 { + return ErrBuf + } + e.Version, _ = unpackUint16(b, 0) + e.Opcode, _ = unpackUint16(b, 2) + e.Error, _ = unpackUint16(b, 4) + e.Id = uint64(b[6])<<56 | uint64(b[6+1])<<48 | uint64(b[6+2])<<40 | + uint64(b[6+3])<<32 | uint64(b[6+4])<<24 | uint64(b[6+5])<<16 | uint64(b[6+6])<<8 | uint64(b[6+7]) + e.LeaseLife = uint32(b[14])<<24 | uint32(b[14+1])<<16 | uint32(b[14+2])<<8 | uint32(b[14+3]) + return nil +} + +func (e *EDNS0_LLQ) String() string { + s := strconv.FormatUint(uint64(e.Version), 10) + " " + strconv.FormatUint(uint64(e.Opcode), 10) + + " " + strconv.FormatUint(uint64(e.Error), 10) + " " + strconv.FormatUint(uint64(e.Id), 10) + + " " + strconv.FormatUint(uint64(e.LeaseLife), 10) + return s +} + +type EDNS0_DAU struct { + Code uint16 // Always EDNS0DAU + AlgCode []uint8 +} + +func (e *EDNS0_DAU) Option() uint16 { return EDNS0DAU } +func (e *EDNS0_DAU) pack() ([]byte, error) { return e.AlgCode, nil } +func (e *EDNS0_DAU) unpack(b []byte) error { e.AlgCode = b; return nil } + +func (e *EDNS0_DAU) String() string { + s := "" + for i := 0; i < len(e.AlgCode); i++ { + if a, ok := AlgorithmToString[e.AlgCode[i]]; ok { + s += " " + a + } else { + s += " " + strconv.Itoa(int(e.AlgCode[i])) + } + } + return s +} + +type EDNS0_DHU struct { + Code uint16 // Always EDNS0DHU + AlgCode []uint8 +} + +func (e *EDNS0_DHU) Option() uint16 { return EDNS0DHU } +func (e *EDNS0_DHU) pack() ([]byte, error) { return e.AlgCode, nil } +func (e *EDNS0_DHU) unpack(b []byte) error { e.AlgCode = b; return nil } + +func (e *EDNS0_DHU) String() string { + s := "" + for i := 0; i < len(e.AlgCode); i++ { + if a, ok := HashToString[e.AlgCode[i]]; ok { + s += " " + a + } else { + s += " " + strconv.Itoa(int(e.AlgCode[i])) + } + } + return s +} + +type EDNS0_N3U struct { + Code uint16 // Always EDNS0N3U + AlgCode []uint8 +} + +func (e *EDNS0_N3U) Option() uint16 { return EDNS0N3U } +func (e *EDNS0_N3U) pack() ([]byte, error) { return e.AlgCode, nil } +func (e *EDNS0_N3U) unpack(b []byte) error { e.AlgCode = b; return nil } + +func (e *EDNS0_N3U) String() string { + // Re-use the hash map + s := "" + for i := 0; i < len(e.AlgCode); i++ { + if a, ok := HashToString[e.AlgCode[i]]; ok { + s += " " + a + } else { + s += " " + strconv.Itoa(int(e.AlgCode[i])) + } + } + return s +} + +type EDNS0_EXPIRE struct { + Code uint16 // Always EDNS0EXPIRE + Expire uint32 +} + +func (e *EDNS0_EXPIRE) Option() uint16 { return EDNS0EXPIRE } +func (e *EDNS0_EXPIRE) String() string { return strconv.FormatUint(uint64(e.Expire), 10) } + +func (e *EDNS0_EXPIRE) pack() ([]byte, error) { + b := make([]byte, 4) + b[0] = byte(e.Expire >> 24) + b[1] = byte(e.Expire >> 16) + b[2] = byte(e.Expire >> 8) + b[3] = byte(e.Expire) + return b, nil +} + +func (e *EDNS0_EXPIRE) unpack(b []byte) error { + if len(b) < 4 { + return ErrBuf + } + e.Expire = uint32(b[0])<<24 | uint32(b[1])<<16 | uint32(b[2])<<8 | uint32(b[3]) + return nil +} + +// The EDNS0_LOCAL option is used for local/experimental purposes. The option +// code is recommended to be within the range [EDNS0LOCALSTART, EDNS0LOCALEND] +// (RFC6891), although any unassigned code can actually be used. The content of +// the option is made available in Data, unaltered. +// Basic use pattern for creating a local option: +// +// o := new(dns.OPT) +// o.Hdr.Name = "." +// o.Hdr.Rrtype = dns.TypeOPT +// e := new(dns.EDNS0_LOCAL) +// e.Code = dns.EDNS0LOCALSTART +// e.Data = []byte{72, 82, 74} +// o.Option = append(o.Option, e) +type EDNS0_LOCAL struct { + Code uint16 + Data []byte +} + +func (e *EDNS0_LOCAL) Option() uint16 { return e.Code } +func (e *EDNS0_LOCAL) String() string { + return strconv.FormatInt(int64(e.Code), 10) + ":0x" + hex.EncodeToString(e.Data) +} + +func (e *EDNS0_LOCAL) pack() ([]byte, error) { + b := make([]byte, len(e.Data)) + copied := copy(b, e.Data) + if copied != len(e.Data) { + return nil, ErrBuf + } + return b, nil +} + +func (e *EDNS0_LOCAL) unpack(b []byte) error { + e.Data = make([]byte, len(b)) + copied := copy(e.Data, b) + if copied != len(b) { + return ErrBuf + } + return nil +} diff --git a/vendor/github.com/miekg/dns/format.go b/vendor/github.com/miekg/dns/format.go new file mode 100644 index 00000000..1ac1664f --- /dev/null +++ b/vendor/github.com/miekg/dns/format.go @@ -0,0 +1,96 @@ +package dns + +import ( + "net" + "reflect" + "strconv" +) + +// NumField returns the number of rdata fields r has. +func NumField(r RR) int { + return reflect.ValueOf(r).Elem().NumField() - 1 // Remove RR_Header +} + +// Field returns the rdata field i as a string. Fields are indexed starting from 1. +// RR types that holds slice data, for instance the NSEC type bitmap will return a single +// string where the types are concatenated using a space. +// Accessing non existing fields will cause a panic. +func Field(r RR, i int) string { + if i == 0 { + return "" + } + d := reflect.ValueOf(r).Elem().Field(i) + switch k := d.Kind(); k { + case reflect.String: + return d.String() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return strconv.FormatInt(d.Int(), 10) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return strconv.FormatUint(d.Uint(), 10) + case reflect.Slice: + switch reflect.ValueOf(r).Elem().Type().Field(i).Tag { + case `dns:"a"`: + // TODO(miek): Hmm store this as 16 bytes + if d.Len() < net.IPv6len { + return net.IPv4(byte(d.Index(0).Uint()), + byte(d.Index(1).Uint()), + byte(d.Index(2).Uint()), + byte(d.Index(3).Uint())).String() + } + return net.IPv4(byte(d.Index(12).Uint()), + byte(d.Index(13).Uint()), + byte(d.Index(14).Uint()), + byte(d.Index(15).Uint())).String() + case `dns:"aaaa"`: + return net.IP{ + byte(d.Index(0).Uint()), + byte(d.Index(1).Uint()), + byte(d.Index(2).Uint()), + byte(d.Index(3).Uint()), + byte(d.Index(4).Uint()), + byte(d.Index(5).Uint()), + byte(d.Index(6).Uint()), + byte(d.Index(7).Uint()), + byte(d.Index(8).Uint()), + byte(d.Index(9).Uint()), + byte(d.Index(10).Uint()), + byte(d.Index(11).Uint()), + byte(d.Index(12).Uint()), + byte(d.Index(13).Uint()), + byte(d.Index(14).Uint()), + byte(d.Index(15).Uint()), + }.String() + case `dns:"nsec"`: + if d.Len() == 0 { + return "" + } + s := Type(d.Index(0).Uint()).String() + for i := 1; i < d.Len(); i++ { + s += " " + Type(d.Index(i).Uint()).String() + } + return s + case `dns:"wks"`: + if d.Len() == 0 { + return "" + } + s := strconv.Itoa(int(d.Index(0).Uint())) + for i := 0; i < d.Len(); i++ { + s += " " + strconv.Itoa(int(d.Index(i).Uint())) + } + return s + default: + // if it does not have a tag its a string slice + fallthrough + case `dns:"txt"`: + if d.Len() == 0 { + return "" + } + s := d.Index(0).String() + for i := 1; i < d.Len(); i++ { + s += " " + d.Index(i).String() + } + return s + } + } + return "" +} diff --git a/vendor/github.com/miekg/dns/labels.go b/vendor/github.com/miekg/dns/labels.go new file mode 100644 index 00000000..3944dd06 --- /dev/null +++ b/vendor/github.com/miekg/dns/labels.go @@ -0,0 +1,162 @@ +package dns + +// Holds a bunch of helper functions for dealing with labels. + +// SplitDomainName splits a name string into it's labels. +// www.miek.nl. returns []string{"www", "miek", "nl"} +// The root label (.) returns nil. Note that using +// strings.Split(s) will work in most cases, but does not handle +// escaped dots (\.) for instance. +func SplitDomainName(s string) (labels []string) { + if len(s) == 0 { + return nil + } + fqdnEnd := 0 // offset of the final '.' or the length of the name + idx := Split(s) + begin := 0 + if s[len(s)-1] == '.' { + fqdnEnd = len(s) - 1 + } else { + fqdnEnd = len(s) + } + + switch len(idx) { + case 0: + return nil + case 1: + // no-op + default: + end := 0 + for i := 1; i < len(idx); i++ { + end = idx[i] + labels = append(labels, s[begin:end-1]) + begin = end + } + } + + labels = append(labels, s[begin:fqdnEnd]) + return labels +} + +// CompareDomainName compares the names s1 and s2 and +// returns how many labels they have in common starting from the *right*. +// The comparison stops at the first inequality. The names are not downcased +// before the comparison. +// +// www.miek.nl. and miek.nl. have two labels in common: miek and nl +// www.miek.nl. and www.bla.nl. have one label in common: nl +func CompareDomainName(s1, s2 string) (n int) { + s1 = Fqdn(s1) + s2 = Fqdn(s2) + l1 := Split(s1) + l2 := Split(s2) + + // the first check: root label + if l1 == nil || l2 == nil { + return + } + + j1 := len(l1) - 1 // end + i1 := len(l1) - 2 // start + j2 := len(l2) - 1 + i2 := len(l2) - 2 + // the second check can be done here: last/only label + // before we fall through into the for-loop below + if s1[l1[j1]:] == s2[l2[j2]:] { + n++ + } else { + return + } + for { + if i1 < 0 || i2 < 0 { + break + } + if s1[l1[i1]:l1[j1]] == s2[l2[i2]:l2[j2]] { + n++ + } else { + break + } + j1-- + i1-- + j2-- + i2-- + } + return +} + +// CountLabel counts the the number of labels in the string s. +func CountLabel(s string) (labels int) { + if s == "." { + return + } + off := 0 + end := false + for { + off, end = NextLabel(s, off) + labels++ + if end { + return + } + } +} + +// Split splits a name s into its label indexes. +// www.miek.nl. returns []int{0, 4, 9}, www.miek.nl also returns []int{0, 4, 9}. +// The root name (.) returns nil. Also see SplitDomainName. +func Split(s string) []int { + if s == "." { + return nil + } + idx := make([]int, 1, 3) + off := 0 + end := false + + for { + off, end = NextLabel(s, off) + if end { + return idx + } + idx = append(idx, off) + } +} + +// NextLabel returns the index of the start of the next label in the +// string s starting at offset. +// The bool end is true when the end of the string has been reached. +// Also see PrevLabel. +func NextLabel(s string, offset int) (i int, end bool) { + quote := false + for i = offset; i < len(s)-1; i++ { + switch s[i] { + case '\\': + quote = !quote + default: + quote = false + case '.': + if quote { + quote = !quote + continue + } + return i + 1, false + } + } + return i + 1, true +} + +// PrevLabel returns the index of the label when starting from the right and +// jumping n labels to the left. +// The bool start is true when the start of the string has been overshot. +// Also see NextLabel. +func PrevLabel(s string, n int) (i int, start bool) { + if n == 0 { + return len(s), false + } + lab := Split(s) + if lab == nil { + return 0, true + } + if n > len(lab) { + return 0, true + } + return lab[len(lab)-n], false +} diff --git a/vendor/github.com/miekg/dns/msg.go b/vendor/github.com/miekg/dns/msg.go new file mode 100644 index 00000000..3d13135c --- /dev/null +++ b/vendor/github.com/miekg/dns/msg.go @@ -0,0 +1,2030 @@ +// DNS packet assembly, see RFC 1035. Converting from - Unpack() - +// and to - Pack() - wire format. +// All the packers and unpackers take a (msg []byte, off int) +// and return (off1 int, ok bool). If they return ok==false, they +// also return off1==len(msg), so that the next unpacker will +// also fail. This lets us avoid checks of ok until the end of a +// packing sequence. + +package dns + +import ( + "encoding/base32" + "encoding/base64" + "encoding/hex" + "math/big" + "math/rand" + "net" + "reflect" + "strconv" + "time" +) + +const maxCompressionOffset = 2 << 13 // We have 14 bits for the compression pointer + +var ( + // ErrAlg indicates an error with the (DNSSEC) algorithm. + ErrAlg error = &Error{err: "bad algorithm"} + // ErrAuth indicates an error in the TSIG authentication. + ErrAuth error = &Error{err: "bad authentication"} + // ErrBuf indicates that the buffer used it too small for the message. + ErrBuf error = &Error{err: "buffer size too small"} + // ErrConnEmpty indicates a connection is being uses before it is initialized. + ErrConnEmpty error = &Error{err: "conn has no connection"} + // ErrExtendedRcode ... + ErrExtendedRcode error = &Error{err: "bad extended rcode"} + // ErrFqdn indicates that a domain name does not have a closing dot. + ErrFqdn error = &Error{err: "domain must be fully qualified"} + // ErrId indicates there is a mismatch with the message's ID. + ErrId error = &Error{err: "id mismatch"} + // ErrKeyAlg indicates that the algorithm in the key is not valid. + ErrKeyAlg error = &Error{err: "bad key algorithm"} + ErrKey error = &Error{err: "bad key"} + ErrKeySize error = &Error{err: "bad key size"} + ErrNoSig error = &Error{err: "no signature found"} + ErrPrivKey error = &Error{err: "bad private key"} + ErrRcode error = &Error{err: "bad rcode"} + ErrRdata error = &Error{err: "bad rdata"} + ErrRRset error = &Error{err: "bad rrset"} + ErrSecret error = &Error{err: "no secrets defined"} + ErrShortRead error = &Error{err: "short read"} + // ErrSig indicates that a signature can not be cryptographically validated. + ErrSig error = &Error{err: "bad signature"} + // ErrSOA indicates that no SOA RR was seen when doing zone transfers. + ErrSoa error = &Error{err: "no SOA"} + // ErrTime indicates a timing error in TSIG authentication. + ErrTime error = &Error{err: "bad time"} +) + +// Id, by default, returns a 16 bits random number to be used as a +// message id. The random provided should be good enough. This being a +// variable the function can be reassigned to a custom function. +// For instance, to make it return a static value: +// +// dns.Id = func() uint16 { return 3 } +var Id func() uint16 = id + +// MsgHdr is a a manually-unpacked version of (id, bits). +type MsgHdr struct { + Id uint16 + Response bool + Opcode int + Authoritative bool + Truncated bool + RecursionDesired bool + RecursionAvailable bool + Zero bool + AuthenticatedData bool + CheckingDisabled bool + Rcode int +} + +// Msg contains the layout of a DNS message. +type Msg struct { + MsgHdr + Compress bool `json:"-"` // If true, the message will be compressed when converted to wire format. This not part of the official DNS packet format. + Question []Question // Holds the RR(s) of the question section. + Answer []RR // Holds the RR(s) of the answer section. + Ns []RR // Holds the RR(s) of the authority section. + Extra []RR // Holds the RR(s) of the additional section. +} + +// TypeToString is a map of strings for each RR wire type. +var TypeToString = map[uint16]string{ + TypeA: "A", + TypeAAAA: "AAAA", + TypeAFSDB: "AFSDB", + TypeANY: "ANY", // Meta RR + TypeATMA: "ATMA", + TypeAXFR: "AXFR", // Meta RR + TypeCAA: "CAA", + TypeCDNSKEY: "CDNSKEY", + TypeCDS: "CDS", + TypeCERT: "CERT", + TypeCNAME: "CNAME", + TypeDHCID: "DHCID", + TypeDLV: "DLV", + TypeDNAME: "DNAME", + TypeDNSKEY: "DNSKEY", + TypeDS: "DS", + TypeEID: "EID", + TypeEUI48: "EUI48", + TypeEUI64: "EUI64", + TypeGID: "GID", + TypeGPOS: "GPOS", + TypeHINFO: "HINFO", + TypeHIP: "HIP", + TypeIPSECKEY: "IPSECKEY", + TypeISDN: "ISDN", + TypeIXFR: "IXFR", // Meta RR + TypeKEY: "KEY", + TypeKX: "KX", + TypeL32: "L32", + TypeL64: "L64", + TypeLOC: "LOC", + TypeLP: "LP", + TypeMB: "MB", + TypeMD: "MD", + TypeMF: "MF", + TypeMG: "MG", + TypeMINFO: "MINFO", + TypeMR: "MR", + TypeMX: "MX", + TypeNAPTR: "NAPTR", + TypeNID: "NID", + TypeNINFO: "NINFO", + TypeNIMLOC: "NIMLOC", + TypeNS: "NS", + TypeNSAPPTR: "NSAP-PTR", + TypeNSEC3: "NSEC3", + TypeNSEC3PARAM: "NSEC3PARAM", + TypeNSEC: "NSEC", + TypeNULL: "NULL", + TypeOPT: "OPT", + TypeOPENPGPKEY: "OPENPGPKEY", + TypePTR: "PTR", + TypeRKEY: "RKEY", + TypeRP: "RP", + TypeRRSIG: "RRSIG", + TypeRT: "RT", + TypeSIG: "SIG", + TypeSOA: "SOA", + TypeSPF: "SPF", + TypeSRV: "SRV", + TypeSSHFP: "SSHFP", + TypeTA: "TA", + TypeTALINK: "TALINK", + TypeTKEY: "TKEY", // Meta RR + TypeTLSA: "TLSA", + TypeTSIG: "TSIG", // Meta RR + TypeTXT: "TXT", + TypePX: "PX", + TypeUID: "UID", + TypeUINFO: "UINFO", + TypeUNSPEC: "UNSPEC", + TypeURI: "URI", + TypeWKS: "WKS", + TypeX25: "X25", +} + +// StringToType is the reverse of TypeToString, needed for string parsing. +var StringToType = reverseInt16(TypeToString) + +// StringToClass is the reverse of ClassToString, needed for string parsing. +var StringToClass = reverseInt16(ClassToString) + +// Map of opcodes strings. +var StringToOpcode = reverseInt(OpcodeToString) + +// Map of rcodes strings. +var StringToRcode = reverseInt(RcodeToString) + +// ClassToString is a maps Classes to strings for each CLASS wire type. +var ClassToString = map[uint16]string{ + ClassINET: "IN", + ClassCSNET: "CS", + ClassCHAOS: "CH", + ClassHESIOD: "HS", + ClassNONE: "NONE", + ClassANY: "ANY", +} + +// OpcodeToString maps Opcodes to strings. +var OpcodeToString = map[int]string{ + OpcodeQuery: "QUERY", + OpcodeIQuery: "IQUERY", + OpcodeStatus: "STATUS", + OpcodeNotify: "NOTIFY", + OpcodeUpdate: "UPDATE", +} + +// RcodeToString maps Rcodes to strings. +var RcodeToString = map[int]string{ + RcodeSuccess: "NOERROR", + RcodeFormatError: "FORMERR", + RcodeServerFailure: "SERVFAIL", + RcodeNameError: "NXDOMAIN", + RcodeNotImplemented: "NOTIMPL", + RcodeRefused: "REFUSED", + RcodeYXDomain: "YXDOMAIN", // From RFC 2136 + RcodeYXRrset: "YXRRSET", + RcodeNXRrset: "NXRRSET", + RcodeNotAuth: "NOTAUTH", + RcodeNotZone: "NOTZONE", + RcodeBadSig: "BADSIG", // Also known as RcodeBadVers, see RFC 6891 + // RcodeBadVers: "BADVERS", + RcodeBadKey: "BADKEY", + RcodeBadTime: "BADTIME", + RcodeBadMode: "BADMODE", + RcodeBadName: "BADNAME", + RcodeBadAlg: "BADALG", + RcodeBadTrunc: "BADTRUNC", +} + +// Rather than write the usual handful of routines to pack and +// unpack every message that can appear on the wire, we use +// reflection to write a generic pack/unpack for structs and then +// use it. Thus, if in the future we need to define new message +// structs, no new pack/unpack/printing code needs to be written. + +// Domain names are a sequence of counted strings +// split at the dots. They end with a zero-length string. + +// PackDomainName packs a domain name s into msg[off:]. +// If compression is wanted compress must be true and the compression +// map needs to hold a mapping between domain names and offsets +// pointing into msg. +func PackDomainName(s string, msg []byte, off int, compression map[string]int, compress bool) (off1 int, err error) { + off1, _, err = packDomainName(s, msg, off, compression, compress) + return +} + +func packDomainName(s string, msg []byte, off int, compression map[string]int, compress bool) (off1 int, labels int, err error) { + // special case if msg == nil + lenmsg := 256 + if msg != nil { + lenmsg = len(msg) + } + ls := len(s) + if ls == 0 { // Ok, for instance when dealing with update RR without any rdata. + return off, 0, nil + } + // If not fully qualified, error out, but only if msg == nil #ugly + switch { + case msg == nil: + if s[ls-1] != '.' { + s += "." + ls++ + } + case msg != nil: + if s[ls-1] != '.' { + return lenmsg, 0, ErrFqdn + } + } + // Each dot ends a segment of the name. + // We trade each dot byte for a length byte. + // Except for escaped dots (\.), which are normal dots. + // There is also a trailing zero. + + // Compression + nameoffset := -1 + pointer := -1 + // Emit sequence of counted strings, chopping at dots. + begin := 0 + bs := []byte(s) + roBs, bsFresh, escapedDot := s, true, false + for i := 0; i < ls; i++ { + if bs[i] == '\\' { + for j := i; j < ls-1; j++ { + bs[j] = bs[j+1] + } + ls-- + if off+1 > lenmsg { + return lenmsg, labels, ErrBuf + } + // check for \DDD + if i+2 < ls && isDigit(bs[i]) && isDigit(bs[i+1]) && isDigit(bs[i+2]) { + bs[i] = dddToByte(bs[i:]) + for j := i + 1; j < ls-2; j++ { + bs[j] = bs[j+2] + } + ls -= 2 + } else if bs[i] == 't' { + bs[i] = '\t' + } else if bs[i] == 'r' { + bs[i] = '\r' + } else if bs[i] == 'n' { + bs[i] = '\n' + } + escapedDot = bs[i] == '.' + bsFresh = false + continue + } + + if bs[i] == '.' { + if i > 0 && bs[i-1] == '.' && !escapedDot { + // two dots back to back is not legal + return lenmsg, labels, ErrRdata + } + if i-begin >= 1<<6 { // top two bits of length must be clear + return lenmsg, labels, ErrRdata + } + // off can already (we're in a loop) be bigger than len(msg) + // this happens when a name isn't fully qualified + if off+1 > lenmsg { + return lenmsg, labels, ErrBuf + } + if msg != nil { + msg[off] = byte(i - begin) + } + offset := off + off++ + for j := begin; j < i; j++ { + if off+1 > lenmsg { + return lenmsg, labels, ErrBuf + } + if msg != nil { + msg[off] = bs[j] + } + off++ + } + if compress && !bsFresh { + roBs = string(bs) + bsFresh = true + } + // Dont try to compress '.' + if compress && roBs[begin:] != "." { + if p, ok := compression[roBs[begin:]]; !ok { + // Only offsets smaller than this can be used. + if offset < maxCompressionOffset { + compression[roBs[begin:]] = offset + } + } else { + // The first hit is the longest matching dname + // keep the pointer offset we get back and store + // the offset of the current name, because that's + // where we need to insert the pointer later + + // If compress is true, we're allowed to compress this dname + if pointer == -1 && compress { + pointer = p // Where to point to + nameoffset = offset // Where to point from + break + } + } + } + labels++ + begin = i + 1 + } + escapedDot = false + } + // Root label is special + if len(bs) == 1 && bs[0] == '.' { + return off, labels, nil + } + // If we did compression and we find something add the pointer here + if pointer != -1 { + // We have two bytes (14 bits) to put the pointer in + // if msg == nil, we will never do compression + msg[nameoffset], msg[nameoffset+1] = packUint16(uint16(pointer ^ 0xC000)) + off = nameoffset + 1 + goto End + } + if msg != nil { + msg[off] = 0 + } +End: + off++ + return off, labels, nil +} + +// Unpack a domain name. +// In addition to the simple sequences of counted strings above, +// domain names are allowed to refer to strings elsewhere in the +// packet, to avoid repeating common suffixes when returning +// many entries in a single domain. The pointers are marked +// by a length byte with the top two bits set. Ignoring those +// two bits, that byte and the next give a 14 bit offset from msg[0] +// where we should pick up the trail. +// Note that if we jump elsewhere in the packet, +// we return off1 == the offset after the first pointer we found, +// which is where the next record will start. +// In theory, the pointers are only allowed to jump backward. +// We let them jump anywhere and stop jumping after a while. + +// UnpackDomainName unpacks a domain name into a string. +func UnpackDomainName(msg []byte, off int) (string, int, error) { + s := make([]byte, 0, 64) + off1 := 0 + lenmsg := len(msg) + ptr := 0 // number of pointers followed +Loop: + for { + if off >= lenmsg { + return "", lenmsg, ErrBuf + } + c := int(msg[off]) + off++ + switch c & 0xC0 { + case 0x00: + if c == 0x00 { + // end of name + break Loop + } + // literal string + if off+c > lenmsg { + return "", lenmsg, ErrBuf + } + for j := off; j < off+c; j++ { + switch b := msg[j]; b { + case '.', '(', ')', ';', ' ', '@': + fallthrough + case '"', '\\': + s = append(s, '\\', b) + case '\t': + s = append(s, '\\', 't') + case '\r': + s = append(s, '\\', 'r') + default: + if b < 32 || b >= 127 { // unprintable use \DDD + var buf [3]byte + bufs := strconv.AppendInt(buf[:0], int64(b), 10) + s = append(s, '\\') + for i := 0; i < 3-len(bufs); i++ { + s = append(s, '0') + } + for _, r := range bufs { + s = append(s, r) + } + } else { + s = append(s, b) + } + } + } + s = append(s, '.') + off += c + case 0xC0: + // pointer to somewhere else in msg. + // remember location after first ptr, + // since that's how many bytes we consumed. + // also, don't follow too many pointers -- + // maybe there's a loop. + if off >= lenmsg { + return "", lenmsg, ErrBuf + } + c1 := msg[off] + off++ + if ptr == 0 { + off1 = off + } + if ptr++; ptr > 10 { + return "", lenmsg, &Error{err: "too many compression pointers"} + } + off = (c^0xC0)<<8 | int(c1) + default: + // 0x80 and 0x40 are reserved + return "", lenmsg, ErrRdata + } + } + if ptr == 0 { + off1 = off + } + if len(s) == 0 { + s = []byte(".") + } + return string(s), off1, nil +} + +func packTxt(txt []string, msg []byte, offset int, tmp []byte) (int, error) { + var err error + if len(txt) == 0 { + if offset >= len(msg) { + return offset, ErrBuf + } + msg[offset] = 0 + return offset, nil + } + for i := range txt { + if len(txt[i]) > len(tmp) { + return offset, ErrBuf + } + offset, err = packTxtString(txt[i], msg, offset, tmp) + if err != nil { + return offset, err + } + } + return offset, err +} + +func packTxtString(s string, msg []byte, offset int, tmp []byte) (int, error) { + lenByteOffset := offset + if offset >= len(msg) { + return offset, ErrBuf + } + offset++ + bs := tmp[:len(s)] + copy(bs, s) + for i := 0; i < len(bs); i++ { + if len(msg) <= offset { + return offset, ErrBuf + } + if bs[i] == '\\' { + i++ + if i == len(bs) { + break + } + // check for \DDD + if i+2 < len(bs) && isDigit(bs[i]) && isDigit(bs[i+1]) && isDigit(bs[i+2]) { + msg[offset] = dddToByte(bs[i:]) + i += 2 + } else if bs[i] == 't' { + msg[offset] = '\t' + } else if bs[i] == 'r' { + msg[offset] = '\r' + } else if bs[i] == 'n' { + msg[offset] = '\n' + } else { + msg[offset] = bs[i] + } + } else { + msg[offset] = bs[i] + } + offset++ + } + l := offset - lenByteOffset - 1 + if l > 255 { + return offset, &Error{err: "string exceeded 255 bytes in txt"} + } + msg[lenByteOffset] = byte(l) + return offset, nil +} + +func packOctetString(s string, msg []byte, offset int, tmp []byte) (int, error) { + if offset >= len(msg) { + return offset, ErrBuf + } + bs := tmp[:len(s)] + copy(bs, s) + for i := 0; i < len(bs); i++ { + if len(msg) <= offset { + return offset, ErrBuf + } + if bs[i] == '\\' { + i++ + if i == len(bs) { + break + } + // check for \DDD + if i+2 < len(bs) && isDigit(bs[i]) && isDigit(bs[i+1]) && isDigit(bs[i+2]) { + msg[offset] = dddToByte(bs[i:]) + i += 2 + } else { + msg[offset] = bs[i] + } + } else { + msg[offset] = bs[i] + } + offset++ + } + return offset, nil +} + +func unpackTxt(msg []byte, off0 int) (ss []string, off int, err error) { + off = off0 + var s string + for off < len(msg) && err == nil { + s, off, err = unpackTxtString(msg, off) + if err == nil { + ss = append(ss, s) + } + } + return +} + +func unpackTxtString(msg []byte, offset int) (string, int, error) { + if offset+1 > len(msg) { + return "", offset, &Error{err: "overflow unpacking txt"} + } + l := int(msg[offset]) + if offset+l+1 > len(msg) { + return "", offset, &Error{err: "overflow unpacking txt"} + } + s := make([]byte, 0, l) + for _, b := range msg[offset+1 : offset+1+l] { + switch b { + case '"', '\\': + s = append(s, '\\', b) + case '\t': + s = append(s, `\t`...) + case '\r': + s = append(s, `\r`...) + case '\n': + s = append(s, `\n`...) + default: + if b < 32 || b > 127 { // unprintable + var buf [3]byte + bufs := strconv.AppendInt(buf[:0], int64(b), 10) + s = append(s, '\\') + for i := 0; i < 3-len(bufs); i++ { + s = append(s, '0') + } + for _, r := range bufs { + s = append(s, r) + } + } else { + s = append(s, b) + } + } + } + offset += 1 + l + return string(s), offset, nil +} + +// Pack a reflect.StructValue into msg. Struct members can only be uint8, uint16, uint32, string, +// slices and other (often anonymous) structs. +func packStructValue(val reflect.Value, msg []byte, off int, compression map[string]int, compress bool) (off1 int, err error) { + var txtTmp []byte + lenmsg := len(msg) + numfield := val.NumField() + for i := 0; i < numfield; i++ { + typefield := val.Type().Field(i) + if typefield.Tag == `dns:"-"` { + continue + } + switch fv := val.Field(i); fv.Kind() { + default: + return lenmsg, &Error{err: "bad kind packing"} + case reflect.Interface: + // PrivateRR is the only RR implementation that has interface field. + // therefore it's expected that this interface would be PrivateRdata + switch data := fv.Interface().(type) { + case PrivateRdata: + n, err := data.Pack(msg[off:]) + if err != nil { + return lenmsg, err + } + off += n + default: + return lenmsg, &Error{err: "bad kind interface packing"} + } + case reflect.Slice: + switch typefield.Tag { + default: + return lenmsg, &Error{"bad tag packing slice: " + typefield.Tag.Get("dns")} + case `dns:"domain-name"`: + for j := 0; j < val.Field(i).Len(); j++ { + element := val.Field(i).Index(j).String() + off, err = PackDomainName(element, msg, off, compression, false && compress) + if err != nil { + return lenmsg, err + } + } + case `dns:"txt"`: + if txtTmp == nil { + txtTmp = make([]byte, 256*4+1) + } + off, err = packTxt(fv.Interface().([]string), msg, off, txtTmp) + if err != nil { + return lenmsg, err + } + case `dns:"opt"`: // edns + for j := 0; j < val.Field(i).Len(); j++ { + element := val.Field(i).Index(j).Interface() + b, e := element.(EDNS0).pack() + if e != nil { + return lenmsg, &Error{err: "overflow packing opt"} + } + // Option code + msg[off], msg[off+1] = packUint16(element.(EDNS0).Option()) + // Length + msg[off+2], msg[off+3] = packUint16(uint16(len(b))) + off += 4 + if off+len(b) > lenmsg { + copy(msg[off:], b) + off = lenmsg + continue + } + // Actual data + copy(msg[off:off+len(b)], b) + off += len(b) + } + case `dns:"a"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, must be 1 + if val.Field(2).Uint() != 1 { + continue + } + } + // It must be a slice of 4, even if it is 16, we encode + // only the first 4 + if off+net.IPv4len > lenmsg { + return lenmsg, &Error{err: "overflow packing a"} + } + switch fv.Len() { + case net.IPv6len: + msg[off] = byte(fv.Index(12).Uint()) + msg[off+1] = byte(fv.Index(13).Uint()) + msg[off+2] = byte(fv.Index(14).Uint()) + msg[off+3] = byte(fv.Index(15).Uint()) + off += net.IPv4len + case net.IPv4len: + msg[off] = byte(fv.Index(0).Uint()) + msg[off+1] = byte(fv.Index(1).Uint()) + msg[off+2] = byte(fv.Index(2).Uint()) + msg[off+3] = byte(fv.Index(3).Uint()) + off += net.IPv4len + case 0: + // Allowed, for dynamic updates + default: + return lenmsg, &Error{err: "overflow packing a"} + } + case `dns:"aaaa"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, must be 2 + if val.Field(2).Uint() != 2 { + continue + } + } + if fv.Len() == 0 { + break + } + if fv.Len() > net.IPv6len || off+fv.Len() > lenmsg { + return lenmsg, &Error{err: "overflow packing aaaa"} + } + for j := 0; j < net.IPv6len; j++ { + msg[off] = byte(fv.Index(j).Uint()) + off++ + } + case `dns:"wks"`: + // TODO(miek): this is wrong should be lenrd + if off == lenmsg { + break // dyn. updates + } + if val.Field(i).Len() == 0 { + break + } + off1 := off + for j := 0; j < val.Field(i).Len(); j++ { + serv := int(fv.Index(j).Uint()) + if off+serv/8+1 > len(msg) { + return len(msg), &Error{err: "overflow packing wks"} + } + msg[off+serv/8] |= byte(1 << (7 - uint(serv%8))) + if off+serv/8+1 > off1 { + off1 = off + serv/8 + 1 + } + } + off = off1 + case `dns:"nsec"`: // NSEC/NSEC3 + // This is the uint16 type bitmap + if val.Field(i).Len() == 0 { + // Do absolutely nothing + break + } + var lastwindow, lastlength uint16 + for j := 0; j < val.Field(i).Len(); j++ { + t := uint16(fv.Index(j).Uint()) + window := t / 256 + length := (t-window*256)/8 + 1 + if window > lastwindow && lastlength != 0 { + // New window, jump to the new offset + off += int(lastlength) + 2 + lastlength = 0 + } + if window < lastwindow || length < lastlength { + return len(msg), &Error{err: "nsec bits out of order"} + } + if off+2+int(length) > len(msg) { + return len(msg), &Error{err: "overflow packing nsec"} + } + // Setting the window # + msg[off] = byte(window) + // Setting the octets length + msg[off+1] = byte(length) + // Setting the bit value for the type in the right octet + msg[off+1+int(length)] |= byte(1 << (7 - (t % 8))) + lastwindow, lastlength = window, length + } + off += int(lastlength) + 2 + } + case reflect.Struct: + off, err = packStructValue(fv, msg, off, compression, compress) + if err != nil { + return lenmsg, err + } + case reflect.Uint8: + if off+1 > lenmsg { + return lenmsg, &Error{err: "overflow packing uint8"} + } + msg[off] = byte(fv.Uint()) + off++ + case reflect.Uint16: + if off+2 > lenmsg { + return lenmsg, &Error{err: "overflow packing uint16"} + } + i := fv.Uint() + msg[off] = byte(i >> 8) + msg[off+1] = byte(i) + off += 2 + case reflect.Uint32: + if off+4 > lenmsg { + return lenmsg, &Error{err: "overflow packing uint32"} + } + i := fv.Uint() + msg[off] = byte(i >> 24) + msg[off+1] = byte(i >> 16) + msg[off+2] = byte(i >> 8) + msg[off+3] = byte(i) + off += 4 + case reflect.Uint64: + switch typefield.Tag { + default: + if off+8 > lenmsg { + return lenmsg, &Error{err: "overflow packing uint64"} + } + i := fv.Uint() + msg[off] = byte(i >> 56) + msg[off+1] = byte(i >> 48) + msg[off+2] = byte(i >> 40) + msg[off+3] = byte(i >> 32) + msg[off+4] = byte(i >> 24) + msg[off+5] = byte(i >> 16) + msg[off+6] = byte(i >> 8) + msg[off+7] = byte(i) + off += 8 + case `dns:"uint48"`: + // Used in TSIG, where it stops at 48 bits, so we discard the upper 16 + if off+6 > lenmsg { + return lenmsg, &Error{err: "overflow packing uint64 as uint48"} + } + i := fv.Uint() + msg[off] = byte(i >> 40) + msg[off+1] = byte(i >> 32) + msg[off+2] = byte(i >> 24) + msg[off+3] = byte(i >> 16) + msg[off+4] = byte(i >> 8) + msg[off+5] = byte(i) + off += 6 + } + case reflect.String: + // There are multiple string encodings. + // The tag distinguishes ordinary strings from domain names. + s := fv.String() + switch typefield.Tag { + default: + return lenmsg, &Error{"bad tag packing string: " + typefield.Tag.Get("dns")} + case `dns:"base64"`: + b64, e := fromBase64([]byte(s)) + if e != nil { + return lenmsg, e + } + copy(msg[off:off+len(b64)], b64) + off += len(b64) + case `dns:"domain-name"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, 1 and 2 or used for addresses + x := val.Field(2).Uint() + if x == 1 || x == 2 { + continue + } + } + if off, err = PackDomainName(s, msg, off, compression, false && compress); err != nil { + return lenmsg, err + } + case `dns:"cdomain-name"`: + if off, err = PackDomainName(s, msg, off, compression, true && compress); err != nil { + return lenmsg, err + } + case `dns:"size-base32"`: + // This is purely for NSEC3 atm, the previous byte must + // holds the length of the encoded string. As NSEC3 + // is only defined to SHA1, the hashlength is 20 (160 bits) + msg[off-1] = 20 + fallthrough + case `dns:"base32"`: + b32, e := fromBase32([]byte(s)) + if e != nil { + return lenmsg, e + } + copy(msg[off:off+len(b32)], b32) + off += len(b32) + case `dns:"size-hex"`: + fallthrough + case `dns:"hex"`: + // There is no length encoded here + h, e := hex.DecodeString(s) + if e != nil { + return lenmsg, e + } + if off+hex.DecodedLen(len(s)) > lenmsg { + return lenmsg, &Error{err: "overflow packing hex"} + } + copy(msg[off:off+hex.DecodedLen(len(s))], h) + off += hex.DecodedLen(len(s)) + case `dns:"size"`: + // the size is already encoded in the RR, we can safely use the + // length of string. String is RAW (not encoded in hex, nor base64) + copy(msg[off:off+len(s)], s) + off += len(s) + case `dns:"octet"`: + bytesTmp := make([]byte, 256) + off, err = packOctetString(fv.String(), msg, off, bytesTmp) + if err != nil { + return lenmsg, err + } + case `dns:"txt"`: + fallthrough + case "": + if txtTmp == nil { + txtTmp = make([]byte, 256*4+1) + } + off, err = packTxtString(fv.String(), msg, off, txtTmp) + if err != nil { + return lenmsg, err + } + } + } + } + return off, nil +} + +func structValue(any interface{}) reflect.Value { + return reflect.ValueOf(any).Elem() +} + +// PackStruct packs any structure to wire format. +func PackStruct(any interface{}, msg []byte, off int) (off1 int, err error) { + off, err = packStructValue(structValue(any), msg, off, nil, false) + return off, err +} + +func packStructCompress(any interface{}, msg []byte, off int, compression map[string]int, compress bool) (off1 int, err error) { + off, err = packStructValue(structValue(any), msg, off, compression, compress) + return off, err +} + +// Unpack a reflect.StructValue from msg. +// Same restrictions as packStructValue. +func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, err error) { + lenmsg := len(msg) + for i := 0; i < val.NumField(); i++ { + if off > lenmsg { + return lenmsg, &Error{"bad offset unpacking"} + } + switch fv := val.Field(i); fv.Kind() { + default: + return lenmsg, &Error{err: "bad kind unpacking"} + case reflect.Interface: + // PrivateRR is the only RR implementation that has interface field. + // therefore it's expected that this interface would be PrivateRdata + switch data := fv.Interface().(type) { + case PrivateRdata: + n, err := data.Unpack(msg[off:]) + if err != nil { + return lenmsg, err + } + off += n + default: + return lenmsg, &Error{err: "bad kind interface unpacking"} + } + case reflect.Slice: + switch val.Type().Field(i).Tag { + default: + return lenmsg, &Error{"bad tag unpacking slice: " + val.Type().Field(i).Tag.Get("dns")} + case `dns:"domain-name"`: + // HIP record slice of name (or none) + var servers []string + var s string + for off < lenmsg { + s, off, err = UnpackDomainName(msg, off) + if err != nil { + return lenmsg, err + } + servers = append(servers, s) + } + fv.Set(reflect.ValueOf(servers)) + case `dns:"txt"`: + if off == lenmsg { + break + } + var txt []string + txt, off, err = unpackTxt(msg, off) + if err != nil { + return lenmsg, err + } + fv.Set(reflect.ValueOf(txt)) + case `dns:"opt"`: // edns0 + if off == lenmsg { + // This is an EDNS0 (OPT Record) with no rdata + // We can safely return here. + break + } + var edns []EDNS0 + Option: + code := uint16(0) + if off+4 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking opt"} + } + code, off = unpackUint16(msg, off) + optlen, off1 := unpackUint16(msg, off) + if off1+int(optlen) > lenmsg { + return lenmsg, &Error{err: "overflow unpacking opt"} + } + switch code { + case EDNS0NSID: + e := new(EDNS0_NSID) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + case EDNS0SUBNET, EDNS0SUBNETDRAFT: + e := new(EDNS0_SUBNET) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + if code == EDNS0SUBNETDRAFT { + e.DraftOption = true + } + case EDNS0UL: + e := new(EDNS0_UL) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + case EDNS0LLQ: + e := new(EDNS0_LLQ) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + case EDNS0DAU: + e := new(EDNS0_DAU) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + case EDNS0DHU: + e := new(EDNS0_DHU) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + case EDNS0N3U: + e := new(EDNS0_N3U) + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + default: + e := new(EDNS0_LOCAL) + e.Code = code + if err := e.unpack(msg[off1 : off1+int(optlen)]); err != nil { + return lenmsg, err + } + edns = append(edns, e) + off = off1 + int(optlen) + } + if off < lenmsg { + goto Option + } + fv.Set(reflect.ValueOf(edns)) + case `dns:"a"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, must be 1 + if val.Field(2).Uint() != 1 { + continue + } + } + if off == lenmsg { + break // dyn. update + } + if off+net.IPv4len > lenmsg { + return lenmsg, &Error{err: "overflow unpacking a"} + } + fv.Set(reflect.ValueOf(net.IPv4(msg[off], msg[off+1], msg[off+2], msg[off+3]))) + off += net.IPv4len + case `dns:"aaaa"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, must be 2 + if val.Field(2).Uint() != 2 { + continue + } + } + if off == lenmsg { + break + } + if off+net.IPv6len > lenmsg { + return lenmsg, &Error{err: "overflow unpacking aaaa"} + } + fv.Set(reflect.ValueOf(net.IP{msg[off], msg[off+1], msg[off+2], msg[off+3], msg[off+4], + msg[off+5], msg[off+6], msg[off+7], msg[off+8], msg[off+9], msg[off+10], + msg[off+11], msg[off+12], msg[off+13], msg[off+14], msg[off+15]})) + off += net.IPv6len + case `dns:"wks"`: + // Rest of the record is the bitmap + var serv []uint16 + j := 0 + for off < lenmsg { + if off+1 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking wks"} + } + b := msg[off] + // Check the bits one by one, and set the type + if b&0x80 == 0x80 { + serv = append(serv, uint16(j*8+0)) + } + if b&0x40 == 0x40 { + serv = append(serv, uint16(j*8+1)) + } + if b&0x20 == 0x20 { + serv = append(serv, uint16(j*8+2)) + } + if b&0x10 == 0x10 { + serv = append(serv, uint16(j*8+3)) + } + if b&0x8 == 0x8 { + serv = append(serv, uint16(j*8+4)) + } + if b&0x4 == 0x4 { + serv = append(serv, uint16(j*8+5)) + } + if b&0x2 == 0x2 { + serv = append(serv, uint16(j*8+6)) + } + if b&0x1 == 0x1 { + serv = append(serv, uint16(j*8+7)) + } + j++ + off++ + } + fv.Set(reflect.ValueOf(serv)) + case `dns:"nsec"`: // NSEC/NSEC3 + if off == len(msg) { + break + } + // Rest of the record is the type bitmap + var nsec []uint16 + length := 0 + window := 0 + lastwindow := -1 + for off < len(msg) { + if off+2 > len(msg) { + return len(msg), &Error{err: "overflow unpacking nsecx"} + } + window = int(msg[off]) + length = int(msg[off+1]) + off += 2 + if window <= lastwindow { + // RFC 4034: Blocks are present in the NSEC RR RDATA in + // increasing numerical order. + return len(msg), &Error{err: "out of order NSEC block"} + } + if length == 0 { + // RFC 4034: Blocks with no types present MUST NOT be included. + return len(msg), &Error{err: "empty NSEC block"} + } + if length > 32 { + return len(msg), &Error{err: "NSEC block too long"} + } + if off+length > len(msg) { + return len(msg), &Error{err: "overflowing NSEC block"} + } + + // Walk the bytes in the window and extract the type bits + for j := 0; j < length; j++ { + b := msg[off+j] + // Check the bits one by one, and set the type + if b&0x80 == 0x80 { + nsec = append(nsec, uint16(window*256+j*8+0)) + } + if b&0x40 == 0x40 { + nsec = append(nsec, uint16(window*256+j*8+1)) + } + if b&0x20 == 0x20 { + nsec = append(nsec, uint16(window*256+j*8+2)) + } + if b&0x10 == 0x10 { + nsec = append(nsec, uint16(window*256+j*8+3)) + } + if b&0x8 == 0x8 { + nsec = append(nsec, uint16(window*256+j*8+4)) + } + if b&0x4 == 0x4 { + nsec = append(nsec, uint16(window*256+j*8+5)) + } + if b&0x2 == 0x2 { + nsec = append(nsec, uint16(window*256+j*8+6)) + } + if b&0x1 == 0x1 { + nsec = append(nsec, uint16(window*256+j*8+7)) + } + } + off += length + lastwindow = window + } + fv.Set(reflect.ValueOf(nsec)) + } + case reflect.Struct: + off, err = unpackStructValue(fv, msg, off) + if err != nil { + return lenmsg, err + } + if val.Type().Field(i).Name == "Hdr" { + lenrd := off + int(val.FieldByName("Hdr").FieldByName("Rdlength").Uint()) + if lenrd > lenmsg { + return lenmsg, &Error{err: "overflowing header size"} + } + msg = msg[:lenrd] + lenmsg = len(msg) + } + case reflect.Uint8: + if off == lenmsg { + break + } + if off+1 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking uint8"} + } + fv.SetUint(uint64(uint8(msg[off]))) + off++ + case reflect.Uint16: + if off == lenmsg { + break + } + var i uint16 + if off+2 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking uint16"} + } + i, off = unpackUint16(msg, off) + fv.SetUint(uint64(i)) + case reflect.Uint32: + if off == lenmsg { + break + } + if off+4 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking uint32"} + } + fv.SetUint(uint64(uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3]))) + off += 4 + case reflect.Uint64: + if off == lenmsg { + break + } + switch val.Type().Field(i).Tag { + default: + if off+8 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking uint64"} + } + fv.SetUint(uint64(uint64(msg[off])<<56 | uint64(msg[off+1])<<48 | uint64(msg[off+2])<<40 | + uint64(msg[off+3])<<32 | uint64(msg[off+4])<<24 | uint64(msg[off+5])<<16 | uint64(msg[off+6])<<8 | uint64(msg[off+7]))) + off += 8 + case `dns:"uint48"`: + // Used in TSIG where the last 48 bits are occupied, so for now, assume a uint48 (6 bytes) + if off+6 > lenmsg { + return lenmsg, &Error{err: "overflow unpacking uint64 as uint48"} + } + fv.SetUint(uint64(uint64(msg[off])<<40 | uint64(msg[off+1])<<32 | uint64(msg[off+2])<<24 | uint64(msg[off+3])<<16 | + uint64(msg[off+4])<<8 | uint64(msg[off+5]))) + off += 6 + } + case reflect.String: + var s string + if off == lenmsg { + break + } + switch val.Type().Field(i).Tag { + default: + return lenmsg, &Error{"bad tag unpacking string: " + val.Type().Field(i).Tag.Get("dns")} + case `dns:"octet"`: + s = string(msg[off:]) + off = lenmsg + case `dns:"hex"`: + hexend := lenmsg + if val.FieldByName("Hdr").FieldByName("Rrtype").Uint() == uint64(TypeHIP) { + hexend = off + int(val.FieldByName("HitLength").Uint()) + } + if hexend > lenmsg { + return lenmsg, &Error{err: "overflow unpacking HIP hex"} + } + s = hex.EncodeToString(msg[off:hexend]) + off = hexend + case `dns:"base64"`: + // Rest of the RR is base64 encoded value + b64end := lenmsg + if val.FieldByName("Hdr").FieldByName("Rrtype").Uint() == uint64(TypeHIP) { + b64end = off + int(val.FieldByName("PublicKeyLength").Uint()) + } + if b64end > lenmsg { + return lenmsg, &Error{err: "overflow unpacking HIP base64"} + } + s = toBase64(msg[off:b64end]) + off = b64end + case `dns:"cdomain-name"`: + fallthrough + case `dns:"domain-name"`: + if val.Type().String() == "dns.IPSECKEY" { + // Field(2) is GatewayType, 1 and 2 or used for addresses + x := val.Field(2).Uint() + if x == 1 || x == 2 { + continue + } + } + if off == lenmsg { + // zero rdata foo, OK for dyn. updates + break + } + s, off, err = UnpackDomainName(msg, off) + if err != nil { + return lenmsg, err + } + case `dns:"size-base32"`: + var size int + switch val.Type().Name() { + case "NSEC3": + switch val.Type().Field(i).Name { + case "NextDomain": + name := val.FieldByName("HashLength") + size = int(name.Uint()) + } + } + if off+size > lenmsg { + return lenmsg, &Error{err: "overflow unpacking base32"} + } + s = toBase32(msg[off : off+size]) + off += size + case `dns:"size-hex"`: + // a "size" string, but it must be encoded in hex in the string + var size int + switch val.Type().Name() { + case "NSEC3": + switch val.Type().Field(i).Name { + case "Salt": + name := val.FieldByName("SaltLength") + size = int(name.Uint()) + case "NextDomain": + name := val.FieldByName("HashLength") + size = int(name.Uint()) + } + case "TSIG": + switch val.Type().Field(i).Name { + case "MAC": + name := val.FieldByName("MACSize") + size = int(name.Uint()) + case "OtherData": + name := val.FieldByName("OtherLen") + size = int(name.Uint()) + } + } + if off+size > lenmsg { + return lenmsg, &Error{err: "overflow unpacking hex"} + } + s = hex.EncodeToString(msg[off : off+size]) + off += size + case `dns:"txt"`: + fallthrough + case "": + s, off, err = unpackTxtString(msg, off) + } + fv.SetString(s) + } + } + return off, nil +} + +// Helpers for dealing with escaped bytes +func isDigit(b byte) bool { return b >= '0' && b <= '9' } + +func dddToByte(s []byte) byte { + return byte((s[0]-'0')*100 + (s[1]-'0')*10 + (s[2] - '0')) +} + +// UnpackStruct unpacks a binary message from offset off to the interface +// value given. +func UnpackStruct(any interface{}, msg []byte, off int) (int, error) { + return unpackStructValue(structValue(any), msg, off) +} + +// Helper function for packing and unpacking +func intToBytes(i *big.Int, length int) []byte { + buf := i.Bytes() + if len(buf) < length { + b := make([]byte, length) + copy(b[length-len(buf):], buf) + return b + } + return buf +} + +func unpackUint16(msg []byte, off int) (uint16, int) { + return uint16(msg[off])<<8 | uint16(msg[off+1]), off + 2 +} + +func packUint16(i uint16) (byte, byte) { + return byte(i >> 8), byte(i) +} + +func toBase32(b []byte) string { + return base32.HexEncoding.EncodeToString(b) +} + +func fromBase32(s []byte) (buf []byte, err error) { + buflen := base32.HexEncoding.DecodedLen(len(s)) + buf = make([]byte, buflen) + n, err := base32.HexEncoding.Decode(buf, s) + buf = buf[:n] + return +} + +func toBase64(b []byte) string { + return base64.StdEncoding.EncodeToString(b) +} + +func fromBase64(s []byte) (buf []byte, err error) { + buflen := base64.StdEncoding.DecodedLen(len(s)) + buf = make([]byte, buflen) + n, err := base64.StdEncoding.Decode(buf, s) + buf = buf[:n] + return +} + +// PackRR packs a resource record rr into msg[off:]. +// See PackDomainName for documentation about the compression. +func PackRR(rr RR, msg []byte, off int, compression map[string]int, compress bool) (off1 int, err error) { + if rr == nil { + return len(msg), &Error{err: "nil rr"} + } + + off1, err = packStructCompress(rr, msg, off, compression, compress) + if err != nil { + return len(msg), err + } + if rawSetRdlength(msg, off, off1) { + return off1, nil + } + return off, ErrRdata +} + +// UnpackRR unpacks msg[off:] into an RR. +func UnpackRR(msg []byte, off int) (rr RR, off1 int, err error) { + // unpack just the header, to find the rr type and length + var h RR_Header + off0 := off + if off, err = UnpackStruct(&h, msg, off); err != nil { + return nil, len(msg), err + } + end := off + int(h.Rdlength) + // make an rr of that type and re-unpack. + mk, known := typeToRR[h.Rrtype] + if !known { + rr = new(RFC3597) + } else { + rr = mk() + } + off, err = UnpackStruct(rr, msg, off0) + if off != end { + return &h, end, &Error{err: "bad rdlength"} + } + return rr, off, err +} + +// Reverse a map +func reverseInt8(m map[uint8]string) map[string]uint8 { + n := make(map[string]uint8) + for u, s := range m { + n[s] = u + } + return n +} + +func reverseInt16(m map[uint16]string) map[string]uint16 { + n := make(map[string]uint16) + for u, s := range m { + n[s] = u + } + return n +} + +func reverseInt(m map[int]string) map[string]int { + n := make(map[string]int) + for u, s := range m { + n[s] = u + } + return n +} + +// Convert a MsgHdr to a string, with dig-like headers: +// +//;; opcode: QUERY, status: NOERROR, id: 48404 +// +//;; flags: qr aa rd ra; +func (h *MsgHdr) String() string { + if h == nil { + return "<nil> MsgHdr" + } + + s := ";; opcode: " + OpcodeToString[h.Opcode] + s += ", status: " + RcodeToString[h.Rcode] + s += ", id: " + strconv.Itoa(int(h.Id)) + "\n" + + s += ";; flags:" + if h.Response { + s += " qr" + } + if h.Authoritative { + s += " aa" + } + if h.Truncated { + s += " tc" + } + if h.RecursionDesired { + s += " rd" + } + if h.RecursionAvailable { + s += " ra" + } + if h.Zero { // Hmm + s += " z" + } + if h.AuthenticatedData { + s += " ad" + } + if h.CheckingDisabled { + s += " cd" + } + + s += ";" + return s +} + +// Pack packs a Msg: it is converted to to wire format. +// If the dns.Compress is true the message will be in compressed wire format. +func (dns *Msg) Pack() (msg []byte, err error) { + return dns.PackBuffer(nil) +} + +// PackBuffer packs a Msg, using the given buffer buf. If buf is too small +// a new buffer is allocated. +func (dns *Msg) PackBuffer(buf []byte) (msg []byte, err error) { + var dh Header + var compression map[string]int + if dns.Compress { + compression = make(map[string]int) // Compression pointer mappings + } + + if dns.Rcode < 0 || dns.Rcode > 0xFFF { + return nil, ErrRcode + } + if dns.Rcode > 0xF { + // Regular RCODE field is 4 bits + opt := dns.IsEdns0() + if opt == nil { + return nil, ErrExtendedRcode + } + opt.SetExtendedRcode(uint8(dns.Rcode >> 4)) + dns.Rcode &= 0xF + } + + // Convert convenient Msg into wire-like Header. + dh.Id = dns.Id + dh.Bits = uint16(dns.Opcode)<<11 | uint16(dns.Rcode) + if dns.Response { + dh.Bits |= _QR + } + if dns.Authoritative { + dh.Bits |= _AA + } + if dns.Truncated { + dh.Bits |= _TC + } + if dns.RecursionDesired { + dh.Bits |= _RD + } + if dns.RecursionAvailable { + dh.Bits |= _RA + } + if dns.Zero { + dh.Bits |= _Z + } + if dns.AuthenticatedData { + dh.Bits |= _AD + } + if dns.CheckingDisabled { + dh.Bits |= _CD + } + + // Prepare variable sized arrays. + question := dns.Question + answer := dns.Answer + ns := dns.Ns + extra := dns.Extra + + dh.Qdcount = uint16(len(question)) + dh.Ancount = uint16(len(answer)) + dh.Nscount = uint16(len(ns)) + dh.Arcount = uint16(len(extra)) + + // We need the uncompressed length here, because we first pack it and then compress it. + msg = buf + compress := dns.Compress + dns.Compress = false + if packLen := dns.Len() + 1; len(msg) < packLen { + msg = make([]byte, packLen) + } + dns.Compress = compress + + // Pack it in: header and then the pieces. + off := 0 + off, err = packStructCompress(&dh, msg, off, compression, dns.Compress) + if err != nil { + return nil, err + } + for i := 0; i < len(question); i++ { + off, err = packStructCompress(&question[i], msg, off, compression, dns.Compress) + if err != nil { + return nil, err + } + } + for i := 0; i < len(answer); i++ { + off, err = PackRR(answer[i], msg, off, compression, dns.Compress) + if err != nil { + return nil, err + } + } + for i := 0; i < len(ns); i++ { + off, err = PackRR(ns[i], msg, off, compression, dns.Compress) + if err != nil { + return nil, err + } + } + for i := 0; i < len(extra); i++ { + off, err = PackRR(extra[i], msg, off, compression, dns.Compress) + if err != nil { + return nil, err + } + } + return msg[:off], nil +} + +// Unpack unpacks a binary message to a Msg structure. +func (dns *Msg) Unpack(msg []byte) (err error) { + // Header. + var dh Header + off := 0 + if off, err = UnpackStruct(&dh, msg, off); err != nil { + return err + } + dns.Id = dh.Id + dns.Response = (dh.Bits & _QR) != 0 + dns.Opcode = int(dh.Bits>>11) & 0xF + dns.Authoritative = (dh.Bits & _AA) != 0 + dns.Truncated = (dh.Bits & _TC) != 0 + dns.RecursionDesired = (dh.Bits & _RD) != 0 + dns.RecursionAvailable = (dh.Bits & _RA) != 0 + dns.Zero = (dh.Bits & _Z) != 0 + dns.AuthenticatedData = (dh.Bits & _AD) != 0 + dns.CheckingDisabled = (dh.Bits & _CD) != 0 + dns.Rcode = int(dh.Bits & 0xF) + + // Don't pre-alloc these arrays, the incoming lengths are from the network. + dns.Question = make([]Question, 0, 1) + dns.Answer = make([]RR, 0, 10) + dns.Ns = make([]RR, 0, 10) + dns.Extra = make([]RR, 0, 10) + + var q Question + for i := 0; i < int(dh.Qdcount); i++ { + off1 := off + off, err = UnpackStruct(&q, msg, off) + if err != nil { + return err + } + if off1 == off { // Offset does not increase anymore, dh.Qdcount is a lie! + dh.Qdcount = uint16(i) + break + } + + dns.Question = append(dns.Question, q) + + } + // If we see a TC bit being set we return here, without + // an error, because technically it isn't an error. So return + // without parsing the potentially corrupt packet and hitting an error. + // TODO(miek): this isn't the best strategy! + // Better stragey would be: set boolean indicating truncated message, go forth and parse + // until we hit an error, return the message without the latest parsed rr if this boolean + // is true. + if dns.Truncated { + dns.Answer = nil + dns.Ns = nil + dns.Extra = nil + return nil + } + + var r RR + for i := 0; i < int(dh.Ancount); i++ { + off1 := off + r, off, err = UnpackRR(msg, off) + if err != nil { + return err + } + if off1 == off { // Offset does not increase anymore, dh.Ancount is a lie! + dh.Ancount = uint16(i) + break + } + dns.Answer = append(dns.Answer, r) + } + for i := 0; i < int(dh.Nscount); i++ { + off1 := off + r, off, err = UnpackRR(msg, off) + if err != nil { + return err + } + if off1 == off { // Offset does not increase anymore, dh.Nscount is a lie! + dh.Nscount = uint16(i) + break + } + dns.Ns = append(dns.Ns, r) + } + for i := 0; i < int(dh.Arcount); i++ { + off1 := off + r, off, err = UnpackRR(msg, off) + if err != nil { + return err + } + if off1 == off { // Offset does not increase anymore, dh.Arcount is a lie! + dh.Arcount = uint16(i) + break + } + dns.Extra = append(dns.Extra, r) + } + if off != len(msg) { + // TODO(miek) make this an error? + // use PackOpt to let people tell how detailed the error reporting should be? + // println("dns: extra bytes in dns packet", off, "<", len(msg)) + } + return nil +} + +// Convert a complete message to a string with dig-like output. +func (dns *Msg) String() string { + if dns == nil { + return "<nil> MsgHdr" + } + s := dns.MsgHdr.String() + " " + s += "QUERY: " + strconv.Itoa(len(dns.Question)) + ", " + s += "ANSWER: " + strconv.Itoa(len(dns.Answer)) + ", " + s += "AUTHORITY: " + strconv.Itoa(len(dns.Ns)) + ", " + s += "ADDITIONAL: " + strconv.Itoa(len(dns.Extra)) + "\n" + if len(dns.Question) > 0 { + s += "\n;; QUESTION SECTION:\n" + for i := 0; i < len(dns.Question); i++ { + s += dns.Question[i].String() + "\n" + } + } + if len(dns.Answer) > 0 { + s += "\n;; ANSWER SECTION:\n" + for i := 0; i < len(dns.Answer); i++ { + if dns.Answer[i] != nil { + s += dns.Answer[i].String() + "\n" + } + } + } + if len(dns.Ns) > 0 { + s += "\n;; AUTHORITY SECTION:\n" + for i := 0; i < len(dns.Ns); i++ { + if dns.Ns[i] != nil { + s += dns.Ns[i].String() + "\n" + } + } + } + if len(dns.Extra) > 0 { + s += "\n;; ADDITIONAL SECTION:\n" + for i := 0; i < len(dns.Extra); i++ { + if dns.Extra[i] != nil { + s += dns.Extra[i].String() + "\n" + } + } + } + return s +} + +// Len returns the message length when in (un)compressed wire format. +// If dns.Compress is true compression it is taken into account. Len() +// is provided to be a faster way to get the size of the resulting packet, +// than packing it, measuring the size and discarding the buffer. +func (dns *Msg) Len() int { + // We always return one more than needed. + l := 12 // Message header is always 12 bytes + var compression map[string]int + if dns.Compress { + compression = make(map[string]int) + } + for i := 0; i < len(dns.Question); i++ { + l += dns.Question[i].len() + if dns.Compress { + compressionLenHelper(compression, dns.Question[i].Name) + } + } + for i := 0; i < len(dns.Answer); i++ { + l += dns.Answer[i].len() + if dns.Compress { + k, ok := compressionLenSearch(compression, dns.Answer[i].Header().Name) + if ok { + l += 1 - k + } + compressionLenHelper(compression, dns.Answer[i].Header().Name) + k, ok = compressionLenSearchType(compression, dns.Answer[i]) + if ok { + l += 1 - k + } + compressionLenHelperType(compression, dns.Answer[i]) + } + } + for i := 0; i < len(dns.Ns); i++ { + l += dns.Ns[i].len() + if dns.Compress { + k, ok := compressionLenSearch(compression, dns.Ns[i].Header().Name) + if ok { + l += 1 - k + } + compressionLenHelper(compression, dns.Ns[i].Header().Name) + k, ok = compressionLenSearchType(compression, dns.Ns[i]) + if ok { + l += 1 - k + } + compressionLenHelperType(compression, dns.Ns[i]) + } + } + for i := 0; i < len(dns.Extra); i++ { + l += dns.Extra[i].len() + if dns.Compress { + k, ok := compressionLenSearch(compression, dns.Extra[i].Header().Name) + if ok { + l += 1 - k + } + compressionLenHelper(compression, dns.Extra[i].Header().Name) + k, ok = compressionLenSearchType(compression, dns.Extra[i]) + if ok { + l += 1 - k + } + compressionLenHelperType(compression, dns.Extra[i]) + } + } + return l +} + +// Put the parts of the name in the compression map. +func compressionLenHelper(c map[string]int, s string) { + pref := "" + lbs := Split(s) + for j := len(lbs) - 1; j >= 0; j-- { + pref = s[lbs[j]:] + if _, ok := c[pref]; !ok { + c[pref] = len(pref) + } + } +} + +// Look for each part in the compression map and returns its length, +// keep on searching so we get the longest match. +func compressionLenSearch(c map[string]int, s string) (int, bool) { + off := 0 + end := false + if s == "" { // don't bork on bogus data + return 0, false + } + for { + if _, ok := c[s[off:]]; ok { + return len(s[off:]), true + } + if end { + break + } + off, end = NextLabel(s, off) + } + return 0, false +} + +// TODO(miek): should add all types, because the all can be *used* for compression. +func compressionLenHelperType(c map[string]int, r RR) { + switch x := r.(type) { + case *NS: + compressionLenHelper(c, x.Ns) + case *MX: + compressionLenHelper(c, x.Mx) + case *CNAME: + compressionLenHelper(c, x.Target) + case *PTR: + compressionLenHelper(c, x.Ptr) + case *SOA: + compressionLenHelper(c, x.Ns) + compressionLenHelper(c, x.Mbox) + case *MB: + compressionLenHelper(c, x.Mb) + case *MG: + compressionLenHelper(c, x.Mg) + case *MR: + compressionLenHelper(c, x.Mr) + case *MF: + compressionLenHelper(c, x.Mf) + case *MD: + compressionLenHelper(c, x.Md) + case *RT: + compressionLenHelper(c, x.Host) + case *MINFO: + compressionLenHelper(c, x.Rmail) + compressionLenHelper(c, x.Email) + case *AFSDB: + compressionLenHelper(c, x.Hostname) + } +} + +// Only search on compressing these types. +func compressionLenSearchType(c map[string]int, r RR) (int, bool) { + switch x := r.(type) { + case *NS: + return compressionLenSearch(c, x.Ns) + case *MX: + return compressionLenSearch(c, x.Mx) + case *CNAME: + return compressionLenSearch(c, x.Target) + case *PTR: + return compressionLenSearch(c, x.Ptr) + case *SOA: + k, ok := compressionLenSearch(c, x.Ns) + k1, ok1 := compressionLenSearch(c, x.Mbox) + if !ok && !ok1 { + return 0, false + } + return k + k1, true + case *MB: + return compressionLenSearch(c, x.Mb) + case *MG: + return compressionLenSearch(c, x.Mg) + case *MR: + return compressionLenSearch(c, x.Mr) + case *MF: + return compressionLenSearch(c, x.Mf) + case *MD: + return compressionLenSearch(c, x.Md) + case *RT: + return compressionLenSearch(c, x.Host) + case *MINFO: + k, ok := compressionLenSearch(c, x.Rmail) + k1, ok1 := compressionLenSearch(c, x.Email) + if !ok && !ok1 { + return 0, false + } + return k + k1, true + case *AFSDB: + return compressionLenSearch(c, x.Hostname) + } + return 0, false +} + +// id returns a 16 bits random number to be used as a +// message id. The random provided should be good enough. +func id() uint16 { + return uint16(rand.Int()) ^ uint16(time.Now().Nanosecond()) +} + +// Copy returns a new RR which is a deep-copy of r. +func Copy(r RR) RR { + r1 := r.copy() + return r1 +} + +// Copy returns a new *Msg which is a deep-copy of dns. +func (dns *Msg) Copy() *Msg { + return dns.CopyTo(new(Msg)) +} + +// CopyTo copies the contents to the provided message using a deep-copy and returns the copy. +func (dns *Msg) CopyTo(r1 *Msg) *Msg { + r1.MsgHdr = dns.MsgHdr + r1.Compress = dns.Compress + + if len(dns.Question) > 0 { + r1.Question = make([]Question, len(dns.Question)) + copy(r1.Question, dns.Question) // TODO(miek): Question is an immutable value, ok to do a shallow-copy + } + + rrArr := make([]RR, len(dns.Answer)+len(dns.Ns)+len(dns.Extra)) + var rri int + + if len(dns.Answer) > 0 { + rrbegin := rri + for i := 0; i < len(dns.Answer); i++ { + rrArr[rri] = dns.Answer[i].copy() + rri++ + } + r1.Answer = rrArr[rrbegin:rri:rri] + } + + if len(dns.Ns) > 0 { + rrbegin := rri + for i := 0; i < len(dns.Ns); i++ { + rrArr[rri] = dns.Ns[i].copy() + rri++ + } + r1.Ns = rrArr[rrbegin:rri:rri] + } + + if len(dns.Extra) > 0 { + rrbegin := rri + for i := 0; i < len(dns.Extra); i++ { + rrArr[rri] = dns.Extra[i].copy() + rri++ + } + r1.Extra = rrArr[rrbegin:rri:rri] + } + + return r1 +} diff --git a/vendor/github.com/miekg/dns/nsecx.go b/vendor/github.com/miekg/dns/nsecx.go new file mode 100644 index 00000000..d2392c6e --- /dev/null +++ b/vendor/github.com/miekg/dns/nsecx.go @@ -0,0 +1,112 @@ +package dns + +import ( + "crypto/sha1" + "hash" + "io" + "strings" +) + +type saltWireFmt struct { + Salt string `dns:"size-hex"` +} + +// HashName hashes a string (label) according to RFC 5155. It returns the hashed string in +// uppercase. +func HashName(label string, ha uint8, iter uint16, salt string) string { + saltwire := new(saltWireFmt) + saltwire.Salt = salt + wire := make([]byte, DefaultMsgSize) + n, err := PackStruct(saltwire, wire, 0) + if err != nil { + return "" + } + wire = wire[:n] + name := make([]byte, 255) + off, err := PackDomainName(strings.ToLower(label), name, 0, nil, false) + if err != nil { + return "" + } + name = name[:off] + var s hash.Hash + switch ha { + case SHA1: + s = sha1.New() + default: + return "" + } + + // k = 0 + name = append(name, wire...) + io.WriteString(s, string(name)) + nsec3 := s.Sum(nil) + // k > 0 + for k := uint16(0); k < iter; k++ { + s.Reset() + nsec3 = append(nsec3, wire...) + io.WriteString(s, string(nsec3)) + nsec3 = s.Sum(nil) + } + return toBase32(nsec3) +} + +// Denialer is an interface that should be implemented by types that are used to denial +// answers in DNSSEC. +type Denialer interface { + // Cover will check if the (unhashed) name is being covered by this NSEC or NSEC3. + Cover(name string) bool + // Match will check if the ownername matches the (unhashed) name for this NSEC3 or NSEC3. + Match(name string) bool +} + +// Cover implements the Denialer interface. +func (rr *NSEC) Cover(name string) bool { + return true +} + +// Match implements the Denialer interface. +func (rr *NSEC) Match(name string) bool { + return true +} + +// Cover implements the Denialer interface. +func (rr *NSEC3) Cover(name string) bool { + // FIXME(miek): check if the zones match + // FIXME(miek): check if we're not dealing with parent nsec3 + hname := HashName(name, rr.Hash, rr.Iterations, rr.Salt) + labels := Split(rr.Hdr.Name) + if len(labels) < 2 { + return false + } + hash := strings.ToUpper(rr.Hdr.Name[labels[0] : labels[1]-1]) // -1 to remove the dot + if hash == rr.NextDomain { + return false // empty interval + } + if hash > rr.NextDomain { // last name, points to apex + // hname > hash + // hname > rr.NextDomain + // TODO(miek) + } + if hname <= hash { + return false + } + if hname >= rr.NextDomain { + return false + } + return true +} + +// Match implements the Denialer interface. +func (rr *NSEC3) Match(name string) bool { + // FIXME(miek): Check if we are in the same zone + hname := HashName(name, rr.Hash, rr.Iterations, rr.Salt) + labels := Split(rr.Hdr.Name) + if len(labels) < 2 { + return false + } + hash := strings.ToUpper(rr.Hdr.Name[labels[0] : labels[1]-1]) // -1 to remove the . + if hash == hname { + return true + } + return false +} diff --git a/vendor/github.com/miekg/dns/privaterr.go b/vendor/github.com/miekg/dns/privaterr.go new file mode 100644 index 00000000..7290791b --- /dev/null +++ b/vendor/github.com/miekg/dns/privaterr.go @@ -0,0 +1,117 @@ +package dns + +import ( + "fmt" + "strings" +) + +// PrivateRdata is an interface used for implementing "Private Use" RR types, see +// RFC 6895. This allows one to experiment with new RR types, without requesting an +// official type code. Also see dns.PrivateHandle and dns.PrivateHandleRemove. +type PrivateRdata interface { + // String returns the text presentaton of the Rdata of the Private RR. + String() string + // Parse parses the Rdata of the private RR. + Parse([]string) error + // Pack is used when packing a private RR into a buffer. + Pack([]byte) (int, error) + // Unpack is used when unpacking a private RR from a buffer. + // TODO(miek): diff. signature than Pack, see edns0.go for instance. + Unpack([]byte) (int, error) + // Copy copies the Rdata. + Copy(PrivateRdata) error + // Len returns the length in octets of the Rdata. + Len() int +} + +// PrivateRR represents an RR that uses a PrivateRdata user-defined type. +// It mocks normal RRs and implements dns.RR interface. +type PrivateRR struct { + Hdr RR_Header + Data PrivateRdata +} + +func mkPrivateRR(rrtype uint16) *PrivateRR { + // Panics if RR is not an instance of PrivateRR. + rrfunc, ok := typeToRR[rrtype] + if !ok { + panic(fmt.Sprintf("dns: invalid operation with Private RR type %d", rrtype)) + } + + anyrr := rrfunc() + switch rr := anyrr.(type) { + case *PrivateRR: + return rr + } + panic(fmt.Sprintf("dns: RR is not a PrivateRR, typeToRR[%d] generator returned %T", rrtype, anyrr)) +} + +// Header return the RR header of r. +func (r *PrivateRR) Header() *RR_Header { return &r.Hdr } + +func (r *PrivateRR) String() string { return r.Hdr.String() + r.Data.String() } + +// Private len and copy parts to satisfy RR interface. +func (r *PrivateRR) len() int { return r.Hdr.len() + r.Data.Len() } +func (r *PrivateRR) copy() RR { + // make new RR like this: + rr := mkPrivateRR(r.Hdr.Rrtype) + newh := r.Hdr.copyHeader() + rr.Hdr = *newh + + err := r.Data.Copy(rr.Data) + if err != nil { + panic("dns: got value that could not be used to copy Private rdata") + } + return rr +} + +// PrivateHandle registers a private resource record type. It requires +// string and numeric representation of private RR type and generator function as argument. +func PrivateHandle(rtypestr string, rtype uint16, generator func() PrivateRdata) { + rtypestr = strings.ToUpper(rtypestr) + + typeToRR[rtype] = func() RR { return &PrivateRR{RR_Header{}, generator()} } + TypeToString[rtype] = rtypestr + StringToType[rtypestr] = rtype + + setPrivateRR := func(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := mkPrivateRR(h.Rrtype) + rr.Hdr = h + + var l lex + text := make([]string, 0, 2) // could be 0..N elements, median is probably 1 + FETCH: + for { + // TODO(miek): we could also be returning _QUOTE, this might or might not + // be an issue (basically parsing TXT becomes hard) + switch l = <-c; l.value { + case zNewline, zEOF: + break FETCH + case zString: + text = append(text, l.token) + } + } + + err := rr.Data.Parse(text) + if err != nil { + return nil, &ParseError{f, err.Error(), l}, "" + } + + return rr, nil, "" + } + + typeToparserFunc[rtype] = parserFunc{setPrivateRR, true} +} + +// PrivateHandleRemove removes defenitions required to support private RR type. +func PrivateHandleRemove(rtype uint16) { + rtypestr, ok := TypeToString[rtype] + if ok { + delete(typeToRR, rtype) + delete(TypeToString, rtype) + delete(typeToparserFunc, rtype) + delete(StringToType, rtypestr) + } + return +} diff --git a/vendor/github.com/miekg/dns/rawmsg.go b/vendor/github.com/miekg/dns/rawmsg.go new file mode 100644 index 00000000..f138b776 --- /dev/null +++ b/vendor/github.com/miekg/dns/rawmsg.go @@ -0,0 +1,95 @@ +package dns + +// These raw* functions do not use reflection, they directly set the values +// in the buffer. There are faster than their reflection counterparts. + +// RawSetId sets the message id in buf. +func rawSetId(msg []byte, i uint16) bool { + if len(msg) < 2 { + return false + } + msg[0], msg[1] = packUint16(i) + return true +} + +// rawSetQuestionLen sets the length of the question section. +func rawSetQuestionLen(msg []byte, i uint16) bool { + if len(msg) < 6 { + return false + } + msg[4], msg[5] = packUint16(i) + return true +} + +// rawSetAnswerLen sets the lenght of the answer section. +func rawSetAnswerLen(msg []byte, i uint16) bool { + if len(msg) < 8 { + return false + } + msg[6], msg[7] = packUint16(i) + return true +} + +// rawSetsNsLen sets the lenght of the authority section. +func rawSetNsLen(msg []byte, i uint16) bool { + if len(msg) < 10 { + return false + } + msg[8], msg[9] = packUint16(i) + return true +} + +// rawSetExtraLen sets the lenght of the additional section. +func rawSetExtraLen(msg []byte, i uint16) bool { + if len(msg) < 12 { + return false + } + msg[10], msg[11] = packUint16(i) + return true +} + +// rawSetRdlength sets the rdlength in the header of +// the RR. The offset 'off' must be positioned at the +// start of the header of the RR, 'end' must be the +// end of the RR. +func rawSetRdlength(msg []byte, off, end int) bool { + l := len(msg) +Loop: + for { + if off+1 > l { + return false + } + c := int(msg[off]) + off++ + switch c & 0xC0 { + case 0x00: + if c == 0x00 { + // End of the domainname + break Loop + } + if off+c > l { + return false + } + off += c + + case 0xC0: + // pointer, next byte included, ends domainname + off++ + break Loop + } + } + // The domainname has been seen, we at the start of the fixed part in the header. + // Type is 2 bytes, class is 2 bytes, ttl 4 and then 2 bytes for the length. + off += 2 + 2 + 4 + if off+2 > l { + return false + } + //off+1 is the end of the header, 'end' is the end of the rr + //so 'end' - 'off+2' is the length of the rdata + rdatalen := end - (off + 2) + if rdatalen > 0xFFFF { + return false + } + msg[off], msg[off+1] = packUint16(uint16(rdatalen)) + return true +} diff --git a/vendor/github.com/miekg/dns/sanitize.go b/vendor/github.com/miekg/dns/sanitize.go new file mode 100644 index 00000000..b489f3f0 --- /dev/null +++ b/vendor/github.com/miekg/dns/sanitize.go @@ -0,0 +1,84 @@ +package dns + +// Dedup removes identical RRs from rrs. It preserves the original ordering. +// The lowest TTL of any duplicates is used in the remaining one. Dedup modifies +// rrs. +// m is used to store the RRs temporay. If it is nil a new map will be allocated. +func Dedup(rrs []RR, m map[string]RR) []RR { + if m == nil { + m = make(map[string]RR) + } + // Save the keys, so we don't have to call normalizedString twice. + keys := make([]*string, 0, len(rrs)) + + for _, r := range rrs { + key := normalizedString(r) + keys = append(keys, &key) + if _, ok := m[key]; ok { + // Shortest TTL wins. + if m[key].Header().Ttl > r.Header().Ttl { + m[key].Header().Ttl = r.Header().Ttl + } + continue + } + + m[key] = r + } + // If the length of the result map equals the amount of RRs we got, + // it means they were all different. We can then just return the original rrset. + if len(m) == len(rrs) { + return rrs + } + + j := 0 + for i, r := range rrs { + // If keys[i] lives in the map, we should copy and remove it. + if _, ok := m[*keys[i]]; ok { + delete(m, *keys[i]) + rrs[j] = r + j++ + } + + if len(m) == 0 { + break + } + } + + return rrs[:j] +} + +// normalizedString returns a normalized string from r. The TTL +// is removed and the domain name is lowercased. We go from this: +// DomainName<TAB>TTL<TAB>CLASS<TAB>TYPE<TAB>RDATA to: +// lowercasename<TAB>CLASS<TAB>TYPE... +func normalizedString(r RR) string { + // A string Go DNS makes has: domainname<TAB>TTL<TAB>... + b := []byte(r.String()) + + // find the first non-escaped tab, then another, so we capture where the TTL lives. + esc := false + ttlStart, ttlEnd := 0, 0 + for i := 0; i < len(b) && ttlEnd == 0; i++ { + switch { + case b[i] == '\\': + esc = !esc + case b[i] == '\t' && !esc: + if ttlStart == 0 { + ttlStart = i + continue + } + if ttlEnd == 0 { + ttlEnd = i + } + case b[i] >= 'A' && b[i] <= 'Z' && !esc: + b[i] += 32 + default: + esc = false + } + } + + // remove TTL. + copy(b[ttlStart:], b[ttlEnd:]) + cut := ttlEnd - ttlStart + return string(b[:len(b)-cut]) +} diff --git a/vendor/github.com/miekg/dns/scanner.go b/vendor/github.com/miekg/dns/scanner.go new file mode 100644 index 00000000..c29bc2f3 --- /dev/null +++ b/vendor/github.com/miekg/dns/scanner.go @@ -0,0 +1,43 @@ +package dns + +// Implement a simple scanner, return a byte stream from an io reader. + +import ( + "bufio" + "io" + "text/scanner" +) + +type scan struct { + src *bufio.Reader + position scanner.Position + eof bool // Have we just seen a eof +} + +func scanInit(r io.Reader) *scan { + s := new(scan) + s.src = bufio.NewReader(r) + s.position.Line = 1 + return s +} + +// tokenText returns the next byte from the input +func (s *scan) tokenText() (byte, error) { + c, err := s.src.ReadByte() + if err != nil { + return c, err + } + // delay the newline handling until the next token is delivered, + // fixes off-by-one errors when reporting a parse error. + if s.eof == true { + s.position.Line++ + s.position.Column = 0 + s.eof = false + } + if c == '\n' { + s.eof = true + return c, nil + } + s.position.Column++ + return c, nil +} diff --git a/vendor/github.com/miekg/dns/server.go b/vendor/github.com/miekg/dns/server.go new file mode 100644 index 00000000..48584f5b --- /dev/null +++ b/vendor/github.com/miekg/dns/server.go @@ -0,0 +1,717 @@ +// DNS server implementation. + +package dns + +import ( + "bytes" + "io" + "net" + "sync" + "time" +) + +// Maximum number of TCP queries before we close the socket. +const maxTCPQueries = 128 + +// Handler is implemented by any value that implements ServeDNS. +type Handler interface { + ServeDNS(w ResponseWriter, r *Msg) +} + +// A ResponseWriter interface is used by an DNS handler to +// construct an DNS response. +type ResponseWriter interface { + // LocalAddr returns the net.Addr of the server + LocalAddr() net.Addr + // RemoteAddr returns the net.Addr of the client that sent the current request. + RemoteAddr() net.Addr + // WriteMsg writes a reply back to the client. + WriteMsg(*Msg) error + // Write writes a raw buffer back to the client. + Write([]byte) (int, error) + // Close closes the connection. + Close() error + // TsigStatus returns the status of the Tsig. + TsigStatus() error + // TsigTimersOnly sets the tsig timers only boolean. + TsigTimersOnly(bool) + // Hijack lets the caller take over the connection. + // After a call to Hijack(), the DNS package will not do anything with the connection. + Hijack() +} + +type response struct { + hijacked bool // connection has been hijacked by handler + tsigStatus error + tsigTimersOnly bool + tsigRequestMAC string + tsigSecret map[string]string // the tsig secrets + udp *net.UDPConn // i/o connection if UDP was used + tcp *net.TCPConn // i/o connection if TCP was used + udpSession *SessionUDP // oob data to get egress interface right + remoteAddr net.Addr // address of the client + writer Writer // writer to output the raw DNS bits +} + +// ServeMux is an DNS request multiplexer. It matches the +// zone name of each incoming request against a list of +// registered patterns add calls the handler for the pattern +// that most closely matches the zone name. ServeMux is DNSSEC aware, meaning +// that queries for the DS record are redirected to the parent zone (if that +// is also registered), otherwise the child gets the query. +// ServeMux is also safe for concurrent access from multiple goroutines. +type ServeMux struct { + z map[string]Handler + m *sync.RWMutex +} + +// NewServeMux allocates and returns a new ServeMux. +func NewServeMux() *ServeMux { return &ServeMux{z: make(map[string]Handler), m: new(sync.RWMutex)} } + +// DefaultServeMux is the default ServeMux used by Serve. +var DefaultServeMux = NewServeMux() + +// The HandlerFunc type is an adapter to allow the use of +// ordinary functions as DNS handlers. If f is a function +// with the appropriate signature, HandlerFunc(f) is a +// Handler object that calls f. +type HandlerFunc func(ResponseWriter, *Msg) + +// ServeDNS calls f(w, r). +func (f HandlerFunc) ServeDNS(w ResponseWriter, r *Msg) { + f(w, r) +} + +// HandleFailed returns a HandlerFunc that returns SERVFAIL for every request it gets. +func HandleFailed(w ResponseWriter, r *Msg) { + m := new(Msg) + m.SetRcode(r, RcodeServerFailure) + // does not matter if this write fails + w.WriteMsg(m) +} + +func failedHandler() Handler { return HandlerFunc(HandleFailed) } + +// ListenAndServe Starts a server on addresss and network speficied. Invoke handler +// for incoming queries. +func ListenAndServe(addr string, network string, handler Handler) error { + server := &Server{Addr: addr, Net: network, Handler: handler} + return server.ListenAndServe() +} + +// ActivateAndServe activates a server with a listener from systemd, +// l and p should not both be non-nil. +// If both l and p are not nil only p will be used. +// Invoke handler for incoming queries. +func ActivateAndServe(l net.Listener, p net.PacketConn, handler Handler) error { + server := &Server{Listener: l, PacketConn: p, Handler: handler} + return server.ActivateAndServe() +} + +func (mux *ServeMux) match(q string, t uint16) Handler { + mux.m.RLock() + defer mux.m.RUnlock() + var handler Handler + b := make([]byte, len(q)) // worst case, one label of length q + off := 0 + end := false + for { + l := len(q[off:]) + for i := 0; i < l; i++ { + b[i] = q[off+i] + if b[i] >= 'A' && b[i] <= 'Z' { + b[i] |= ('a' - 'A') + } + } + if h, ok := mux.z[string(b[:l])]; ok { // 'causes garbage, might want to change the map key + if t != TypeDS { + return h + } + // Continue for DS to see if we have a parent too, if so delegeate to the parent + handler = h + } + off, end = NextLabel(q, off) + if end { + break + } + } + // Wildcard match, if we have found nothing try the root zone as a last resort. + if h, ok := mux.z["."]; ok { + return h + } + return handler +} + +// Handle adds a handler to the ServeMux for pattern. +func (mux *ServeMux) Handle(pattern string, handler Handler) { + if pattern == "" { + panic("dns: invalid pattern " + pattern) + } + mux.m.Lock() + mux.z[Fqdn(pattern)] = handler + mux.m.Unlock() +} + +// HandleFunc adds a handler function to the ServeMux for pattern. +func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Msg)) { + mux.Handle(pattern, HandlerFunc(handler)) +} + +// HandleRemove deregistrars the handler specific for pattern from the ServeMux. +func (mux *ServeMux) HandleRemove(pattern string) { + if pattern == "" { + panic("dns: invalid pattern " + pattern) + } + mux.m.Lock() + delete(mux.z, Fqdn(pattern)) + mux.m.Unlock() +} + +// ServeDNS dispatches the request to the handler whose +// pattern most closely matches the request message. If DefaultServeMux +// is used the correct thing for DS queries is done: a possible parent +// is sought. +// If no handler is found a standard SERVFAIL message is returned +// If the request message does not have exactly one question in the +// question section a SERVFAIL is returned, unlesss Unsafe is true. +func (mux *ServeMux) ServeDNS(w ResponseWriter, request *Msg) { + var h Handler + if len(request.Question) < 1 { // allow more than one question + h = failedHandler() + } else { + if h = mux.match(request.Question[0].Name, request.Question[0].Qtype); h == nil { + h = failedHandler() + } + } + h.ServeDNS(w, request) +} + +// Handle registers the handler with the given pattern +// in the DefaultServeMux. The documentation for +// ServeMux explains how patterns are matched. +func Handle(pattern string, handler Handler) { DefaultServeMux.Handle(pattern, handler) } + +// HandleRemove deregisters the handle with the given pattern +// in the DefaultServeMux. +func HandleRemove(pattern string) { DefaultServeMux.HandleRemove(pattern) } + +// HandleFunc registers the handler function with the given pattern +// in the DefaultServeMux. +func HandleFunc(pattern string, handler func(ResponseWriter, *Msg)) { + DefaultServeMux.HandleFunc(pattern, handler) +} + +// Writer writes raw DNS messages; each call to Write should send an entire message. +type Writer interface { + io.Writer +} + +// Reader reads raw DNS messages; each call to ReadTCP or ReadUDP should return an entire message. +type Reader interface { + // ReadTCP reads a raw message from a TCP connection. Implementations may alter + // connection properties, for example the read-deadline. + ReadTCP(conn *net.TCPConn, timeout time.Duration) ([]byte, error) + // ReadUDP reads a raw message from a UDP connection. Implementations may alter + // connection properties, for example the read-deadline. + ReadUDP(conn *net.UDPConn, timeout time.Duration) ([]byte, *SessionUDP, error) +} + +// defaultReader is an adapter for the Server struct that implements the Reader interface +// using the readTCP and readUDP func of the embedded Server. +type defaultReader struct { + *Server +} + +func (dr *defaultReader) ReadTCP(conn *net.TCPConn, timeout time.Duration) ([]byte, error) { + return dr.readTCP(conn, timeout) +} + +func (dr *defaultReader) ReadUDP(conn *net.UDPConn, timeout time.Duration) ([]byte, *SessionUDP, error) { + return dr.readUDP(conn, timeout) +} + +// DecorateReader is a decorator hook for extending or supplanting the functionality of a Reader. +// Implementations should never return a nil Reader. +type DecorateReader func(Reader) Reader + +// DecorateWriter is a decorator hook for extending or supplanting the functionality of a Writer. +// Implementations should never return a nil Writer. +type DecorateWriter func(Writer) Writer + +// A Server defines parameters for running an DNS server. +type Server struct { + // Address to listen on, ":dns" if empty. + Addr string + // if "tcp" it will invoke a TCP listener, otherwise an UDP one. + Net string + // TCP Listener to use, this is to aid in systemd's socket activation. + Listener net.Listener + // UDP "Listener" to use, this is to aid in systemd's socket activation. + PacketConn net.PacketConn + // Handler to invoke, dns.DefaultServeMux if nil. + Handler Handler + // Default buffer size to use to read incoming UDP messages. If not set + // it defaults to MinMsgSize (512 B). + UDPSize int + // The net.Conn.SetReadTimeout value for new connections, defaults to 2 * time.Second. + ReadTimeout time.Duration + // The net.Conn.SetWriteTimeout value for new connections, defaults to 2 * time.Second. + WriteTimeout time.Duration + // TCP idle timeout for multiple queries, if nil, defaults to 8 * time.Second (RFC 5966). + IdleTimeout func() time.Duration + // Secret(s) for Tsig map[<zonename>]<base64 secret>. + TsigSecret map[string]string + // Unsafe instructs the server to disregard any sanity checks and directly hand the message to + // the handler. It will specfically not check if the query has the QR bit not set. + Unsafe bool + // If NotifyStartedFunc is set it is called once the server has started listening. + NotifyStartedFunc func() + // DecorateReader is optional, allows customization of the process that reads raw DNS messages. + DecorateReader DecorateReader + // DecorateWriter is optional, allows customization of the process that writes raw DNS messages. + DecorateWriter DecorateWriter + + // For graceful shutdown. + stopUDP chan bool + stopTCP chan bool + wgUDP sync.WaitGroup + wgTCP sync.WaitGroup + + // make start/shutdown not racy + lock sync.Mutex + started bool +} + +// ListenAndServe starts a nameserver on the configured address in *Server. +func (srv *Server) ListenAndServe() error { + srv.lock.Lock() + // We can't use defer() becasue serveTCP/serveUDP don't return. + if srv.started { + srv.lock.Unlock() + return &Error{err: "server already started"} + } + srv.stopUDP, srv.stopTCP = make(chan bool), make(chan bool) + srv.started = true + addr := srv.Addr + if addr == "" { + addr = ":domain" + } + if srv.UDPSize == 0 { + srv.UDPSize = MinMsgSize + } + switch srv.Net { + case "tcp", "tcp4", "tcp6": + a, e := net.ResolveTCPAddr(srv.Net, addr) + if e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + l, e := net.ListenTCP(srv.Net, a) + if e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + srv.Listener = l + srv.lock.Unlock() + return srv.serveTCP(l) + case "udp", "udp4", "udp6": + a, e := net.ResolveUDPAddr(srv.Net, addr) + if e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + l, e := net.ListenUDP(srv.Net, a) + if e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + if e := setUDPSocketOptions(l); e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + srv.PacketConn = l + srv.lock.Unlock() + return srv.serveUDP(l) + } + srv.lock.Unlock() + srv.started = false + return &Error{err: "bad network"} +} + +// ActivateAndServe starts a nameserver with the PacketConn or Listener +// configured in *Server. Its main use is to start a server from systemd. +func (srv *Server) ActivateAndServe() error { + srv.lock.Lock() + if srv.started { + srv.lock.Unlock() + return &Error{err: "server already started"} + } + srv.stopUDP, srv.stopTCP = make(chan bool), make(chan bool) + srv.started = true + pConn := srv.PacketConn + l := srv.Listener + if pConn != nil { + if srv.UDPSize == 0 { + srv.UDPSize = MinMsgSize + } + if t, ok := pConn.(*net.UDPConn); ok { + if e := setUDPSocketOptions(t); e != nil { + srv.lock.Unlock() + srv.started = false + return e + } + srv.lock.Unlock() + return srv.serveUDP(t) + } + } + if l != nil { + if t, ok := l.(*net.TCPListener); ok { + srv.lock.Unlock() + return srv.serveTCP(t) + } + } + srv.lock.Unlock() + srv.started = false + return &Error{err: "bad listeners"} +} + +// Shutdown gracefully shuts down a server. After a call to Shutdown, ListenAndServe and +// ActivateAndServe will return. All in progress queries are completed before the server +// is taken down. If the Shutdown is taking longer than the reading timeout an error +// is returned. +func (srv *Server) Shutdown() error { + srv.lock.Lock() + if !srv.started { + srv.lock.Unlock() + return &Error{err: "server not started"} + } + srv.started = false + net, addr := srv.Net, srv.Addr + switch { + case srv.Listener != nil: + a := srv.Listener.Addr() + net, addr = a.Network(), a.String() + case srv.PacketConn != nil: + a := srv.PacketConn.LocalAddr() + net, addr = a.Network(), a.String() + } + srv.lock.Unlock() + + fin := make(chan bool) + switch net { + case "tcp", "tcp4", "tcp6": + go func() { + srv.stopTCP <- true + srv.wgTCP.Wait() + fin <- true + }() + + case "udp", "udp4", "udp6": + go func() { + srv.stopUDP <- true + srv.wgUDP.Wait() + fin <- true + }() + } + + c := &Client{Net: net} + go c.Exchange(new(Msg), addr) // extra query to help ReadXXX loop to pass + + select { + case <-time.After(srv.getReadTimeout()): + return &Error{err: "server shutdown is pending"} + case <-fin: + return nil + } +} + +// getReadTimeout is a helper func to use system timeout if server did not intend to change it. +func (srv *Server) getReadTimeout() time.Duration { + rtimeout := dnsTimeout + if srv.ReadTimeout != 0 { + rtimeout = srv.ReadTimeout + } + return rtimeout +} + +// serveTCP starts a TCP listener for the server. +// Each request is handled in a separate goroutine. +func (srv *Server) serveTCP(l *net.TCPListener) error { + defer l.Close() + + if srv.NotifyStartedFunc != nil { + srv.NotifyStartedFunc() + } + + reader := Reader(&defaultReader{srv}) + if srv.DecorateReader != nil { + reader = srv.DecorateReader(reader) + } + + handler := srv.Handler + if handler == nil { + handler = DefaultServeMux + } + rtimeout := srv.getReadTimeout() + // deadline is not used here + for { + rw, e := l.AcceptTCP() + if e != nil { + continue + } + m, e := reader.ReadTCP(rw, rtimeout) + select { + case <-srv.stopTCP: + return nil + default: + } + if e != nil { + continue + } + srv.wgTCP.Add(1) + go srv.serve(rw.RemoteAddr(), handler, m, nil, nil, rw) + } +} + +// serveUDP starts a UDP listener for the server. +// Each request is handled in a separate goroutine. +func (srv *Server) serveUDP(l *net.UDPConn) error { + defer l.Close() + + if srv.NotifyStartedFunc != nil { + srv.NotifyStartedFunc() + } + + reader := Reader(&defaultReader{srv}) + if srv.DecorateReader != nil { + reader = srv.DecorateReader(reader) + } + + handler := srv.Handler + if handler == nil { + handler = DefaultServeMux + } + rtimeout := srv.getReadTimeout() + // deadline is not used here + for { + m, s, e := reader.ReadUDP(l, rtimeout) + select { + case <-srv.stopUDP: + return nil + default: + } + if e != nil { + continue + } + srv.wgUDP.Add(1) + go srv.serve(s.RemoteAddr(), handler, m, l, s, nil) + } +} + +// Serve a new connection. +func (srv *Server) serve(a net.Addr, h Handler, m []byte, u *net.UDPConn, s *SessionUDP, t *net.TCPConn) { + w := &response{tsigSecret: srv.TsigSecret, udp: u, tcp: t, remoteAddr: a, udpSession: s} + if srv.DecorateWriter != nil { + w.writer = srv.DecorateWriter(w) + } else { + w.writer = w + } + + q := 0 // counter for the amount of TCP queries we get + + defer func() { + if u != nil { + srv.wgUDP.Done() + } + if t != nil { + srv.wgTCP.Done() + } + }() + + reader := Reader(&defaultReader{srv}) + if srv.DecorateReader != nil { + reader = srv.DecorateReader(reader) + } +Redo: + req := new(Msg) + err := req.Unpack(m) + if err != nil { // Send a FormatError back + x := new(Msg) + x.SetRcodeFormatError(req) + w.WriteMsg(x) + goto Exit + } + if !srv.Unsafe && req.Response { + goto Exit + } + + w.tsigStatus = nil + if w.tsigSecret != nil { + if t := req.IsTsig(); t != nil { + secret := t.Hdr.Name + if _, ok := w.tsigSecret[secret]; !ok { + w.tsigStatus = ErrKeyAlg + } + w.tsigStatus = TsigVerify(m, w.tsigSecret[secret], "", false) + w.tsigTimersOnly = false + w.tsigRequestMAC = req.Extra[len(req.Extra)-1].(*TSIG).MAC + } + } + h.ServeDNS(w, req) // Writes back to the client + +Exit: + // TODO(miek): make this number configurable? + if q > maxTCPQueries { // close socket after this many queries + w.Close() + return + } + + if w.hijacked { + return // client calls Close() + } + if u != nil { // UDP, "close" and return + w.Close() + return + } + idleTimeout := tcpIdleTimeout + if srv.IdleTimeout != nil { + idleTimeout = srv.IdleTimeout() + } + m, e := reader.ReadTCP(w.tcp, idleTimeout) + if e == nil { + q++ + goto Redo + } + w.Close() + return +} + +func (srv *Server) readTCP(conn *net.TCPConn, timeout time.Duration) ([]byte, error) { + conn.SetReadDeadline(time.Now().Add(timeout)) + l := make([]byte, 2) + n, err := conn.Read(l) + if err != nil || n != 2 { + if err != nil { + return nil, err + } + return nil, ErrShortRead + } + length, _ := unpackUint16(l, 0) + if length == 0 { + return nil, ErrShortRead + } + m := make([]byte, int(length)) + n, err = conn.Read(m[:int(length)]) + if err != nil || n == 0 { + if err != nil { + return nil, err + } + return nil, ErrShortRead + } + i := n + for i < int(length) { + j, err := conn.Read(m[i:int(length)]) + if err != nil { + return nil, err + } + i += j + } + n = i + m = m[:n] + return m, nil +} + +func (srv *Server) readUDP(conn *net.UDPConn, timeout time.Duration) ([]byte, *SessionUDP, error) { + conn.SetReadDeadline(time.Now().Add(timeout)) + m := make([]byte, srv.UDPSize) + n, s, e := ReadFromSessionUDP(conn, m) + if e != nil || n == 0 { + if e != nil { + return nil, nil, e + } + return nil, nil, ErrShortRead + } + m = m[:n] + return m, s, nil +} + +// WriteMsg implements the ResponseWriter.WriteMsg method. +func (w *response) WriteMsg(m *Msg) (err error) { + var data []byte + if w.tsigSecret != nil { // if no secrets, dont check for the tsig (which is a longer check) + if t := m.IsTsig(); t != nil { + data, w.tsigRequestMAC, err = TsigGenerate(m, w.tsigSecret[t.Hdr.Name], w.tsigRequestMAC, w.tsigTimersOnly) + if err != nil { + return err + } + _, err = w.writer.Write(data) + return err + } + } + data, err = m.Pack() + if err != nil { + return err + } + _, err = w.writer.Write(data) + return err +} + +// Write implements the ResponseWriter.Write method. +func (w *response) Write(m []byte) (int, error) { + switch { + case w.udp != nil: + n, err := WriteToSessionUDP(w.udp, m, w.udpSession) + return n, err + case w.tcp != nil: + lm := len(m) + if lm < 2 { + return 0, io.ErrShortBuffer + } + if lm > MaxMsgSize { + return 0, &Error{err: "message too large"} + } + l := make([]byte, 2, 2+lm) + l[0], l[1] = packUint16(uint16(lm)) + m = append(l, m...) + + n, err := io.Copy(w.tcp, bytes.NewReader(m)) + return int(n), err + } + panic("not reached") +} + +// LocalAddr implements the ResponseWriter.LocalAddr method. +func (w *response) LocalAddr() net.Addr { + if w.tcp != nil { + return w.tcp.LocalAddr() + } + return w.udp.LocalAddr() +} + +// RemoteAddr implements the ResponseWriter.RemoteAddr method. +func (w *response) RemoteAddr() net.Addr { return w.remoteAddr } + +// TsigStatus implements the ResponseWriter.TsigStatus method. +func (w *response) TsigStatus() error { return w.tsigStatus } + +// TsigTimersOnly implements the ResponseWriter.TsigTimersOnly method. +func (w *response) TsigTimersOnly(b bool) { w.tsigTimersOnly = b } + +// Hijack implements the ResponseWriter.Hijack method. +func (w *response) Hijack() { w.hijacked = true } + +// Close implements the ResponseWriter.Close method +func (w *response) Close() error { + // Can't close the udp conn, as that is actually the listener. + if w.tcp != nil { + e := w.tcp.Close() + w.tcp = nil + return e + } + return nil +} diff --git a/vendor/github.com/miekg/dns/sig0.go b/vendor/github.com/miekg/dns/sig0.go new file mode 100644 index 00000000..0fccddbc --- /dev/null +++ b/vendor/github.com/miekg/dns/sig0.go @@ -0,0 +1,216 @@ +package dns + +import ( + "crypto" + "crypto/dsa" + "crypto/ecdsa" + "crypto/rsa" + "math/big" + "strings" + "time" +) + +// Sign signs a dns.Msg. It fills the signature with the appropriate data. +// The SIG record should have the SignerName, KeyTag, Algorithm, Inception +// and Expiration set. +func (rr *SIG) Sign(k crypto.Signer, m *Msg) ([]byte, error) { + if k == nil { + return nil, ErrPrivKey + } + if rr.KeyTag == 0 || len(rr.SignerName) == 0 || rr.Algorithm == 0 { + return nil, ErrKey + } + rr.Header().Rrtype = TypeSIG + rr.Header().Class = ClassANY + rr.Header().Ttl = 0 + rr.Header().Name = "." + rr.OrigTtl = 0 + rr.TypeCovered = 0 + rr.Labels = 0 + + buf := make([]byte, m.Len()+rr.len()) + mbuf, err := m.PackBuffer(buf) + if err != nil { + return nil, err + } + if &buf[0] != &mbuf[0] { + return nil, ErrBuf + } + off, err := PackRR(rr, buf, len(mbuf), nil, false) + if err != nil { + return nil, err + } + buf = buf[:off:cap(buf)] + + hash, ok := AlgorithmToHash[rr.Algorithm] + if !ok { + return nil, ErrAlg + } + + hasher := hash.New() + // Write SIG rdata + hasher.Write(buf[len(mbuf)+1+2+2+4+2:]) + // Write message + hasher.Write(buf[:len(mbuf)]) + + signature, err := sign(k, hasher.Sum(nil), hash, rr.Algorithm) + if err != nil { + return nil, err + } + + rr.Signature = toBase64(signature) + sig := string(signature) + + buf = append(buf, sig...) + if len(buf) > int(^uint16(0)) { + return nil, ErrBuf + } + // Adjust sig data length + rdoff := len(mbuf) + 1 + 2 + 2 + 4 + rdlen, _ := unpackUint16(buf, rdoff) + rdlen += uint16(len(sig)) + buf[rdoff], buf[rdoff+1] = packUint16(rdlen) + // Adjust additional count + adc, _ := unpackUint16(buf, 10) + adc++ + buf[10], buf[11] = packUint16(adc) + return buf, nil +} + +// Verify validates the message buf using the key k. +// It's assumed that buf is a valid message from which rr was unpacked. +func (rr *SIG) Verify(k *KEY, buf []byte) error { + if k == nil { + return ErrKey + } + if rr.KeyTag == 0 || len(rr.SignerName) == 0 || rr.Algorithm == 0 { + return ErrKey + } + + var hash crypto.Hash + switch rr.Algorithm { + case DSA, RSASHA1: + hash = crypto.SHA1 + case RSASHA256, ECDSAP256SHA256: + hash = crypto.SHA256 + case ECDSAP384SHA384: + hash = crypto.SHA384 + case RSASHA512: + hash = crypto.SHA512 + default: + return ErrAlg + } + hasher := hash.New() + + buflen := len(buf) + qdc, _ := unpackUint16(buf, 4) + anc, _ := unpackUint16(buf, 6) + auc, _ := unpackUint16(buf, 8) + adc, offset := unpackUint16(buf, 10) + var err error + for i := uint16(0); i < qdc && offset < buflen; i++ { + _, offset, err = UnpackDomainName(buf, offset) + if err != nil { + return err + } + // Skip past Type and Class + offset += 2 + 2 + } + for i := uint16(1); i < anc+auc+adc && offset < buflen; i++ { + _, offset, err = UnpackDomainName(buf, offset) + if err != nil { + return err + } + // Skip past Type, Class and TTL + offset += 2 + 2 + 4 + if offset+1 >= buflen { + continue + } + var rdlen uint16 + rdlen, offset = unpackUint16(buf, offset) + offset += int(rdlen) + } + if offset >= buflen { + return &Error{err: "overflowing unpacking signed message"} + } + + // offset should be just prior to SIG + bodyend := offset + // owner name SHOULD be root + _, offset, err = UnpackDomainName(buf, offset) + if err != nil { + return err + } + // Skip Type, Class, TTL, RDLen + offset += 2 + 2 + 4 + 2 + sigstart := offset + // Skip Type Covered, Algorithm, Labels, Original TTL + offset += 2 + 1 + 1 + 4 + if offset+4+4 >= buflen { + return &Error{err: "overflow unpacking signed message"} + } + expire := uint32(buf[offset])<<24 | uint32(buf[offset+1])<<16 | uint32(buf[offset+2])<<8 | uint32(buf[offset+3]) + offset += 4 + incept := uint32(buf[offset])<<24 | uint32(buf[offset+1])<<16 | uint32(buf[offset+2])<<8 | uint32(buf[offset+3]) + offset += 4 + now := uint32(time.Now().Unix()) + if now < incept || now > expire { + return ErrTime + } + // Skip key tag + offset += 2 + var signername string + signername, offset, err = UnpackDomainName(buf, offset) + if err != nil { + return err + } + // If key has come from the DNS name compression might + // have mangled the case of the name + if strings.ToLower(signername) != strings.ToLower(k.Header().Name) { + return &Error{err: "signer name doesn't match key name"} + } + sigend := offset + hasher.Write(buf[sigstart:sigend]) + hasher.Write(buf[:10]) + hasher.Write([]byte{ + byte((adc - 1) << 8), + byte(adc - 1), + }) + hasher.Write(buf[12:bodyend]) + + hashed := hasher.Sum(nil) + sig := buf[sigend:] + switch k.Algorithm { + case DSA: + pk := k.publicKeyDSA() + sig = sig[1:] + r := big.NewInt(0) + r.SetBytes(sig[:len(sig)/2]) + s := big.NewInt(0) + s.SetBytes(sig[len(sig)/2:]) + if pk != nil { + if dsa.Verify(pk, hashed, r, s) { + return nil + } + return ErrSig + } + case RSASHA1, RSASHA256, RSASHA512: + pk := k.publicKeyRSA() + if pk != nil { + return rsa.VerifyPKCS1v15(pk, hash, hashed, sig) + } + case ECDSAP256SHA256, ECDSAP384SHA384: + pk := k.publicKeyECDSA() + r := big.NewInt(0) + r.SetBytes(sig[:len(sig)/2]) + s := big.NewInt(0) + s.SetBytes(sig[len(sig)/2:]) + if pk != nil { + if ecdsa.Verify(pk, hashed, r, s) { + return nil + } + return ErrSig + } + } + return ErrKeyAlg +} diff --git a/vendor/github.com/miekg/dns/singleinflight.go b/vendor/github.com/miekg/dns/singleinflight.go new file mode 100644 index 00000000..9573c7d0 --- /dev/null +++ b/vendor/github.com/miekg/dns/singleinflight.go @@ -0,0 +1,57 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Adapted for dns package usage by Miek Gieben. + +package dns + +import "sync" +import "time" + +// call is an in-flight or completed singleflight.Do call +type call struct { + wg sync.WaitGroup + val *Msg + rtt time.Duration + err error + dups int +} + +// singleflight represents a class of work and forms a namespace in +// which units of work can be executed with duplicate suppression. +type singleflight struct { + sync.Mutex // protects m + m map[string]*call // lazily initialized +} + +// Do executes and returns the results of the given function, making +// sure that only one execution is in-flight for a given key at a +// time. If a duplicate comes in, the duplicate caller waits for the +// original to complete and receives the same results. +// The return value shared indicates whether v was given to multiple callers. +func (g *singleflight) Do(key string, fn func() (*Msg, time.Duration, error)) (v *Msg, rtt time.Duration, err error, shared bool) { + g.Lock() + if g.m == nil { + g.m = make(map[string]*call) + } + if c, ok := g.m[key]; ok { + c.dups++ + g.Unlock() + c.wg.Wait() + return c.val, c.rtt, c.err, true + } + c := new(call) + c.wg.Add(1) + g.m[key] = c + g.Unlock() + + c.val, c.rtt, c.err = fn() + c.wg.Done() + + g.Lock() + delete(g.m, key) + g.Unlock() + + return c.val, c.rtt, c.err, c.dups > 0 +} diff --git a/vendor/github.com/miekg/dns/tlsa.go b/vendor/github.com/miekg/dns/tlsa.go new file mode 100644 index 00000000..f027787d --- /dev/null +++ b/vendor/github.com/miekg/dns/tlsa.go @@ -0,0 +1,86 @@ +package dns + +import ( + "crypto/sha256" + "crypto/sha512" + "crypto/x509" + "encoding/hex" + "errors" + "io" + "net" + "strconv" +) + +// CertificateToDANE converts a certificate to a hex string as used in the TLSA record. +func CertificateToDANE(selector, matchingType uint8, cert *x509.Certificate) (string, error) { + switch matchingType { + case 0: + switch selector { + case 0: + return hex.EncodeToString(cert.Raw), nil + case 1: + return hex.EncodeToString(cert.RawSubjectPublicKeyInfo), nil + } + case 1: + h := sha256.New() + switch selector { + case 0: + io.WriteString(h, string(cert.Raw)) + return hex.EncodeToString(h.Sum(nil)), nil + case 1: + io.WriteString(h, string(cert.RawSubjectPublicKeyInfo)) + return hex.EncodeToString(h.Sum(nil)), nil + } + case 2: + h := sha512.New() + switch selector { + case 0: + io.WriteString(h, string(cert.Raw)) + return hex.EncodeToString(h.Sum(nil)), nil + case 1: + io.WriteString(h, string(cert.RawSubjectPublicKeyInfo)) + return hex.EncodeToString(h.Sum(nil)), nil + } + } + return "", errors.New("dns: bad TLSA MatchingType or TLSA Selector") +} + +// Sign creates a TLSA record from an SSL certificate. +func (r *TLSA) Sign(usage, selector, matchingType int, cert *x509.Certificate) (err error) { + r.Hdr.Rrtype = TypeTLSA + r.Usage = uint8(usage) + r.Selector = uint8(selector) + r.MatchingType = uint8(matchingType) + + r.Certificate, err = CertificateToDANE(r.Selector, r.MatchingType, cert) + if err != nil { + return err + } + return nil +} + +// Verify verifies a TLSA record against an SSL certificate. If it is OK +// a nil error is returned. +func (r *TLSA) Verify(cert *x509.Certificate) error { + c, err := CertificateToDANE(r.Selector, r.MatchingType, cert) + if err != nil { + return err // Not also ErrSig? + } + if r.Certificate == c { + return nil + } + return ErrSig // ErrSig, really? +} + +// TLSAName returns the ownername of a TLSA resource record as per the +// rules specified in RFC 6698, Section 3. +func TLSAName(name, service, network string) (string, error) { + if !IsFqdn(name) { + return "", ErrFqdn + } + p, e := net.LookupPort(network, service) + if e != nil { + return "", e + } + return "_" + strconv.Itoa(p) + "_" + network + "." + name, nil +} diff --git a/vendor/github.com/miekg/dns/tsig.go b/vendor/github.com/miekg/dns/tsig.go new file mode 100644 index 00000000..d7bc2505 --- /dev/null +++ b/vendor/github.com/miekg/dns/tsig.go @@ -0,0 +1,333 @@ +package dns + +import ( + "crypto/hmac" + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "encoding/hex" + "hash" + "io" + "strconv" + "strings" + "time" +) + +// HMAC hashing codes. These are transmitted as domain names. +const ( + HmacMD5 = "hmac-md5.sig-alg.reg.int." + HmacSHA1 = "hmac-sha1." + HmacSHA256 = "hmac-sha256." + HmacSHA512 = "hmac-sha512." +) + +// TSIG is the RR the holds the transaction signature of a message. +// See RFC 2845 and RFC 4635. +type TSIG struct { + Hdr RR_Header + Algorithm string `dns:"domain-name"` + TimeSigned uint64 `dns:"uint48"` + Fudge uint16 + MACSize uint16 + MAC string `dns:"size-hex"` + OrigId uint16 + Error uint16 + OtherLen uint16 + OtherData string `dns:"size-hex"` +} + +func (rr *TSIG) Header() *RR_Header { + return &rr.Hdr +} + +// TSIG has no official presentation format, but this will suffice. + +func (rr *TSIG) String() string { + s := "\n;; TSIG PSEUDOSECTION:\n" + s += rr.Hdr.String() + + " " + rr.Algorithm + + " " + tsigTimeToString(rr.TimeSigned) + + " " + strconv.Itoa(int(rr.Fudge)) + + " " + strconv.Itoa(int(rr.MACSize)) + + " " + strings.ToUpper(rr.MAC) + + " " + strconv.Itoa(int(rr.OrigId)) + + " " + strconv.Itoa(int(rr.Error)) + // BIND prints NOERROR + " " + strconv.Itoa(int(rr.OtherLen)) + + " " + rr.OtherData + return s +} + +func (rr *TSIG) len() int { + return rr.Hdr.len() + len(rr.Algorithm) + 1 + 6 + + 4 + len(rr.MAC)/2 + 1 + 6 + len(rr.OtherData)/2 + 1 +} + +func (rr *TSIG) copy() RR { + return &TSIG{*rr.Hdr.copyHeader(), rr.Algorithm, rr.TimeSigned, rr.Fudge, rr.MACSize, rr.MAC, rr.OrigId, rr.Error, rr.OtherLen, rr.OtherData} +} + +// The following values must be put in wireformat, so that the MAC can be calculated. +// RFC 2845, section 3.4.2. TSIG Variables. +type tsigWireFmt struct { + // From RR_Header + Name string `dns:"domain-name"` + Class uint16 + Ttl uint32 + // Rdata of the TSIG + Algorithm string `dns:"domain-name"` + TimeSigned uint64 `dns:"uint48"` + Fudge uint16 + // MACSize, MAC and OrigId excluded + Error uint16 + OtherLen uint16 + OtherData string `dns:"size-hex"` +} + +// If we have the MAC use this type to convert it to wiredata. +// Section 3.4.3. Request MAC +type macWireFmt struct { + MACSize uint16 + MAC string `dns:"size-hex"` +} + +// 3.3. Time values used in TSIG calculations +type timerWireFmt struct { + TimeSigned uint64 `dns:"uint48"` + Fudge uint16 +} + +// TsigGenerate fills out the TSIG record attached to the message. +// The message should contain +// a "stub" TSIG RR with the algorithm, key name (owner name of the RR), +// time fudge (defaults to 300 seconds) and the current time +// The TSIG MAC is saved in that Tsig RR. +// When TsigGenerate is called for the first time requestMAC is set to the empty string and +// timersOnly is false. +// If something goes wrong an error is returned, otherwise it is nil. +func TsigGenerate(m *Msg, secret, requestMAC string, timersOnly bool) ([]byte, string, error) { + if m.IsTsig() == nil { + panic("dns: TSIG not last RR in additional") + } + // If we barf here, the caller is to blame + rawsecret, err := fromBase64([]byte(secret)) + if err != nil { + return nil, "", err + } + + rr := m.Extra[len(m.Extra)-1].(*TSIG) + m.Extra = m.Extra[0 : len(m.Extra)-1] // kill the TSIG from the msg + mbuf, err := m.Pack() + if err != nil { + return nil, "", err + } + buf := tsigBuffer(mbuf, rr, requestMAC, timersOnly) + + t := new(TSIG) + var h hash.Hash + switch rr.Algorithm { + case HmacMD5: + h = hmac.New(md5.New, []byte(rawsecret)) + case HmacSHA1: + h = hmac.New(sha1.New, []byte(rawsecret)) + case HmacSHA256: + h = hmac.New(sha256.New, []byte(rawsecret)) + case HmacSHA512: + h = hmac.New(sha512.New, []byte(rawsecret)) + default: + return nil, "", ErrKeyAlg + } + io.WriteString(h, string(buf)) + t.MAC = hex.EncodeToString(h.Sum(nil)) + t.MACSize = uint16(len(t.MAC) / 2) // Size is half! + + t.Hdr = RR_Header{Name: rr.Hdr.Name, Rrtype: TypeTSIG, Class: ClassANY, Ttl: 0} + t.Fudge = rr.Fudge + t.TimeSigned = rr.TimeSigned + t.Algorithm = rr.Algorithm + t.OrigId = m.Id + + tbuf := make([]byte, t.len()) + if off, err := PackRR(t, tbuf, 0, nil, false); err == nil { + tbuf = tbuf[:off] // reset to actual size used + } else { + return nil, "", err + } + mbuf = append(mbuf, tbuf...) + rawSetExtraLen(mbuf, uint16(len(m.Extra)+1)) + return mbuf, t.MAC, nil +} + +// TsigVerify verifies the TSIG on a message. +// If the signature does not validate err contains the +// error, otherwise it is nil. +func TsigVerify(msg []byte, secret, requestMAC string, timersOnly bool) error { + rawsecret, err := fromBase64([]byte(secret)) + if err != nil { + return err + } + // Strip the TSIG from the incoming msg + stripped, tsig, err := stripTsig(msg) + if err != nil { + return err + } + + msgMAC, err := hex.DecodeString(tsig.MAC) + if err != nil { + return err + } + + buf := tsigBuffer(stripped, tsig, requestMAC, timersOnly) + + // Fudge factor works both ways. A message can arrive before it was signed because + // of clock skew. + now := uint64(time.Now().Unix()) + ti := now - tsig.TimeSigned + if now < tsig.TimeSigned { + ti = tsig.TimeSigned - now + } + if uint64(tsig.Fudge) < ti { + return ErrTime + } + + var h hash.Hash + switch tsig.Algorithm { + case HmacMD5: + h = hmac.New(md5.New, rawsecret) + case HmacSHA1: + h = hmac.New(sha1.New, rawsecret) + case HmacSHA256: + h = hmac.New(sha256.New, rawsecret) + case HmacSHA512: + h = hmac.New(sha512.New, rawsecret) + default: + return ErrKeyAlg + } + h.Write(buf) + if !hmac.Equal(h.Sum(nil), msgMAC) { + return ErrSig + } + return nil +} + +// Create a wiredata buffer for the MAC calculation. +func tsigBuffer(msgbuf []byte, rr *TSIG, requestMAC string, timersOnly bool) []byte { + var buf []byte + if rr.TimeSigned == 0 { + rr.TimeSigned = uint64(time.Now().Unix()) + } + if rr.Fudge == 0 { + rr.Fudge = 300 // Standard (RFC) default. + } + + if requestMAC != "" { + m := new(macWireFmt) + m.MACSize = uint16(len(requestMAC) / 2) + m.MAC = requestMAC + buf = make([]byte, len(requestMAC)) // long enough + n, _ := PackStruct(m, buf, 0) + buf = buf[:n] + } + + tsigvar := make([]byte, DefaultMsgSize) + if timersOnly { + tsig := new(timerWireFmt) + tsig.TimeSigned = rr.TimeSigned + tsig.Fudge = rr.Fudge + n, _ := PackStruct(tsig, tsigvar, 0) + tsigvar = tsigvar[:n] + } else { + tsig := new(tsigWireFmt) + tsig.Name = strings.ToLower(rr.Hdr.Name) + tsig.Class = ClassANY + tsig.Ttl = rr.Hdr.Ttl + tsig.Algorithm = strings.ToLower(rr.Algorithm) + tsig.TimeSigned = rr.TimeSigned + tsig.Fudge = rr.Fudge + tsig.Error = rr.Error + tsig.OtherLen = rr.OtherLen + tsig.OtherData = rr.OtherData + n, _ := PackStruct(tsig, tsigvar, 0) + tsigvar = tsigvar[:n] + } + + if requestMAC != "" { + x := append(buf, msgbuf...) + buf = append(x, tsigvar...) + } else { + buf = append(msgbuf, tsigvar...) + } + return buf +} + +// Strip the TSIG from the raw message. +func stripTsig(msg []byte) ([]byte, *TSIG, error) { + // Copied from msg.go's Unpack() + // Header. + var dh Header + var err error + dns := new(Msg) + rr := new(TSIG) + off := 0 + tsigoff := 0 + if off, err = UnpackStruct(&dh, msg, off); err != nil { + return nil, nil, err + } + if dh.Arcount == 0 { + return nil, nil, ErrNoSig + } + // Rcode, see msg.go Unpack() + if int(dh.Bits&0xF) == RcodeNotAuth { + return nil, nil, ErrAuth + } + + // Arrays. + dns.Question = make([]Question, dh.Qdcount) + dns.Answer = make([]RR, dh.Ancount) + dns.Ns = make([]RR, dh.Nscount) + dns.Extra = make([]RR, dh.Arcount) + + for i := 0; i < len(dns.Question); i++ { + off, err = UnpackStruct(&dns.Question[i], msg, off) + if err != nil { + return nil, nil, err + } + } + for i := 0; i < len(dns.Answer); i++ { + dns.Answer[i], off, err = UnpackRR(msg, off) + if err != nil { + return nil, nil, err + } + } + for i := 0; i < len(dns.Ns); i++ { + dns.Ns[i], off, err = UnpackRR(msg, off) + if err != nil { + return nil, nil, err + } + } + for i := 0; i < len(dns.Extra); i++ { + tsigoff = off + dns.Extra[i], off, err = UnpackRR(msg, off) + if err != nil { + return nil, nil, err + } + if dns.Extra[i].Header().Rrtype == TypeTSIG { + rr = dns.Extra[i].(*TSIG) + // Adjust Arcount. + arcount, _ := unpackUint16(msg, 10) + msg[10], msg[11] = packUint16(arcount - 1) + break + } + } + if rr == nil { + return nil, nil, ErrNoSig + } + return msg[:tsigoff], rr, nil +} + +// Translate the TSIG time signed into a date. There is no +// need for RFC1982 calculations as this date is 48 bits. +func tsigTimeToString(t uint64) string { + ti := time.Unix(int64(t), 0).UTC() + return ti.Format("20060102150405") +} diff --git a/vendor/github.com/miekg/dns/types.go b/vendor/github.com/miekg/dns/types.go new file mode 100644 index 00000000..55a50b81 --- /dev/null +++ b/vendor/github.com/miekg/dns/types.go @@ -0,0 +1,1741 @@ +package dns + +import ( + "encoding/base64" + "fmt" + "net" + "strconv" + "strings" + "time" +) + +type ( + // Type is a DNS type. + Type uint16 + // Class is a DNS class. + Class uint16 + // Name is a DNS domain name. + Name string +) + +// Packet formats + +// Wire constants and supported types. +const ( + // valid RR_Header.Rrtype and Question.qtype + + TypeNone uint16 = 0 + TypeA uint16 = 1 + TypeNS uint16 = 2 + TypeMD uint16 = 3 + TypeMF uint16 = 4 + TypeCNAME uint16 = 5 + TypeSOA uint16 = 6 + TypeMB uint16 = 7 + TypeMG uint16 = 8 + TypeMR uint16 = 9 + TypeNULL uint16 = 10 + TypeWKS uint16 = 11 + TypePTR uint16 = 12 + TypeHINFO uint16 = 13 + TypeMINFO uint16 = 14 + TypeMX uint16 = 15 + TypeTXT uint16 = 16 + TypeRP uint16 = 17 + TypeAFSDB uint16 = 18 + TypeX25 uint16 = 19 + TypeISDN uint16 = 20 + TypeRT uint16 = 21 + TypeNSAPPTR uint16 = 23 + TypeSIG uint16 = 24 + TypeKEY uint16 = 25 + TypePX uint16 = 26 + TypeGPOS uint16 = 27 + TypeAAAA uint16 = 28 + TypeLOC uint16 = 29 + TypeNXT uint16 = 30 + TypeEID uint16 = 31 + TypeNIMLOC uint16 = 32 + TypeSRV uint16 = 33 + TypeATMA uint16 = 34 + TypeNAPTR uint16 = 35 + TypeKX uint16 = 36 + TypeCERT uint16 = 37 + TypeDNAME uint16 = 39 + TypeOPT uint16 = 41 // EDNS + TypeDS uint16 = 43 + TypeSSHFP uint16 = 44 + TypeIPSECKEY uint16 = 45 + TypeRRSIG uint16 = 46 + TypeNSEC uint16 = 47 + TypeDNSKEY uint16 = 48 + TypeDHCID uint16 = 49 + TypeNSEC3 uint16 = 50 + TypeNSEC3PARAM uint16 = 51 + TypeTLSA uint16 = 52 + TypeHIP uint16 = 55 + TypeNINFO uint16 = 56 + TypeRKEY uint16 = 57 + TypeTALINK uint16 = 58 + TypeCDS uint16 = 59 + TypeCDNSKEY uint16 = 60 + TypeOPENPGPKEY uint16 = 61 + TypeSPF uint16 = 99 + TypeUINFO uint16 = 100 + TypeUID uint16 = 101 + TypeGID uint16 = 102 + TypeUNSPEC uint16 = 103 + TypeNID uint16 = 104 + TypeL32 uint16 = 105 + TypeL64 uint16 = 106 + TypeLP uint16 = 107 + TypeEUI48 uint16 = 108 + TypeEUI64 uint16 = 109 + TypeURI uint16 = 256 + TypeCAA uint16 = 257 + + TypeTKEY uint16 = 249 + TypeTSIG uint16 = 250 + + // valid Question.Qtype only + TypeIXFR uint16 = 251 + TypeAXFR uint16 = 252 + TypeMAILB uint16 = 253 + TypeMAILA uint16 = 254 + TypeANY uint16 = 255 + + TypeTA uint16 = 32768 + TypeDLV uint16 = 32769 + TypeReserved uint16 = 65535 + + // valid Question.Qclass + ClassINET = 1 + ClassCSNET = 2 + ClassCHAOS = 3 + ClassHESIOD = 4 + ClassNONE = 254 + ClassANY = 255 + + // Message Response Codes. + RcodeSuccess = 0 + RcodeFormatError = 1 + RcodeServerFailure = 2 + RcodeNameError = 3 + RcodeNotImplemented = 4 + RcodeRefused = 5 + RcodeYXDomain = 6 + RcodeYXRrset = 7 + RcodeNXRrset = 8 + RcodeNotAuth = 9 + RcodeNotZone = 10 + RcodeBadSig = 16 // TSIG + RcodeBadVers = 16 // EDNS0 + RcodeBadKey = 17 + RcodeBadTime = 18 + RcodeBadMode = 19 // TKEY + RcodeBadName = 20 + RcodeBadAlg = 21 + RcodeBadTrunc = 22 // TSIG + + // Message Opcodes. There is no 3. + OpcodeQuery = 0 + OpcodeIQuery = 1 + OpcodeStatus = 2 + OpcodeNotify = 4 + OpcodeUpdate = 5 +) + +// Headers is the wire format for the DNS packet header. +type Header struct { + Id uint16 + Bits uint16 + Qdcount, Ancount, Nscount, Arcount uint16 +} + +const ( + headerSize = 12 + + // Header.Bits + _QR = 1 << 15 // query/response (response=1) + _AA = 1 << 10 // authoritative + _TC = 1 << 9 // truncated + _RD = 1 << 8 // recursion desired + _RA = 1 << 7 // recursion available + _Z = 1 << 6 // Z + _AD = 1 << 5 // authticated data + _CD = 1 << 4 // checking disabled + + LOC_EQUATOR = 1 << 31 // RFC 1876, Section 2. + LOC_PRIMEMERIDIAN = 1 << 31 // RFC 1876, Section 2. + + LOC_HOURS = 60 * 1000 + LOC_DEGREES = 60 * LOC_HOURS + + LOC_ALTITUDEBASE = 100000 +) + +// Different Certificate Types, see RFC 4398, Section 2.1 +const ( + CertPKIX = 1 + iota + CertSPKI + CertPGP + CertIPIX + CertISPKI + CertIPGP + CertACPKIX + CertIACPKIX + CertURI = 253 + CertOID = 254 +) + +// CertTypeToString converts the Cert Type to its string representation. +// See RFC 4398 and RFC 6944. +var CertTypeToString = map[uint16]string{ + CertPKIX: "PKIX", + CertSPKI: "SPKI", + CertPGP: "PGP", + CertIPIX: "IPIX", + CertISPKI: "ISPKI", + CertIPGP: "IPGP", + CertACPKIX: "ACPKIX", + CertIACPKIX: "IACPKIX", + CertURI: "URI", + CertOID: "OID", +} + +// StringToCertType is the reverseof CertTypeToString. +var StringToCertType = reverseInt16(CertTypeToString) + +// Question holds a DNS question. There can be multiple questions in the +// question section of a message. Usually there is just one. +type Question struct { + Name string `dns:"cdomain-name"` // "cdomain-name" specifies encoding (and may be compressed) + Qtype uint16 + Qclass uint16 +} + +func (q *Question) String() (s string) { + // prefix with ; (as in dig) + s = ";" + sprintName(q.Name) + "\t" + s += Class(q.Qclass).String() + "\t" + s += " " + Type(q.Qtype).String() + return s +} + +func (q *Question) len() int { + l := len(q.Name) + 1 + return l + 4 +} + +// ANY is a wildcard record. See RFC 1035, Section 3.2.3. ANY +// is named "*" there. +type ANY struct { + Hdr RR_Header + // Does not have any rdata +} + +func (rr *ANY) Header() *RR_Header { return &rr.Hdr } +func (rr *ANY) copy() RR { return &ANY{*rr.Hdr.copyHeader()} } +func (rr *ANY) String() string { return rr.Hdr.String() } +func (rr *ANY) len() int { return rr.Hdr.len() } + +type CNAME struct { + Hdr RR_Header + Target string `dns:"cdomain-name"` +} + +func (rr *CNAME) Header() *RR_Header { return &rr.Hdr } +func (rr *CNAME) copy() RR { return &CNAME{*rr.Hdr.copyHeader(), sprintName(rr.Target)} } +func (rr *CNAME) String() string { return rr.Hdr.String() + rr.Target } +func (rr *CNAME) len() int { return rr.Hdr.len() + len(rr.Target) + 1 } + +type HINFO struct { + Hdr RR_Header + Cpu string + Os string +} + +func (rr *HINFO) Header() *RR_Header { return &rr.Hdr } +func (rr *HINFO) copy() RR { return &HINFO{*rr.Hdr.copyHeader(), rr.Cpu, rr.Os} } +func (rr *HINFO) String() string { + return rr.Hdr.String() + sprintTxt([]string{rr.Cpu, rr.Os}) +} +func (rr *HINFO) len() int { return rr.Hdr.len() + len(rr.Cpu) + len(rr.Os) } + +type MB struct { + Hdr RR_Header + Mb string `dns:"cdomain-name"` +} + +func (rr *MB) Header() *RR_Header { return &rr.Hdr } +func (rr *MB) copy() RR { return &MB{*rr.Hdr.copyHeader(), sprintName(rr.Mb)} } + +func (rr *MB) String() string { return rr.Hdr.String() + rr.Mb } +func (rr *MB) len() int { return rr.Hdr.len() + len(rr.Mb) + 1 } + +type MG struct { + Hdr RR_Header + Mg string `dns:"cdomain-name"` +} + +func (rr *MG) Header() *RR_Header { return &rr.Hdr } +func (rr *MG) copy() RR { return &MG{*rr.Hdr.copyHeader(), rr.Mg} } +func (rr *MG) len() int { l := len(rr.Mg) + 1; return rr.Hdr.len() + l } +func (rr *MG) String() string { return rr.Hdr.String() + sprintName(rr.Mg) } + +type MINFO struct { + Hdr RR_Header + Rmail string `dns:"cdomain-name"` + Email string `dns:"cdomain-name"` +} + +func (rr *MINFO) Header() *RR_Header { return &rr.Hdr } +func (rr *MINFO) copy() RR { return &MINFO{*rr.Hdr.copyHeader(), rr.Rmail, rr.Email} } + +func (rr *MINFO) String() string { + return rr.Hdr.String() + sprintName(rr.Rmail) + " " + sprintName(rr.Email) +} + +func (rr *MINFO) len() int { + l := len(rr.Rmail) + 1 + n := len(rr.Email) + 1 + return rr.Hdr.len() + l + n +} + +type MR struct { + Hdr RR_Header + Mr string `dns:"cdomain-name"` +} + +func (rr *MR) Header() *RR_Header { return &rr.Hdr } +func (rr *MR) copy() RR { return &MR{*rr.Hdr.copyHeader(), rr.Mr} } +func (rr *MR) len() int { l := len(rr.Mr) + 1; return rr.Hdr.len() + l } + +func (rr *MR) String() string { + return rr.Hdr.String() + sprintName(rr.Mr) +} + +type MF struct { + Hdr RR_Header + Mf string `dns:"cdomain-name"` +} + +func (rr *MF) Header() *RR_Header { return &rr.Hdr } +func (rr *MF) copy() RR { return &MF{*rr.Hdr.copyHeader(), rr.Mf} } +func (rr *MF) len() int { return rr.Hdr.len() + len(rr.Mf) + 1 } + +func (rr *MF) String() string { + return rr.Hdr.String() + sprintName(rr.Mf) +} + +type MD struct { + Hdr RR_Header + Md string `dns:"cdomain-name"` +} + +func (rr *MD) Header() *RR_Header { return &rr.Hdr } +func (rr *MD) copy() RR { return &MD{*rr.Hdr.copyHeader(), rr.Md} } +func (rr *MD) len() int { return rr.Hdr.len() + len(rr.Md) + 1 } + +func (rr *MD) String() string { + return rr.Hdr.String() + sprintName(rr.Md) +} + +type MX struct { + Hdr RR_Header + Preference uint16 + Mx string `dns:"cdomain-name"` +} + +func (rr *MX) Header() *RR_Header { return &rr.Hdr } +func (rr *MX) copy() RR { return &MX{*rr.Hdr.copyHeader(), rr.Preference, rr.Mx} } +func (rr *MX) len() int { l := len(rr.Mx) + 1; return rr.Hdr.len() + l + 2 } + +func (rr *MX) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + " " + sprintName(rr.Mx) +} + +type AFSDB struct { + Hdr RR_Header + Subtype uint16 + Hostname string `dns:"cdomain-name"` +} + +func (rr *AFSDB) Header() *RR_Header { return &rr.Hdr } +func (rr *AFSDB) copy() RR { return &AFSDB{*rr.Hdr.copyHeader(), rr.Subtype, rr.Hostname} } +func (rr *AFSDB) len() int { l := len(rr.Hostname) + 1; return rr.Hdr.len() + l + 2 } + +func (rr *AFSDB) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Subtype)) + " " + sprintName(rr.Hostname) +} + +type X25 struct { + Hdr RR_Header + PSDNAddress string +} + +func (rr *X25) Header() *RR_Header { return &rr.Hdr } +func (rr *X25) copy() RR { return &X25{*rr.Hdr.copyHeader(), rr.PSDNAddress} } +func (rr *X25) len() int { return rr.Hdr.len() + len(rr.PSDNAddress) + 1 } + +func (rr *X25) String() string { + return rr.Hdr.String() + rr.PSDNAddress +} + +type RT struct { + Hdr RR_Header + Preference uint16 + Host string `dns:"cdomain-name"` +} + +func (rr *RT) Header() *RR_Header { return &rr.Hdr } +func (rr *RT) copy() RR { return &RT{*rr.Hdr.copyHeader(), rr.Preference, rr.Host} } +func (rr *RT) len() int { l := len(rr.Host) + 1; return rr.Hdr.len() + l + 2 } + +func (rr *RT) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + " " + sprintName(rr.Host) +} + +type NS struct { + Hdr RR_Header + Ns string `dns:"cdomain-name"` +} + +func (rr *NS) Header() *RR_Header { return &rr.Hdr } +func (rr *NS) len() int { l := len(rr.Ns) + 1; return rr.Hdr.len() + l } +func (rr *NS) copy() RR { return &NS{*rr.Hdr.copyHeader(), rr.Ns} } + +func (rr *NS) String() string { + return rr.Hdr.String() + sprintName(rr.Ns) +} + +type PTR struct { + Hdr RR_Header + Ptr string `dns:"cdomain-name"` +} + +func (rr *PTR) Header() *RR_Header { return &rr.Hdr } +func (rr *PTR) copy() RR { return &PTR{*rr.Hdr.copyHeader(), rr.Ptr} } +func (rr *PTR) len() int { l := len(rr.Ptr) + 1; return rr.Hdr.len() + l } + +func (rr *PTR) String() string { + return rr.Hdr.String() + sprintName(rr.Ptr) +} + +type RP struct { + Hdr RR_Header + Mbox string `dns:"domain-name"` + Txt string `dns:"domain-name"` +} + +func (rr *RP) Header() *RR_Header { return &rr.Hdr } +func (rr *RP) copy() RR { return &RP{*rr.Hdr.copyHeader(), rr.Mbox, rr.Txt} } +func (rr *RP) len() int { return rr.Hdr.len() + len(rr.Mbox) + 1 + len(rr.Txt) + 1 } + +func (rr *RP) String() string { + return rr.Hdr.String() + rr.Mbox + " " + sprintTxt([]string{rr.Txt}) +} + +type SOA struct { + Hdr RR_Header + Ns string `dns:"cdomain-name"` + Mbox string `dns:"cdomain-name"` + Serial uint32 + Refresh uint32 + Retry uint32 + Expire uint32 + Minttl uint32 +} + +func (rr *SOA) Header() *RR_Header { return &rr.Hdr } +func (rr *SOA) copy() RR { + return &SOA{*rr.Hdr.copyHeader(), rr.Ns, rr.Mbox, rr.Serial, rr.Refresh, rr.Retry, rr.Expire, rr.Minttl} +} + +func (rr *SOA) String() string { + return rr.Hdr.String() + sprintName(rr.Ns) + " " + sprintName(rr.Mbox) + + " " + strconv.FormatInt(int64(rr.Serial), 10) + + " " + strconv.FormatInt(int64(rr.Refresh), 10) + + " " + strconv.FormatInt(int64(rr.Retry), 10) + + " " + strconv.FormatInt(int64(rr.Expire), 10) + + " " + strconv.FormatInt(int64(rr.Minttl), 10) +} + +func (rr *SOA) len() int { + l := len(rr.Ns) + 1 + n := len(rr.Mbox) + 1 + return rr.Hdr.len() + l + n + 20 +} + +type TXT struct { + Hdr RR_Header + Txt []string `dns:"txt"` +} + +func (rr *TXT) Header() *RR_Header { return &rr.Hdr } +func (rr *TXT) copy() RR { + cp := make([]string, len(rr.Txt), cap(rr.Txt)) + copy(cp, rr.Txt) + return &TXT{*rr.Hdr.copyHeader(), cp} +} + +func (rr *TXT) String() string { return rr.Hdr.String() + sprintTxt(rr.Txt) } + +func sprintName(s string) string { + src := []byte(s) + dst := make([]byte, 0, len(src)) + for i := 0; i < len(src); { + if i+1 < len(src) && src[i] == '\\' && src[i+1] == '.' { + dst = append(dst, src[i:i+2]...) + i += 2 + } else { + b, n := nextByte(src, i) + if n == 0 { + i++ // dangling back slash + } else if b == '.' { + dst = append(dst, b) + } else { + dst = appendDomainNameByte(dst, b) + } + i += n + } + } + return string(dst) +} + +func sprintTxtOctet(s string) string { + src := []byte(s) + dst := make([]byte, 0, len(src)) + dst = append(dst, '"') + for i := 0; i < len(src); { + if i+1 < len(src) && src[i] == '\\' && src[i+1] == '.' { + dst = append(dst, src[i:i+2]...) + i += 2 + } else { + b, n := nextByte(src, i) + if n == 0 { + i++ // dangling back slash + } else if b == '.' { + dst = append(dst, b) + } else { + if b < ' ' || b > '~' { + dst = appendByte(dst, b) + } else { + dst = append(dst, b) + } + } + i += n + } + } + dst = append(dst, '"') + return string(dst) +} + +func sprintTxt(txt []string) string { + var out []byte + for i, s := range txt { + if i > 0 { + out = append(out, ` "`...) + } else { + out = append(out, '"') + } + bs := []byte(s) + for j := 0; j < len(bs); { + b, n := nextByte(bs, j) + if n == 0 { + break + } + out = appendTXTStringByte(out, b) + j += n + } + out = append(out, '"') + } + return string(out) +} + +func appendDomainNameByte(s []byte, b byte) []byte { + switch b { + case '.', ' ', '\'', '@', ';', '(', ')': // additional chars to escape + return append(s, '\\', b) + } + return appendTXTStringByte(s, b) +} + +func appendTXTStringByte(s []byte, b byte) []byte { + switch b { + case '\t': + return append(s, '\\', 't') + case '\r': + return append(s, '\\', 'r') + case '\n': + return append(s, '\\', 'n') + case '"', '\\': + return append(s, '\\', b) + } + if b < ' ' || b > '~' { + return appendByte(s, b) + } + return append(s, b) +} + +func appendByte(s []byte, b byte) []byte { + var buf [3]byte + bufs := strconv.AppendInt(buf[:0], int64(b), 10) + s = append(s, '\\') + for i := 0; i < 3-len(bufs); i++ { + s = append(s, '0') + } + for _, r := range bufs { + s = append(s, r) + } + return s +} + +func nextByte(b []byte, offset int) (byte, int) { + if offset >= len(b) { + return 0, 0 + } + if b[offset] != '\\' { + // not an escape sequence + return b[offset], 1 + } + switch len(b) - offset { + case 1: // dangling escape + return 0, 0 + case 2, 3: // too short to be \ddd + default: // maybe \ddd + if isDigit(b[offset+1]) && isDigit(b[offset+2]) && isDigit(b[offset+3]) { + return dddToByte(b[offset+1:]), 4 + } + } + // not \ddd, maybe a control char + switch b[offset+1] { + case 't': + return '\t', 2 + case 'r': + return '\r', 2 + case 'n': + return '\n', 2 + default: + return b[offset+1], 2 + } +} + +func (rr *TXT) len() int { + l := rr.Hdr.len() + for _, t := range rr.Txt { + l += len(t) + 1 + } + return l +} + +type SPF struct { + Hdr RR_Header + Txt []string `dns:"txt"` +} + +func (rr *SPF) Header() *RR_Header { return &rr.Hdr } +func (rr *SPF) copy() RR { + cp := make([]string, len(rr.Txt), cap(rr.Txt)) + copy(cp, rr.Txt) + return &SPF{*rr.Hdr.copyHeader(), cp} +} + +func (rr *SPF) String() string { return rr.Hdr.String() + sprintTxt(rr.Txt) } + +func (rr *SPF) len() int { + l := rr.Hdr.len() + for _, t := range rr.Txt { + l += len(t) + 1 + } + return l +} + +type SRV struct { + Hdr RR_Header + Priority uint16 + Weight uint16 + Port uint16 + Target string `dns:"domain-name"` +} + +func (rr *SRV) Header() *RR_Header { return &rr.Hdr } +func (rr *SRV) len() int { l := len(rr.Target) + 1; return rr.Hdr.len() + l + 6 } +func (rr *SRV) copy() RR { + return &SRV{*rr.Hdr.copyHeader(), rr.Priority, rr.Weight, rr.Port, rr.Target} +} + +func (rr *SRV) String() string { + return rr.Hdr.String() + + strconv.Itoa(int(rr.Priority)) + " " + + strconv.Itoa(int(rr.Weight)) + " " + + strconv.Itoa(int(rr.Port)) + " " + sprintName(rr.Target) +} + +type NAPTR struct { + Hdr RR_Header + Order uint16 + Preference uint16 + Flags string + Service string + Regexp string + Replacement string `dns:"domain-name"` +} + +func (rr *NAPTR) Header() *RR_Header { return &rr.Hdr } +func (rr *NAPTR) copy() RR { + return &NAPTR{*rr.Hdr.copyHeader(), rr.Order, rr.Preference, rr.Flags, rr.Service, rr.Regexp, rr.Replacement} +} + +func (rr *NAPTR) String() string { + return rr.Hdr.String() + + strconv.Itoa(int(rr.Order)) + " " + + strconv.Itoa(int(rr.Preference)) + " " + + "\"" + rr.Flags + "\" " + + "\"" + rr.Service + "\" " + + "\"" + rr.Regexp + "\" " + + rr.Replacement +} + +func (rr *NAPTR) len() int { + return rr.Hdr.len() + 4 + len(rr.Flags) + 1 + len(rr.Service) + 1 + + len(rr.Regexp) + 1 + len(rr.Replacement) + 1 +} + +// The CERT resource record, see RFC 4398. +type CERT struct { + Hdr RR_Header + Type uint16 + KeyTag uint16 + Algorithm uint8 + Certificate string `dns:"base64"` +} + +func (rr *CERT) Header() *RR_Header { return &rr.Hdr } +func (rr *CERT) copy() RR { + return &CERT{*rr.Hdr.copyHeader(), rr.Type, rr.KeyTag, rr.Algorithm, rr.Certificate} +} + +func (rr *CERT) String() string { + var ( + ok bool + certtype, algorithm string + ) + if certtype, ok = CertTypeToString[rr.Type]; !ok { + certtype = strconv.Itoa(int(rr.Type)) + } + if algorithm, ok = AlgorithmToString[rr.Algorithm]; !ok { + algorithm = strconv.Itoa(int(rr.Algorithm)) + } + return rr.Hdr.String() + certtype + + " " + strconv.Itoa(int(rr.KeyTag)) + + " " + algorithm + + " " + rr.Certificate +} + +func (rr *CERT) len() int { + return rr.Hdr.len() + 5 + + base64.StdEncoding.DecodedLen(len(rr.Certificate)) +} + +// The DNAME resource record, see RFC 2672. +type DNAME struct { + Hdr RR_Header + Target string `dns:"domain-name"` +} + +func (rr *DNAME) Header() *RR_Header { return &rr.Hdr } +func (rr *DNAME) copy() RR { return &DNAME{*rr.Hdr.copyHeader(), rr.Target} } +func (rr *DNAME) len() int { l := len(rr.Target) + 1; return rr.Hdr.len() + l } + +func (rr *DNAME) String() string { + return rr.Hdr.String() + sprintName(rr.Target) +} + +type A struct { + Hdr RR_Header + A net.IP `dns:"a"` +} + +func (rr *A) Header() *RR_Header { return &rr.Hdr } +func (rr *A) copy() RR { return &A{*rr.Hdr.copyHeader(), copyIP(rr.A)} } +func (rr *A) len() int { return rr.Hdr.len() + net.IPv4len } + +func (rr *A) String() string { + if rr.A == nil { + return rr.Hdr.String() + } + return rr.Hdr.String() + rr.A.String() +} + +type AAAA struct { + Hdr RR_Header + AAAA net.IP `dns:"aaaa"` +} + +func (rr *AAAA) Header() *RR_Header { return &rr.Hdr } +func (rr *AAAA) copy() RR { return &AAAA{*rr.Hdr.copyHeader(), copyIP(rr.AAAA)} } +func (rr *AAAA) len() int { return rr.Hdr.len() + net.IPv6len } + +func (rr *AAAA) String() string { + if rr.AAAA == nil { + return rr.Hdr.String() + } + return rr.Hdr.String() + rr.AAAA.String() +} + +type PX struct { + Hdr RR_Header + Preference uint16 + Map822 string `dns:"domain-name"` + Mapx400 string `dns:"domain-name"` +} + +func (rr *PX) Header() *RR_Header { return &rr.Hdr } +func (rr *PX) copy() RR { return &PX{*rr.Hdr.copyHeader(), rr.Preference, rr.Map822, rr.Mapx400} } +func (rr *PX) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + " " + sprintName(rr.Map822) + " " + sprintName(rr.Mapx400) +} +func (rr *PX) len() int { return rr.Hdr.len() + 2 + len(rr.Map822) + 1 + len(rr.Mapx400) + 1 } + +type GPOS struct { + Hdr RR_Header + Longitude string + Latitude string + Altitude string +} + +func (rr *GPOS) Header() *RR_Header { return &rr.Hdr } +func (rr *GPOS) copy() RR { return &GPOS{*rr.Hdr.copyHeader(), rr.Longitude, rr.Latitude, rr.Altitude} } +func (rr *GPOS) len() int { + return rr.Hdr.len() + len(rr.Longitude) + len(rr.Latitude) + len(rr.Altitude) + 3 +} +func (rr *GPOS) String() string { + return rr.Hdr.String() + rr.Longitude + " " + rr.Latitude + " " + rr.Altitude +} + +type LOC struct { + Hdr RR_Header + Version uint8 + Size uint8 + HorizPre uint8 + VertPre uint8 + Latitude uint32 + Longitude uint32 + Altitude uint32 +} + +func (rr *LOC) Header() *RR_Header { return &rr.Hdr } +func (rr *LOC) len() int { return rr.Hdr.len() + 4 + 12 } +func (rr *LOC) copy() RR { + return &LOC{*rr.Hdr.copyHeader(), rr.Version, rr.Size, rr.HorizPre, rr.VertPre, rr.Latitude, rr.Longitude, rr.Altitude} +} + +// cmToM takes a cm value expressed in RFC1876 SIZE mantissa/exponent +// format and returns a string in m (two decimals for the cm) +func cmToM(m, e uint8) string { + if e < 2 { + if e == 1 { + m *= 10 + } + + return fmt.Sprintf("0.%02d", m) + } + + s := fmt.Sprintf("%d", m) + for e > 2 { + s += "0" + e-- + } + return s +} + +func (rr *LOC) String() string { + s := rr.Hdr.String() + + lat := rr.Latitude + ns := "N" + if lat > LOC_EQUATOR { + lat = lat - LOC_EQUATOR + } else { + ns = "S" + lat = LOC_EQUATOR - lat + } + h := lat / LOC_DEGREES + lat = lat % LOC_DEGREES + m := lat / LOC_HOURS + lat = lat % LOC_HOURS + s += fmt.Sprintf("%02d %02d %0.3f %s ", h, m, (float64(lat) / 1000), ns) + + lon := rr.Longitude + ew := "E" + if lon > LOC_PRIMEMERIDIAN { + lon = lon - LOC_PRIMEMERIDIAN + } else { + ew = "W" + lon = LOC_PRIMEMERIDIAN - lon + } + h = lon / LOC_DEGREES + lon = lon % LOC_DEGREES + m = lon / LOC_HOURS + lon = lon % LOC_HOURS + s += fmt.Sprintf("%02d %02d %0.3f %s ", h, m, (float64(lon) / 1000), ew) + + var alt = float64(rr.Altitude) / 100 + alt -= LOC_ALTITUDEBASE + if rr.Altitude%100 != 0 { + s += fmt.Sprintf("%.2fm ", alt) + } else { + s += fmt.Sprintf("%.0fm ", alt) + } + + s += cmToM((rr.Size&0xf0)>>4, rr.Size&0x0f) + "m " + s += cmToM((rr.HorizPre&0xf0)>>4, rr.HorizPre&0x0f) + "m " + s += cmToM((rr.VertPre&0xf0)>>4, rr.VertPre&0x0f) + "m" + + return s +} + +// SIG is identical to RRSIG and nowadays only used for SIG(0), RFC2931. +type SIG struct { + RRSIG +} + +type RRSIG struct { + Hdr RR_Header + TypeCovered uint16 + Algorithm uint8 + Labels uint8 + OrigTtl uint32 + Expiration uint32 + Inception uint32 + KeyTag uint16 + SignerName string `dns:"domain-name"` + Signature string `dns:"base64"` +} + +func (rr *RRSIG) Header() *RR_Header { return &rr.Hdr } +func (rr *RRSIG) copy() RR { + return &RRSIG{*rr.Hdr.copyHeader(), rr.TypeCovered, rr.Algorithm, rr.Labels, rr.OrigTtl, rr.Expiration, rr.Inception, rr.KeyTag, rr.SignerName, rr.Signature} +} + +func (rr *RRSIG) String() string { + s := rr.Hdr.String() + s += Type(rr.TypeCovered).String() + s += " " + strconv.Itoa(int(rr.Algorithm)) + + " " + strconv.Itoa(int(rr.Labels)) + + " " + strconv.FormatInt(int64(rr.OrigTtl), 10) + + " " + TimeToString(rr.Expiration) + + " " + TimeToString(rr.Inception) + + " " + strconv.Itoa(int(rr.KeyTag)) + + " " + sprintName(rr.SignerName) + + " " + rr.Signature + return s +} + +func (rr *RRSIG) len() int { + return rr.Hdr.len() + len(rr.SignerName) + 1 + + base64.StdEncoding.DecodedLen(len(rr.Signature)) + 18 +} + +type NSEC struct { + Hdr RR_Header + NextDomain string `dns:"domain-name"` + TypeBitMap []uint16 `dns:"nsec"` +} + +func (rr *NSEC) Header() *RR_Header { return &rr.Hdr } +func (rr *NSEC) copy() RR { + cp := make([]uint16, len(rr.TypeBitMap), cap(rr.TypeBitMap)) + copy(cp, rr.TypeBitMap) + return &NSEC{*rr.Hdr.copyHeader(), rr.NextDomain, cp} +} + +func (rr *NSEC) String() string { + s := rr.Hdr.String() + sprintName(rr.NextDomain) + for i := 0; i < len(rr.TypeBitMap); i++ { + s += " " + Type(rr.TypeBitMap[i]).String() + } + return s +} + +func (rr *NSEC) len() int { + l := rr.Hdr.len() + len(rr.NextDomain) + 1 + lastwindow := uint32(2 ^ 32 + 1) + for _, t := range rr.TypeBitMap { + window := t / 256 + if uint32(window) != lastwindow { + l += 1 + 32 + } + lastwindow = uint32(window) + } + return l +} + +type DLV struct { + DS +} + +type CDS struct { + DS +} + +type DS struct { + Hdr RR_Header + KeyTag uint16 + Algorithm uint8 + DigestType uint8 + Digest string `dns:"hex"` +} + +func (rr *DS) Header() *RR_Header { return &rr.Hdr } +func (rr *DS) len() int { return rr.Hdr.len() + 4 + len(rr.Digest)/2 } +func (rr *DS) copy() RR { + return &DS{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} +} + +func (rr *DS) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.KeyTag)) + + " " + strconv.Itoa(int(rr.Algorithm)) + + " " + strconv.Itoa(int(rr.DigestType)) + + " " + strings.ToUpper(rr.Digest) +} + +type KX struct { + Hdr RR_Header + Preference uint16 + Exchanger string `dns:"domain-name"` +} + +func (rr *KX) Header() *RR_Header { return &rr.Hdr } +func (rr *KX) len() int { return rr.Hdr.len() + 2 + len(rr.Exchanger) + 1 } +func (rr *KX) copy() RR { return &KX{*rr.Hdr.copyHeader(), rr.Preference, rr.Exchanger} } + +func (rr *KX) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + + " " + sprintName(rr.Exchanger) +} + +type TA struct { + Hdr RR_Header + KeyTag uint16 + Algorithm uint8 + DigestType uint8 + Digest string `dns:"hex"` +} + +func (rr *TA) Header() *RR_Header { return &rr.Hdr } +func (rr *TA) len() int { return rr.Hdr.len() + 4 + len(rr.Digest)/2 } +func (rr *TA) copy() RR { + return &TA{*rr.Hdr.copyHeader(), rr.KeyTag, rr.Algorithm, rr.DigestType, rr.Digest} +} + +func (rr *TA) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.KeyTag)) + + " " + strconv.Itoa(int(rr.Algorithm)) + + " " + strconv.Itoa(int(rr.DigestType)) + + " " + strings.ToUpper(rr.Digest) +} + +type TALINK struct { + Hdr RR_Header + PreviousName string `dns:"domain-name"` + NextName string `dns:"domain-name"` +} + +func (rr *TALINK) Header() *RR_Header { return &rr.Hdr } +func (rr *TALINK) copy() RR { return &TALINK{*rr.Hdr.copyHeader(), rr.PreviousName, rr.NextName} } +func (rr *TALINK) len() int { return rr.Hdr.len() + len(rr.PreviousName) + len(rr.NextName) + 2 } + +func (rr *TALINK) String() string { + return rr.Hdr.String() + + sprintName(rr.PreviousName) + " " + sprintName(rr.NextName) +} + +type SSHFP struct { + Hdr RR_Header + Algorithm uint8 + Type uint8 + FingerPrint string `dns:"hex"` +} + +func (rr *SSHFP) Header() *RR_Header { return &rr.Hdr } +func (rr *SSHFP) len() int { return rr.Hdr.len() + 2 + len(rr.FingerPrint)/2 } +func (rr *SSHFP) copy() RR { + return &SSHFP{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Type, rr.FingerPrint} +} + +func (rr *SSHFP) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Algorithm)) + + " " + strconv.Itoa(int(rr.Type)) + + " " + strings.ToUpper(rr.FingerPrint) +} + +type IPSECKEY struct { + Hdr RR_Header + Precedence uint8 + // GatewayType: 1: A record, 2: AAAA record, 3: domainname. + // 0 is use for no type and GatewayName should be "." then. + GatewayType uint8 + Algorithm uint8 + // Gateway can be an A record, AAAA record or a domain name. + GatewayA net.IP `dns:"a"` + GatewayAAAA net.IP `dns:"aaaa"` + GatewayName string `dns:"domain-name"` + PublicKey string `dns:"base64"` +} + +func (rr *IPSECKEY) Header() *RR_Header { return &rr.Hdr } +func (rr *IPSECKEY) copy() RR { + return &IPSECKEY{*rr.Hdr.copyHeader(), rr.Precedence, rr.GatewayType, rr.Algorithm, rr.GatewayA, rr.GatewayAAAA, rr.GatewayName, rr.PublicKey} +} + +func (rr *IPSECKEY) String() string { + s := rr.Hdr.String() + strconv.Itoa(int(rr.Precedence)) + + " " + strconv.Itoa(int(rr.GatewayType)) + + " " + strconv.Itoa(int(rr.Algorithm)) + switch rr.GatewayType { + case 0: + fallthrough + case 3: + s += " " + rr.GatewayName + case 1: + s += " " + rr.GatewayA.String() + case 2: + s += " " + rr.GatewayAAAA.String() + default: + s += " ." + } + s += " " + rr.PublicKey + return s +} + +func (rr *IPSECKEY) len() int { + l := rr.Hdr.len() + 3 + 1 + switch rr.GatewayType { + default: + fallthrough + case 0: + fallthrough + case 3: + l += len(rr.GatewayName) + case 1: + l += 4 + case 2: + l += 16 + } + return l + base64.StdEncoding.DecodedLen(len(rr.PublicKey)) +} + +type KEY struct { + DNSKEY +} + +type CDNSKEY struct { + DNSKEY +} + +type DNSKEY struct { + Hdr RR_Header + Flags uint16 + Protocol uint8 + Algorithm uint8 + PublicKey string `dns:"base64"` +} + +func (rr *DNSKEY) Header() *RR_Header { return &rr.Hdr } +func (rr *DNSKEY) len() int { + return rr.Hdr.len() + 4 + base64.StdEncoding.DecodedLen(len(rr.PublicKey)) +} +func (rr *DNSKEY) copy() RR { + return &DNSKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} +} + +func (rr *DNSKEY) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Flags)) + + " " + strconv.Itoa(int(rr.Protocol)) + + " " + strconv.Itoa(int(rr.Algorithm)) + + " " + rr.PublicKey +} + +type RKEY struct { + Hdr RR_Header + Flags uint16 + Protocol uint8 + Algorithm uint8 + PublicKey string `dns:"base64"` +} + +func (rr *RKEY) Header() *RR_Header { return &rr.Hdr } +func (rr *RKEY) len() int { return rr.Hdr.len() + 4 + base64.StdEncoding.DecodedLen(len(rr.PublicKey)) } +func (rr *RKEY) copy() RR { + return &RKEY{*rr.Hdr.copyHeader(), rr.Flags, rr.Protocol, rr.Algorithm, rr.PublicKey} +} + +func (rr *RKEY) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Flags)) + + " " + strconv.Itoa(int(rr.Protocol)) + + " " + strconv.Itoa(int(rr.Algorithm)) + + " " + rr.PublicKey +} + +type NSAPPTR struct { + Hdr RR_Header + Ptr string `dns:"domain-name"` +} + +func (rr *NSAPPTR) Header() *RR_Header { return &rr.Hdr } +func (rr *NSAPPTR) copy() RR { return &NSAPPTR{*rr.Hdr.copyHeader(), rr.Ptr} } +func (rr *NSAPPTR) String() string { return rr.Hdr.String() + sprintName(rr.Ptr) } +func (rr *NSAPPTR) len() int { return rr.Hdr.len() + len(rr.Ptr) } + +type NSEC3 struct { + Hdr RR_Header + Hash uint8 + Flags uint8 + Iterations uint16 + SaltLength uint8 + Salt string `dns:"size-hex"` + HashLength uint8 + NextDomain string `dns:"size-base32"` + TypeBitMap []uint16 `dns:"nsec"` +} + +func (rr *NSEC3) Header() *RR_Header { return &rr.Hdr } +func (rr *NSEC3) copy() RR { + cp := make([]uint16, len(rr.TypeBitMap), cap(rr.TypeBitMap)) + copy(cp, rr.TypeBitMap) + return &NSEC3{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt, rr.HashLength, rr.NextDomain, cp} +} + +func (rr *NSEC3) String() string { + s := rr.Hdr.String() + s += strconv.Itoa(int(rr.Hash)) + + " " + strconv.Itoa(int(rr.Flags)) + + " " + strconv.Itoa(int(rr.Iterations)) + + " " + saltToString(rr.Salt) + + " " + rr.NextDomain + for i := 0; i < len(rr.TypeBitMap); i++ { + s += " " + Type(rr.TypeBitMap[i]).String() + } + return s +} + +func (rr *NSEC3) len() int { + l := rr.Hdr.len() + 6 + len(rr.Salt)/2 + 1 + len(rr.NextDomain) + 1 + lastwindow := uint32(2 ^ 32 + 1) + for _, t := range rr.TypeBitMap { + window := t / 256 + if uint32(window) != lastwindow { + l += 1 + 32 + } + lastwindow = uint32(window) + } + return l +} + +type NSEC3PARAM struct { + Hdr RR_Header + Hash uint8 + Flags uint8 + Iterations uint16 + SaltLength uint8 + Salt string `dns:"hex"` +} + +func (rr *NSEC3PARAM) Header() *RR_Header { return &rr.Hdr } +func (rr *NSEC3PARAM) len() int { return rr.Hdr.len() + 2 + 4 + 1 + len(rr.Salt)/2 } +func (rr *NSEC3PARAM) copy() RR { + return &NSEC3PARAM{*rr.Hdr.copyHeader(), rr.Hash, rr.Flags, rr.Iterations, rr.SaltLength, rr.Salt} +} + +func (rr *NSEC3PARAM) String() string { + s := rr.Hdr.String() + s += strconv.Itoa(int(rr.Hash)) + + " " + strconv.Itoa(int(rr.Flags)) + + " " + strconv.Itoa(int(rr.Iterations)) + + " " + saltToString(rr.Salt) + return s +} + +type TKEY struct { + Hdr RR_Header + Algorithm string `dns:"domain-name"` + Inception uint32 + Expiration uint32 + Mode uint16 + Error uint16 + KeySize uint16 + Key string + OtherLen uint16 + OtherData string +} + +func (rr *TKEY) Header() *RR_Header { return &rr.Hdr } +func (rr *TKEY) copy() RR { + return &TKEY{*rr.Hdr.copyHeader(), rr.Algorithm, rr.Inception, rr.Expiration, rr.Mode, rr.Error, rr.KeySize, rr.Key, rr.OtherLen, rr.OtherData} +} + +func (rr *TKEY) String() string { + // It has no presentation format + return "" +} + +func (rr *TKEY) len() int { + return rr.Hdr.len() + len(rr.Algorithm) + 1 + 4 + 4 + 6 + + len(rr.Key) + 2 + len(rr.OtherData) +} + +// RFC3597 represents an unknown/generic RR. +type RFC3597 struct { + Hdr RR_Header + Rdata string `dns:"hex"` +} + +func (rr *RFC3597) Header() *RR_Header { return &rr.Hdr } +func (rr *RFC3597) copy() RR { return &RFC3597{*rr.Hdr.copyHeader(), rr.Rdata} } +func (rr *RFC3597) len() int { return rr.Hdr.len() + len(rr.Rdata)/2 + 2 } + +func (rr *RFC3597) String() string { + // Let's call it a hack + s := rfc3597Header(rr.Hdr) + + s += "\\# " + strconv.Itoa(len(rr.Rdata)/2) + " " + rr.Rdata + return s +} + +func rfc3597Header(h RR_Header) string { + var s string + + s += sprintName(h.Name) + "\t" + s += strconv.FormatInt(int64(h.Ttl), 10) + "\t" + s += "CLASS" + strconv.Itoa(int(h.Class)) + "\t" + s += "TYPE" + strconv.Itoa(int(h.Rrtype)) + "\t" + return s +} + +type URI struct { + Hdr RR_Header + Priority uint16 + Weight uint16 + Target string `dns:"octet"` +} + +func (rr *URI) Header() *RR_Header { return &rr.Hdr } +func (rr *URI) copy() RR { return &URI{*rr.Hdr.copyHeader(), rr.Weight, rr.Priority, rr.Target} } +func (rr *URI) len() int { return rr.Hdr.len() + 4 + len(rr.Target) } +func (rr *URI) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Priority)) + + " " + strconv.Itoa(int(rr.Weight)) + " " + sprintTxtOctet(rr.Target) +} + +type DHCID struct { + Hdr RR_Header + Digest string `dns:"base64"` +} + +func (rr *DHCID) Header() *RR_Header { return &rr.Hdr } +func (rr *DHCID) copy() RR { return &DHCID{*rr.Hdr.copyHeader(), rr.Digest} } +func (rr *DHCID) String() string { return rr.Hdr.String() + rr.Digest } +func (rr *DHCID) len() int { return rr.Hdr.len() + base64.StdEncoding.DecodedLen(len(rr.Digest)) } + +type TLSA struct { + Hdr RR_Header + Usage uint8 + Selector uint8 + MatchingType uint8 + Certificate string `dns:"hex"` +} + +func (rr *TLSA) Header() *RR_Header { return &rr.Hdr } +func (rr *TLSA) len() int { return rr.Hdr.len() + 3 + len(rr.Certificate)/2 } + +func (rr *TLSA) copy() RR { + return &TLSA{*rr.Hdr.copyHeader(), rr.Usage, rr.Selector, rr.MatchingType, rr.Certificate} +} + +func (rr *TLSA) String() string { + return rr.Hdr.String() + + strconv.Itoa(int(rr.Usage)) + + " " + strconv.Itoa(int(rr.Selector)) + + " " + strconv.Itoa(int(rr.MatchingType)) + + " " + rr.Certificate +} + +type HIP struct { + Hdr RR_Header + HitLength uint8 + PublicKeyAlgorithm uint8 + PublicKeyLength uint16 + Hit string `dns:"hex"` + PublicKey string `dns:"base64"` + RendezvousServers []string `dns:"domain-name"` +} + +func (rr *HIP) Header() *RR_Header { return &rr.Hdr } +func (rr *HIP) copy() RR { + cp := make([]string, len(rr.RendezvousServers), cap(rr.RendezvousServers)) + copy(cp, rr.RendezvousServers) + return &HIP{*rr.Hdr.copyHeader(), rr.HitLength, rr.PublicKeyAlgorithm, rr.PublicKeyLength, rr.Hit, rr.PublicKey, cp} +} + +func (rr *HIP) String() string { + s := rr.Hdr.String() + + strconv.Itoa(int(rr.PublicKeyAlgorithm)) + + " " + rr.Hit + + " " + rr.PublicKey + for _, d := range rr.RendezvousServers { + s += " " + sprintName(d) + } + return s +} + +func (rr *HIP) len() int { + l := rr.Hdr.len() + 4 + + len(rr.Hit)/2 + + base64.StdEncoding.DecodedLen(len(rr.PublicKey)) + for _, d := range rr.RendezvousServers { + l += len(d) + 1 + } + return l +} + +type NINFO struct { + Hdr RR_Header + ZSData []string `dns:"txt"` +} + +func (rr *NINFO) Header() *RR_Header { return &rr.Hdr } +func (rr *NINFO) copy() RR { + cp := make([]string, len(rr.ZSData), cap(rr.ZSData)) + copy(cp, rr.ZSData) + return &NINFO{*rr.Hdr.copyHeader(), cp} +} + +func (rr *NINFO) String() string { return rr.Hdr.String() + sprintTxt(rr.ZSData) } + +func (rr *NINFO) len() int { + l := rr.Hdr.len() + for _, t := range rr.ZSData { + l += len(t) + 1 + } + return l +} + +type WKS struct { + Hdr RR_Header + Address net.IP `dns:"a"` + Protocol uint8 + BitMap []uint16 `dns:"wks"` +} + +func (rr *WKS) Header() *RR_Header { return &rr.Hdr } +func (rr *WKS) len() int { return rr.Hdr.len() + net.IPv4len + 1 } + +func (rr *WKS) copy() RR { + cp := make([]uint16, len(rr.BitMap), cap(rr.BitMap)) + copy(cp, rr.BitMap) + return &WKS{*rr.Hdr.copyHeader(), copyIP(rr.Address), rr.Protocol, cp} +} + +func (rr *WKS) String() (s string) { + s = rr.Hdr.String() + if rr.Address != nil { + s += rr.Address.String() + } + // TODO(miek): missing protocol here, see /etc/protocols + for i := 0; i < len(rr.BitMap); i++ { + // should lookup the port + s += " " + strconv.Itoa(int(rr.BitMap[i])) + } + return s +} + +type NID struct { + Hdr RR_Header + Preference uint16 + NodeID uint64 +} + +func (rr *NID) Header() *RR_Header { return &rr.Hdr } +func (rr *NID) copy() RR { return &NID{*rr.Hdr.copyHeader(), rr.Preference, rr.NodeID} } +func (rr *NID) len() int { return rr.Hdr.len() + 2 + 8 } + +func (rr *NID) String() string { + s := rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + node := fmt.Sprintf("%0.16x", rr.NodeID) + s += " " + node[0:4] + ":" + node[4:8] + ":" + node[8:12] + ":" + node[12:16] + return s +} + +type L32 struct { + Hdr RR_Header + Preference uint16 + Locator32 net.IP `dns:"a"` +} + +func (rr *L32) Header() *RR_Header { return &rr.Hdr } +func (rr *L32) copy() RR { return &L32{*rr.Hdr.copyHeader(), rr.Preference, copyIP(rr.Locator32)} } +func (rr *L32) len() int { return rr.Hdr.len() + net.IPv4len } + +func (rr *L32) String() string { + if rr.Locator32 == nil { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + } + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + + " " + rr.Locator32.String() +} + +type L64 struct { + Hdr RR_Header + Preference uint16 + Locator64 uint64 +} + +func (rr *L64) Header() *RR_Header { return &rr.Hdr } +func (rr *L64) copy() RR { return &L64{*rr.Hdr.copyHeader(), rr.Preference, rr.Locator64} } +func (rr *L64) len() int { return rr.Hdr.len() + 2 + 8 } + +func (rr *L64) String() string { + s := rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + node := fmt.Sprintf("%0.16X", rr.Locator64) + s += " " + node[0:4] + ":" + node[4:8] + ":" + node[8:12] + ":" + node[12:16] + return s +} + +type LP struct { + Hdr RR_Header + Preference uint16 + Fqdn string `dns:"domain-name"` +} + +func (rr *LP) Header() *RR_Header { return &rr.Hdr } +func (rr *LP) copy() RR { return &LP{*rr.Hdr.copyHeader(), rr.Preference, rr.Fqdn} } +func (rr *LP) len() int { return rr.Hdr.len() + 2 + len(rr.Fqdn) + 1 } + +func (rr *LP) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Preference)) + " " + sprintName(rr.Fqdn) +} + +type EUI48 struct { + Hdr RR_Header + Address uint64 `dns:"uint48"` +} + +func (rr *EUI48) Header() *RR_Header { return &rr.Hdr } +func (rr *EUI48) copy() RR { return &EUI48{*rr.Hdr.copyHeader(), rr.Address} } +func (rr *EUI48) String() string { return rr.Hdr.String() + euiToString(rr.Address, 48) } +func (rr *EUI48) len() int { return rr.Hdr.len() + 6 } + +type EUI64 struct { + Hdr RR_Header + Address uint64 +} + +func (rr *EUI64) Header() *RR_Header { return &rr.Hdr } +func (rr *EUI64) copy() RR { return &EUI64{*rr.Hdr.copyHeader(), rr.Address} } +func (rr *EUI64) String() string { return rr.Hdr.String() + euiToString(rr.Address, 64) } +func (rr *EUI64) len() int { return rr.Hdr.len() + 8 } + +type CAA struct { + Hdr RR_Header + Flag uint8 + Tag string + Value string `dns:"octet"` +} + +func (rr *CAA) Header() *RR_Header { return &rr.Hdr } +func (rr *CAA) copy() RR { return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value} } +func (rr *CAA) len() int { return rr.Hdr.len() + 2 + len(rr.Tag) + len(rr.Value) } +func (rr *CAA) String() string { + return rr.Hdr.String() + strconv.Itoa(int(rr.Flag)) + " " + rr.Tag + " " + sprintTxtOctet(rr.Value) +} + +type UID struct { + Hdr RR_Header + Uid uint32 +} + +func (rr *UID) Header() *RR_Header { return &rr.Hdr } +func (rr *UID) copy() RR { return &UID{*rr.Hdr.copyHeader(), rr.Uid} } +func (rr *UID) String() string { return rr.Hdr.String() + strconv.FormatInt(int64(rr.Uid), 10) } +func (rr *UID) len() int { return rr.Hdr.len() + 4 } + +type GID struct { + Hdr RR_Header + Gid uint32 +} + +func (rr *GID) Header() *RR_Header { return &rr.Hdr } +func (rr *GID) copy() RR { return &GID{*rr.Hdr.copyHeader(), rr.Gid} } +func (rr *GID) String() string { return rr.Hdr.String() + strconv.FormatInt(int64(rr.Gid), 10) } +func (rr *GID) len() int { return rr.Hdr.len() + 4 } + +type UINFO struct { + Hdr RR_Header + Uinfo string +} + +func (rr *UINFO) Header() *RR_Header { return &rr.Hdr } +func (rr *UINFO) copy() RR { return &UINFO{*rr.Hdr.copyHeader(), rr.Uinfo} } +func (rr *UINFO) String() string { return rr.Hdr.String() + sprintTxt([]string{rr.Uinfo}) } +func (rr *UINFO) len() int { return rr.Hdr.len() + len(rr.Uinfo) + 1 } + +type EID struct { + Hdr RR_Header + Endpoint string `dns:"hex"` +} + +func (rr *EID) Header() *RR_Header { return &rr.Hdr } +func (rr *EID) copy() RR { return &EID{*rr.Hdr.copyHeader(), rr.Endpoint} } +func (rr *EID) String() string { return rr.Hdr.String() + strings.ToUpper(rr.Endpoint) } +func (rr *EID) len() int { return rr.Hdr.len() + len(rr.Endpoint)/2 } + +type NIMLOC struct { + Hdr RR_Header + Locator string `dns:"hex"` +} + +func (rr *NIMLOC) Header() *RR_Header { return &rr.Hdr } +func (rr *NIMLOC) copy() RR { return &NIMLOC{*rr.Hdr.copyHeader(), rr.Locator} } +func (rr *NIMLOC) String() string { return rr.Hdr.String() + strings.ToUpper(rr.Locator) } +func (rr *NIMLOC) len() int { return rr.Hdr.len() + len(rr.Locator)/2 } + +type OPENPGPKEY struct { + Hdr RR_Header + PublicKey string `dns:"base64"` +} + +func (rr *OPENPGPKEY) Header() *RR_Header { return &rr.Hdr } +func (rr *OPENPGPKEY) copy() RR { return &OPENPGPKEY{*rr.Hdr.copyHeader(), rr.PublicKey} } +func (rr *OPENPGPKEY) String() string { return rr.Hdr.String() + rr.PublicKey } +func (rr *OPENPGPKEY) len() int { + return rr.Hdr.len() + base64.StdEncoding.DecodedLen(len(rr.PublicKey)) +} + +// TimeToString translates the RRSIG's incep. and expir. times to the +// string representation used when printing the record. +// It takes serial arithmetic (RFC 1982) into account. +func TimeToString(t uint32) string { + mod := ((int64(t) - time.Now().Unix()) / year68) - 1 + if mod < 0 { + mod = 0 + } + ti := time.Unix(int64(t)-(mod*year68), 0).UTC() + return ti.Format("20060102150405") +} + +// StringToTime translates the RRSIG's incep. and expir. times from +// string values like "20110403154150" to an 32 bit integer. +// It takes serial arithmetic (RFC 1982) into account. +func StringToTime(s string) (uint32, error) { + t, e := time.Parse("20060102150405", s) + if e != nil { + return 0, e + } + mod := (t.Unix() / year68) - 1 + if mod < 0 { + mod = 0 + } + return uint32(t.Unix() - (mod * year68)), nil +} + +// saltToString converts a NSECX salt to uppercase and +// returns "-" when it is empty +func saltToString(s string) string { + if len(s) == 0 { + return "-" + } + return strings.ToUpper(s) +} + +func euiToString(eui uint64, bits int) (hex string) { + switch bits { + case 64: + hex = fmt.Sprintf("%16.16x", eui) + hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] + + "-" + hex[8:10] + "-" + hex[10:12] + "-" + hex[12:14] + "-" + hex[14:16] + case 48: + hex = fmt.Sprintf("%12.12x", eui) + hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] + + "-" + hex[8:10] + "-" + hex[10:12] + } + return +} + +// copyIP returns a copy of ip. +func copyIP(ip net.IP) net.IP { + p := make(net.IP, len(ip)) + copy(p, ip) + return p +} + +// Map of constructors for each RR type. +var typeToRR = map[uint16]func() RR{ + TypeA: func() RR { return new(A) }, + TypeAAAA: func() RR { return new(AAAA) }, + TypeAFSDB: func() RR { return new(AFSDB) }, + TypeCAA: func() RR { return new(CAA) }, + TypeCDS: func() RR { return new(CDS) }, + TypeCERT: func() RR { return new(CERT) }, + TypeCNAME: func() RR { return new(CNAME) }, + TypeDHCID: func() RR { return new(DHCID) }, + TypeDLV: func() RR { return new(DLV) }, + TypeDNAME: func() RR { return new(DNAME) }, + TypeKEY: func() RR { return new(KEY) }, + TypeDNSKEY: func() RR { return new(DNSKEY) }, + TypeDS: func() RR { return new(DS) }, + TypeEUI48: func() RR { return new(EUI48) }, + TypeEUI64: func() RR { return new(EUI64) }, + TypeGID: func() RR { return new(GID) }, + TypeGPOS: func() RR { return new(GPOS) }, + TypeEID: func() RR { return new(EID) }, + TypeHINFO: func() RR { return new(HINFO) }, + TypeHIP: func() RR { return new(HIP) }, + TypeIPSECKEY: func() RR { return new(IPSECKEY) }, + TypeKX: func() RR { return new(KX) }, + TypeL32: func() RR { return new(L32) }, + TypeL64: func() RR { return new(L64) }, + TypeLOC: func() RR { return new(LOC) }, + TypeLP: func() RR { return new(LP) }, + TypeMB: func() RR { return new(MB) }, + TypeMD: func() RR { return new(MD) }, + TypeMF: func() RR { return new(MF) }, + TypeMG: func() RR { return new(MG) }, + TypeMINFO: func() RR { return new(MINFO) }, + TypeMR: func() RR { return new(MR) }, + TypeMX: func() RR { return new(MX) }, + TypeNAPTR: func() RR { return new(NAPTR) }, + TypeNID: func() RR { return new(NID) }, + TypeNINFO: func() RR { return new(NINFO) }, + TypeNIMLOC: func() RR { return new(NIMLOC) }, + TypeNS: func() RR { return new(NS) }, + TypeNSAPPTR: func() RR { return new(NSAPPTR) }, + TypeNSEC3: func() RR { return new(NSEC3) }, + TypeNSEC3PARAM: func() RR { return new(NSEC3PARAM) }, + TypeNSEC: func() RR { return new(NSEC) }, + TypeOPENPGPKEY: func() RR { return new(OPENPGPKEY) }, + TypeOPT: func() RR { return new(OPT) }, + TypePTR: func() RR { return new(PTR) }, + TypeRKEY: func() RR { return new(RKEY) }, + TypeRP: func() RR { return new(RP) }, + TypePX: func() RR { return new(PX) }, + TypeSIG: func() RR { return new(SIG) }, + TypeRRSIG: func() RR { return new(RRSIG) }, + TypeRT: func() RR { return new(RT) }, + TypeSOA: func() RR { return new(SOA) }, + TypeSPF: func() RR { return new(SPF) }, + TypeSRV: func() RR { return new(SRV) }, + TypeSSHFP: func() RR { return new(SSHFP) }, + TypeTA: func() RR { return new(TA) }, + TypeTALINK: func() RR { return new(TALINK) }, + TypeTKEY: func() RR { return new(TKEY) }, + TypeTLSA: func() RR { return new(TLSA) }, + TypeTSIG: func() RR { return new(TSIG) }, + TypeTXT: func() RR { return new(TXT) }, + TypeUID: func() RR { return new(UID) }, + TypeUINFO: func() RR { return new(UINFO) }, + TypeURI: func() RR { return new(URI) }, + TypeWKS: func() RR { return new(WKS) }, + TypeX25: func() RR { return new(X25) }, +} diff --git a/vendor/github.com/miekg/dns/udp.go b/vendor/github.com/miekg/dns/udp.go new file mode 100644 index 00000000..fc865637 --- /dev/null +++ b/vendor/github.com/miekg/dns/udp.go @@ -0,0 +1,58 @@ +// +build !windows + +package dns + +import ( + "net" + "syscall" +) + +// SessionUDP holds the remote address and the associated +// out-of-band data. +type SessionUDP struct { + raddr *net.UDPAddr + context []byte +} + +// RemoteAddr returns the remote network address. +func (s *SessionUDP) RemoteAddr() net.Addr { return s.raddr } + +// setUDPSocketOptions sets the UDP socket options. +// This function is implemented on a per platform basis. See udp_*.go for more details +func setUDPSocketOptions(conn *net.UDPConn) error { + sa, err := getUDPSocketName(conn) + if err != nil { + return err + } + switch sa.(type) { + case *syscall.SockaddrInet6: + v6only, err := getUDPSocketOptions6Only(conn) + if err != nil { + return err + } + setUDPSocketOptions6(conn) + if !v6only { + setUDPSocketOptions4(conn) + } + case *syscall.SockaddrInet4: + setUDPSocketOptions4(conn) + } + return nil +} + +// ReadFromSessionUDP acts just like net.UDPConn.ReadFrom(), but returns a session object instead of a +// net.UDPAddr. +func ReadFromSessionUDP(conn *net.UDPConn, b []byte) (int, *SessionUDP, error) { + oob := make([]byte, 40) + n, oobn, _, raddr, err := conn.ReadMsgUDP(b, oob) + if err != nil { + return n, nil, err + } + return n, &SessionUDP{raddr, oob[:oobn]}, err +} + +// WriteToSessionUDP acts just like net.UDPConn.WritetTo(), but uses a *SessionUDP instead of a net.Addr. +func WriteToSessionUDP(conn *net.UDPConn, b []byte, session *SessionUDP) (int, error) { + n, _, err := conn.WriteMsgUDP(b, session.context, session.raddr) + return n, err +} diff --git a/vendor/github.com/miekg/dns/udp_linux.go b/vendor/github.com/miekg/dns/udp_linux.go new file mode 100644 index 00000000..7a107857 --- /dev/null +++ b/vendor/github.com/miekg/dns/udp_linux.go @@ -0,0 +1,63 @@ +// +build linux + +package dns + +// See: +// * http://stackoverflow.com/questions/3062205/setting-the-source-ip-for-a-udp-socket and +// * http://blog.powerdns.com/2012/10/08/on-binding-datagram-udp-sockets-to-the-any-addresses/ +// +// Why do we need this: When listening on 0.0.0.0 with UDP so kernel decides what is the outgoing +// interface, this might not always be the correct one. This code will make sure the egress +// packet's interface matched the ingress' one. + +import ( + "net" + "syscall" +) + +// setUDPSocketOptions4 prepares the v4 socket for sessions. +func setUDPSocketOptions4(conn *net.UDPConn) error { + file, err := conn.File() + if err != nil { + return err + } + if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IP, syscall.IP_PKTINFO, 1); err != nil { + return err + } + return nil +} + +// setUDPSocketOptions6 prepares the v6 socket for sessions. +func setUDPSocketOptions6(conn *net.UDPConn) error { + file, err := conn.File() + if err != nil { + return err + } + if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1); err != nil { + return err + } + return nil +} + +// getUDPSocketOption6Only return true if the socket is v6 only and false when it is v4/v6 combined +// (dualstack). +func getUDPSocketOptions6Only(conn *net.UDPConn) (bool, error) { + file, err := conn.File() + if err != nil { + return false, err + } + // dual stack. See http://stackoverflow.com/questions/1618240/how-to-support-both-ipv4-and-ipv6-connections + v6only, err := syscall.GetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY) + if err != nil { + return false, err + } + return v6only == 1, nil +} + +func getUDPSocketName(conn *net.UDPConn) (syscall.Sockaddr, error) { + file, err := conn.File() + if err != nil { + return nil, err + } + return syscall.Getsockname(int(file.Fd())) +} diff --git a/vendor/github.com/miekg/dns/udp_other.go b/vendor/github.com/miekg/dns/udp_other.go new file mode 100644 index 00000000..c38dd3e7 --- /dev/null +++ b/vendor/github.com/miekg/dns/udp_other.go @@ -0,0 +1,17 @@ +// +build !linux + +package dns + +import ( + "net" + "syscall" +) + +// These do nothing. See udp_linux.go for an example of how to implement this. + +// We tried to adhire to some kind of naming scheme. + +func setUDPSocketOptions4(conn *net.UDPConn) error { return nil } +func setUDPSocketOptions6(conn *net.UDPConn) error { return nil } +func getUDPSocketOptions6Only(conn *net.UDPConn) (bool, error) { return false, nil } +func getUDPSocketName(conn *net.UDPConn) (syscall.Sockaddr, error) { return nil, nil } diff --git a/vendor/github.com/miekg/dns/udp_windows.go b/vendor/github.com/miekg/dns/udp_windows.go new file mode 100644 index 00000000..2ce4b330 --- /dev/null +++ b/vendor/github.com/miekg/dns/udp_windows.go @@ -0,0 +1,34 @@ +// +build windows + +package dns + +import "net" + +type SessionUDP struct { + raddr *net.UDPAddr +} + +// ReadFromSessionUDP acts just like net.UDPConn.ReadFrom(), but returns a session object instead of a +// net.UDPAddr. +func ReadFromSessionUDP(conn *net.UDPConn, b []byte) (int, *SessionUDP, error) { + n, raddr, err := conn.ReadFrom(b) + if err != nil { + return n, nil, err + } + session := &SessionUDP{raddr.(*net.UDPAddr)} + return n, session, err +} + +// WriteToSessionUDP acts just like net.UDPConn.WritetTo(), but uses a *SessionUDP instead of a net.Addr. +func WriteToSessionUDP(conn *net.UDPConn, b []byte, session *SessionUDP) (int, error) { + n, err := conn.WriteTo(b, session.raddr) + return n, err +} + +func (s *SessionUDP) RemoteAddr() net.Addr { return s.raddr } + +// setUDPSocketOptions sets the UDP socket options. +// This function is implemented on a per platform basis. See udp_*.go for more details +func setUDPSocketOptions(conn *net.UDPConn) error { + return nil +} diff --git a/vendor/github.com/miekg/dns/update.go b/vendor/github.com/miekg/dns/update.go new file mode 100644 index 00000000..3539987c --- /dev/null +++ b/vendor/github.com/miekg/dns/update.go @@ -0,0 +1,94 @@ +package dns + +// NameUsed sets the RRs in the prereq section to +// "Name is in use" RRs. RFC 2136 section 2.4.4. +func (u *Msg) NameUsed(rr []RR) { + u.Answer = make([]RR, len(rr)) + for i, r := range rr { + u.Answer[i] = &ANY{Hdr: RR_Header{Name: r.Header().Name, Ttl: 0, Rrtype: TypeANY, Class: ClassANY}} + } +} + +// NameNotUsed sets the RRs in the prereq section to +// "Name is in not use" RRs. RFC 2136 section 2.4.5. +func (u *Msg) NameNotUsed(rr []RR) { + u.Answer = make([]RR, len(rr)) + for i, r := range rr { + u.Answer[i] = &ANY{Hdr: RR_Header{Name: r.Header().Name, Ttl: 0, Rrtype: TypeANY, Class: ClassNONE}} + } +} + +// Used sets the RRs in the prereq section to +// "RRset exists (value dependent -- with rdata)" RRs. RFC 2136 section 2.4.2. +func (u *Msg) Used(rr []RR) { + if len(u.Question) == 0 { + panic("dns: empty question section") + } + u.Answer = make([]RR, len(rr)) + for i, r := range rr { + u.Answer[i] = r + u.Answer[i].Header().Class = u.Question[0].Qclass + } +} + +// RRsetUsed sets the RRs in the prereq section to +// "RRset exists (value independent -- no rdata)" RRs. RFC 2136 section 2.4.1. +func (u *Msg) RRsetUsed(rr []RR) { + u.Answer = make([]RR, len(rr)) + for i, r := range rr { + u.Answer[i] = r + u.Answer[i].Header().Class = ClassANY + u.Answer[i].Header().Ttl = 0 + u.Answer[i].Header().Rdlength = 0 + } +} + +// RRsetNotUsed sets the RRs in the prereq section to +// "RRset does not exist" RRs. RFC 2136 section 2.4.3. +func (u *Msg) RRsetNotUsed(rr []RR) { + u.Answer = make([]RR, len(rr)) + for i, r := range rr { + u.Answer[i] = r + u.Answer[i].Header().Class = ClassNONE + u.Answer[i].Header().Rdlength = 0 + u.Answer[i].Header().Ttl = 0 + } +} + +// Insert creates a dynamic update packet that adds an complete RRset, see RFC 2136 section 2.5.1. +func (u *Msg) Insert(rr []RR) { + if len(u.Question) == 0 { + panic("dns: empty question section") + } + u.Ns = make([]RR, len(rr)) + for i, r := range rr { + u.Ns[i] = r + u.Ns[i].Header().Class = u.Question[0].Qclass + } +} + +// RemoveRRset creates a dynamic update packet that deletes an RRset, see RFC 2136 section 2.5.2. +func (u *Msg) RemoveRRset(rr []RR) { + u.Ns = make([]RR, len(rr)) + for i, r := range rr { + u.Ns[i] = &ANY{Hdr: RR_Header{Name: r.Header().Name, Ttl: 0, Rrtype: r.Header().Rrtype, Class: ClassANY}} + } +} + +// RemoveName creates a dynamic update packet that deletes all RRsets of a name, see RFC 2136 section 2.5.3 +func (u *Msg) RemoveName(rr []RR) { + u.Ns = make([]RR, len(rr)) + for i, r := range rr { + u.Ns[i] = &ANY{Hdr: RR_Header{Name: r.Header().Name, Ttl: 0, Rrtype: TypeANY, Class: ClassANY}} + } +} + +// Remove creates a dynamic update packet deletes RR from the RRSset, see RFC 2136 section 2.5.4 +func (u *Msg) Remove(rr []RR) { + u.Ns = make([]RR, len(rr)) + for i, r := range rr { + u.Ns[i] = r + u.Ns[i].Header().Class = ClassNONE + u.Ns[i].Header().Ttl = 0 + } +} diff --git a/vendor/github.com/miekg/dns/xfr.go b/vendor/github.com/miekg/dns/xfr.go new file mode 100644 index 00000000..7d3a67b8 --- /dev/null +++ b/vendor/github.com/miekg/dns/xfr.go @@ -0,0 +1,244 @@ +package dns + +import ( + "time" +) + +// Envelope is used when doing a zone transfer with a remote server. +type Envelope struct { + RR []RR // The set of RRs in the answer section of the xfr reply message. + Error error // If something went wrong, this contains the error. +} + +// A Transfer defines parameters that are used during a zone transfer. +type Transfer struct { + *Conn + DialTimeout time.Duration // net.DialTimeout, defaults to 2 seconds + ReadTimeout time.Duration // net.Conn.SetReadTimeout value for connections, defaults to 2 seconds + WriteTimeout time.Duration // net.Conn.SetWriteTimeout value for connections, defaults to 2 seconds + TsigSecret map[string]string // Secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be fully qualified + tsigTimersOnly bool +} + +// Think we need to away to stop the transfer + +// In performs an incoming transfer with the server in a. +// If you would like to set the source IP, or some other attribute +// of a Dialer for a Transfer, you can do so by specifying the attributes +// in the Transfer.Conn: +// +// d := net.Dialer{LocalAddr: transfer_source} +// con, err := d.Dial("tcp", master) +// dnscon := &dns.Conn{Conn:con} +// transfer = &dns.Transfer{Conn: dnscon} +// channel, err := transfer.In(message, master) +// +func (t *Transfer) In(q *Msg, a string) (env chan *Envelope, err error) { + timeout := dnsTimeout + if t.DialTimeout != 0 { + timeout = t.DialTimeout + } + if t.Conn == nil { + t.Conn, err = DialTimeout("tcp", a, timeout) + if err != nil { + return nil, err + } + } + if err := t.WriteMsg(q); err != nil { + return nil, err + } + env = make(chan *Envelope) + go func() { + if q.Question[0].Qtype == TypeAXFR { + go t.inAxfr(q.Id, env) + return + } + if q.Question[0].Qtype == TypeIXFR { + go t.inIxfr(q.Id, env) + return + } + }() + return env, nil +} + +func (t *Transfer) inAxfr(id uint16, c chan *Envelope) { + first := true + defer t.Close() + defer close(c) + timeout := dnsTimeout + if t.ReadTimeout != 0 { + timeout = t.ReadTimeout + } + for { + t.Conn.SetReadDeadline(time.Now().Add(timeout)) + in, err := t.ReadMsg() + if err != nil { + c <- &Envelope{nil, err} + return + } + if id != in.Id { + c <- &Envelope{in.Answer, ErrId} + return + } + if first { + if !isSOAFirst(in) { + c <- &Envelope{in.Answer, ErrSoa} + return + } + first = !first + // only one answer that is SOA, receive more + if len(in.Answer) == 1 { + t.tsigTimersOnly = true + c <- &Envelope{in.Answer, nil} + continue + } + } + + if !first { + t.tsigTimersOnly = true // Subsequent envelopes use this. + if isSOALast(in) { + c <- &Envelope{in.Answer, nil} + return + } + c <- &Envelope{in.Answer, nil} + } + } +} + +func (t *Transfer) inIxfr(id uint16, c chan *Envelope) { + serial := uint32(0) // The first serial seen is the current server serial + first := true + defer t.Close() + defer close(c) + timeout := dnsTimeout + if t.ReadTimeout != 0 { + timeout = t.ReadTimeout + } + for { + t.SetReadDeadline(time.Now().Add(timeout)) + in, err := t.ReadMsg() + if err != nil { + c <- &Envelope{nil, err} + return + } + if id != in.Id { + c <- &Envelope{in.Answer, ErrId} + return + } + if first { + // A single SOA RR signals "no changes" + if len(in.Answer) == 1 && isSOAFirst(in) { + c <- &Envelope{in.Answer, nil} + return + } + + // Check if the returned answer is ok + if !isSOAFirst(in) { + c <- &Envelope{in.Answer, ErrSoa} + return + } + // This serial is important + serial = in.Answer[0].(*SOA).Serial + first = !first + } + + // Now we need to check each message for SOA records, to see what we need to do + if !first { + t.tsigTimersOnly = true + // If the last record in the IXFR contains the servers' SOA, we should quit + if v, ok := in.Answer[len(in.Answer)-1].(*SOA); ok { + if v.Serial == serial { + c <- &Envelope{in.Answer, nil} + return + } + } + c <- &Envelope{in.Answer, nil} + } + } +} + +// Out performs an outgoing transfer with the client connecting in w. +// Basic use pattern: +// +// ch := make(chan *dns.Envelope) +// tr := new(dns.Transfer) +// tr.Out(w, r, ch) +// c <- &dns.Envelope{RR: []dns.RR{soa, rr1, rr2, rr3, soa}} +// close(ch) +// w.Hijack() +// // w.Close() // Client closes connection +// +// The server is responsible for sending the correct sequence of RRs through the +// channel ch. +func (t *Transfer) Out(w ResponseWriter, q *Msg, ch chan *Envelope) error { + for x := range ch { + r := new(Msg) + // Compress? + r.SetReply(q) + r.Authoritative = true + // assume it fits TODO(miek): fix + r.Answer = append(r.Answer, x.RR...) + if err := w.WriteMsg(r); err != nil { + return err + } + } + w.TsigTimersOnly(true) + return nil +} + +// ReadMsg reads a message from the transfer connection t. +func (t *Transfer) ReadMsg() (*Msg, error) { + m := new(Msg) + p := make([]byte, MaxMsgSize) + n, err := t.Read(p) + if err != nil && n == 0 { + return nil, err + } + p = p[:n] + if err := m.Unpack(p); err != nil { + return nil, err + } + if ts := m.IsTsig(); ts != nil && t.TsigSecret != nil { + if _, ok := t.TsigSecret[ts.Hdr.Name]; !ok { + return m, ErrSecret + } + // Need to work on the original message p, as that was used to calculate the tsig. + err = TsigVerify(p, t.TsigSecret[ts.Hdr.Name], t.tsigRequestMAC, t.tsigTimersOnly) + t.tsigRequestMAC = ts.MAC + } + return m, err +} + +// WriteMsg writes a message through the transfer connection t. +func (t *Transfer) WriteMsg(m *Msg) (err error) { + var out []byte + if ts := m.IsTsig(); ts != nil && t.TsigSecret != nil { + if _, ok := t.TsigSecret[ts.Hdr.Name]; !ok { + return ErrSecret + } + out, t.tsigRequestMAC, err = TsigGenerate(m, t.TsigSecret[ts.Hdr.Name], t.tsigRequestMAC, t.tsigTimersOnly) + } else { + out, err = m.Pack() + } + if err != nil { + return err + } + if _, err = t.Write(out); err != nil { + return err + } + return nil +} + +func isSOAFirst(in *Msg) bool { + if len(in.Answer) > 0 { + return in.Answer[0].Header().Rrtype == TypeSOA + } + return false +} + +func isSOALast(in *Msg) bool { + if len(in.Answer) > 0 { + return in.Answer[len(in.Answer)-1].Header().Rrtype == TypeSOA + } + return false +} diff --git a/vendor/github.com/miekg/dns/zgenerate.go b/vendor/github.com/miekg/dns/zgenerate.go new file mode 100644 index 00000000..c506e962 --- /dev/null +++ b/vendor/github.com/miekg/dns/zgenerate.go @@ -0,0 +1,158 @@ +package dns + +import ( + "bytes" + "fmt" + "strconv" + "strings" +) + +// Parse the $GENERATE statement as used in BIND9 zones. +// See http://www.zytrax.com/books/dns/ch8/generate.html for instance. +// We are called after '$GENERATE '. After which we expect: +// * the range (12-24/2) +// * lhs (ownername) +// * [[ttl][class]] +// * type +// * rhs (rdata) +// But we are lazy here, only the range is parsed *all* occurences +// of $ after that are interpreted. +// Any error are returned as a string value, the empty string signals +// "no error". +func generate(l lex, c chan lex, t chan *Token, o string) string { + step := 1 + if i := strings.IndexAny(l.token, "/"); i != -1 { + if i+1 == len(l.token) { + return "bad step in $GENERATE range" + } + if s, e := strconv.Atoi(l.token[i+1:]); e == nil { + if s < 0 { + return "bad step in $GENERATE range" + } + step = s + } else { + return "bad step in $GENERATE range" + } + l.token = l.token[:i] + } + sx := strings.SplitN(l.token, "-", 2) + if len(sx) != 2 { + return "bad start-stop in $GENERATE range" + } + start, err := strconv.Atoi(sx[0]) + if err != nil { + return "bad start in $GENERATE range" + } + end, err := strconv.Atoi(sx[1]) + if err != nil { + return "bad stop in $GENERATE range" + } + if end < 0 || start < 0 || end < start { + return "bad range in $GENERATE range" + } + + <-c // _BLANK + // Create a complete new string, which we then parse again. + s := "" +BuildRR: + l = <-c + if l.value != zNewline && l.value != zEOF { + s += l.token + goto BuildRR + } + for i := start; i <= end; i += step { + var ( + escape bool + dom bytes.Buffer + mod string + err string + offset int + ) + + for j := 0; j < len(s); j++ { // No 'range' because we need to jump around + switch s[j] { + case '\\': + if escape { + dom.WriteByte('\\') + escape = false + continue + } + escape = true + case '$': + mod = "%d" + offset = 0 + if escape { + dom.WriteByte('$') + escape = false + continue + } + escape = false + if j+1 >= len(s) { // End of the string + dom.WriteString(fmt.Sprintf(mod, i+offset)) + continue + } else { + if s[j+1] == '$' { + dom.WriteByte('$') + j++ + continue + } + } + // Search for { and } + if s[j+1] == '{' { // Modifier block + sep := strings.Index(s[j+2:], "}") + if sep == -1 { + return "bad modifier in $GENERATE" + } + mod, offset, err = modToPrintf(s[j+2 : j+2+sep]) + if err != "" { + return err + } + j += 2 + sep // Jump to it + } + dom.WriteString(fmt.Sprintf(mod, i+offset)) + default: + if escape { // Pretty useless here + escape = false + continue + } + dom.WriteByte(s[j]) + } + } + // Re-parse the RR and send it on the current channel t + rx, e := NewRR("$ORIGIN " + o + "\n" + dom.String()) + if e != nil { + return e.(*ParseError).err + } + t <- &Token{RR: rx} + // Its more efficient to first built the rrlist and then parse it in + // one go! But is this a problem? + } + return "" +} + +// Convert a $GENERATE modifier 0,0,d to something Printf can deal with. +func modToPrintf(s string) (string, int, string) { + xs := strings.SplitN(s, ",", 3) + if len(xs) != 3 { + return "", 0, "bad modifier in $GENERATE" + } + // xs[0] is offset, xs[1] is width, xs[2] is base + if xs[2] != "o" && xs[2] != "d" && xs[2] != "x" && xs[2] != "X" { + return "", 0, "bad base in $GENERATE" + } + offset, err := strconv.Atoi(xs[0]) + if err != nil || offset > 255 { + return "", 0, "bad offset in $GENERATE" + } + width, err := strconv.Atoi(xs[1]) + if err != nil || width > 255 { + return "", offset, "bad width in $GENERATE" + } + switch { + case width < 0: + return "", offset, "bad width in $GENERATE" + case width == 0: + return "%" + xs[1] + xs[2], offset, "" + } + return "%0" + xs[1] + xs[2], offset, "" +} diff --git a/vendor/github.com/miekg/dns/zscan.go b/vendor/github.com/miekg/dns/zscan.go new file mode 100644 index 00000000..40ba35c3 --- /dev/null +++ b/vendor/github.com/miekg/dns/zscan.go @@ -0,0 +1,972 @@ +package dns + +import ( + "io" + "log" + "os" + "strconv" + "strings" +) + +type debugging bool + +const debug debugging = false + +func (d debugging) Printf(format string, args ...interface{}) { + if d { + log.Printf(format, args...) + } +} + +const maxTok = 2048 // Largest token we can return. +const maxUint16 = 1<<16 - 1 + +// Tokinize a RFC 1035 zone file. The tokenizer will normalize it: +// * Add ownernames if they are left blank; +// * Suppress sequences of spaces; +// * Make each RR fit on one line (_NEWLINE is send as last) +// * Handle comments: ; +// * Handle braces - anywhere. +const ( + // Zonefile + zEOF = iota + zString + zBlank + zQuote + zNewline + zRrtpe + zOwner + zClass + zDirOrigin // $ORIGIN + zDirTtl // $TTL + zDirInclude // $INCLUDE + zDirGenerate // $GENERATE + + // Privatekey file + zValue + zKey + + zExpectOwnerDir // Ownername + zExpectOwnerBl // Whitespace after the ownername + zExpectAny // Expect rrtype, ttl or class + zExpectAnyNoClass // Expect rrtype or ttl + zExpectAnyNoClassBl // The whitespace after _EXPECT_ANY_NOCLASS + zExpectAnyNoTtl // Expect rrtype or class + zExpectAnyNoTtlBl // Whitespace after _EXPECT_ANY_NOTTL + zExpectRrtype // Expect rrtype + zExpectRrtypeBl // Whitespace BEFORE rrtype + zExpectRdata // The first element of the rdata + zExpectDirTtlBl // Space after directive $TTL + zExpectDirTtl // Directive $TTL + zExpectDirOriginBl // Space after directive $ORIGIN + zExpectDirOrigin // Directive $ORIGIN + zExpectDirIncludeBl // Space after directive $INCLUDE + zExpectDirInclude // Directive $INCLUDE + zExpectDirGenerate // Directive $GENERATE + zExpectDirGenerateBl // Space after directive $GENERATE +) + +// ParseError is a parsing error. It contains the parse error and the location in the io.Reader +// where the error occured. +type ParseError struct { + file string + err string + lex lex +} + +func (e *ParseError) Error() (s string) { + if e.file != "" { + s = e.file + ": " + } + s += "dns: " + e.err + ": " + strconv.QuoteToASCII(e.lex.token) + " at line: " + + strconv.Itoa(e.lex.line) + ":" + strconv.Itoa(e.lex.column) + return +} + +type lex struct { + token string // text of the token + tokenUpper string // uppercase text of the token + length int // lenght of the token + err bool // when true, token text has lexer error + value uint8 // value: zString, _BLANK, etc. + line int // line in the file + column int // column in the file + torc uint16 // type or class as parsed in the lexer, we only need to look this up in the grammar + comment string // any comment text seen +} + +// Token holds the token that are returned when a zone file is parsed. +type Token struct { + // The scanned resource record when error is not nil. + RR + // When an error occured, this has the error specifics. + Error *ParseError + // A potential comment positioned after the RR and on the same line. + Comment string +} + +// NewRR reads the RR contained in the string s. Only the first RR is +// returned. If s contains no RR, return nil with no error. The class +// defaults to IN and TTL defaults to 3600. The full zone file syntax +// like $TTL, $ORIGIN, etc. is supported. All fields of the returned +// RR are set, except RR.Header().Rdlength which is set to 0. +func NewRR(s string) (RR, error) { + if len(s) > 0 && s[len(s)-1] != '\n' { // We need a closing newline + return ReadRR(strings.NewReader(s+"\n"), "") + } + return ReadRR(strings.NewReader(s), "") +} + +// ReadRR reads the RR contained in q. +// See NewRR for more documentation. +func ReadRR(q io.Reader, filename string) (RR, error) { + r := <-parseZoneHelper(q, ".", filename, 1) + if r == nil { + return nil, nil + } + + if r.Error != nil { + return nil, r.Error + } + return r.RR, nil +} + +// ParseZone reads a RFC 1035 style zonefile from r. It returns *Tokens on the +// returned channel, which consist out the parsed RR, a potential comment or an error. +// If there is an error the RR is nil. The string file is only used +// in error reporting. The string origin is used as the initial origin, as +// if the file would start with: $ORIGIN origin . +// The directives $INCLUDE, $ORIGIN, $TTL and $GENERATE are supported. +// The channel t is closed by ParseZone when the end of r is reached. +// +// Basic usage pattern when reading from a string (z) containing the +// zone data: +// +// for x := range dns.ParseZone(strings.NewReader(z), "", "") { +// if x.Error != nil { +// // Do something with x.RR +// } +// } +// +// Comments specified after an RR (and on the same line!) are returned too: +// +// foo. IN A 10.0.0.1 ; this is a comment +// +// The text "; this is comment" is returned in Token.Comment. Comments inside the +// RR are discarded. Comments on a line by themselves are discarded too. +func ParseZone(r io.Reader, origin, file string) chan *Token { + return parseZoneHelper(r, origin, file, 10000) +} + +func parseZoneHelper(r io.Reader, origin, file string, chansize int) chan *Token { + t := make(chan *Token, chansize) + go parseZone(r, origin, file, t, 0) + return t +} + +func parseZone(r io.Reader, origin, f string, t chan *Token, include int) { + defer func() { + if include == 0 { + close(t) + } + }() + s := scanInit(r) + c := make(chan lex) + // Start the lexer + go zlexer(s, c) + // 6 possible beginnings of a line, _ is a space + // 0. zRRTYPE -> all omitted until the rrtype + // 1. zOwner _ zRrtype -> class/ttl omitted + // 2. zOwner _ zString _ zRrtype -> class omitted + // 3. zOwner _ zString _ zClass _ zRrtype -> ttl/class + // 4. zOwner _ zClass _ zRrtype -> ttl omitted + // 5. zOwner _ zClass _ zString _ zRrtype -> class/ttl (reversed) + // After detecting these, we know the zRrtype so we can jump to functions + // handling the rdata for each of these types. + + if origin == "" { + origin = "." + } + origin = Fqdn(origin) + if _, ok := IsDomainName(origin); !ok { + t <- &Token{Error: &ParseError{f, "bad initial origin name", lex{}}} + return + } + + st := zExpectOwnerDir // initial state + var h RR_Header + var defttl uint32 = defaultTtl + var prevName string + for l := range c { + // Lexer spotted an error already + if l.err == true { + t <- &Token{Error: &ParseError{f, l.token, l}} + return + + } + switch st { + case zExpectOwnerDir: + // We can also expect a directive, like $TTL or $ORIGIN + h.Ttl = defttl + h.Class = ClassINET + switch l.value { + case zNewline: + st = zExpectOwnerDir + case zOwner: + h.Name = l.token + if l.token[0] == '@' { + h.Name = origin + prevName = h.Name + st = zExpectOwnerBl + break + } + if h.Name[l.length-1] != '.' { + h.Name = appendOrigin(h.Name, origin) + } + _, ok := IsDomainName(l.token) + if !ok { + t <- &Token{Error: &ParseError{f, "bad owner name", l}} + return + } + prevName = h.Name + st = zExpectOwnerBl + case zDirTtl: + st = zExpectDirTtlBl + case zDirOrigin: + st = zExpectDirOriginBl + case zDirInclude: + st = zExpectDirIncludeBl + case zDirGenerate: + st = zExpectDirGenerateBl + case zRrtpe: + h.Name = prevName + h.Rrtype = l.torc + st = zExpectRdata + case zClass: + h.Name = prevName + h.Class = l.torc + st = zExpectAnyNoClassBl + case zBlank: + // Discard, can happen when there is nothing on the + // line except the RR type + case zString: + ttl, ok := stringToTtl(l.token) + if !ok { + t <- &Token{Error: &ParseError{f, "not a TTL", l}} + return + } + h.Ttl = ttl + // Don't about the defttl, we should take the $TTL value + // defttl = ttl + st = zExpectAnyNoTtlBl + + default: + t <- &Token{Error: &ParseError{f, "syntax error at beginning", l}} + return + } + case zExpectDirIncludeBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank after $INCLUDE-directive", l}} + return + } + st = zExpectDirInclude + case zExpectDirInclude: + if l.value != zString { + t <- &Token{Error: &ParseError{f, "expecting $INCLUDE value, not this...", l}} + return + } + neworigin := origin // There may be optionally a new origin set after the filename, if not use current one + l := <-c + switch l.value { + case zBlank: + l := <-c + if l.value == zString { + if _, ok := IsDomainName(l.token); !ok || l.length == 0 || l.err { + t <- &Token{Error: &ParseError{f, "bad origin name", l}} + return + } + // a new origin is specified. + if l.token[l.length-1] != '.' { + if origin != "." { // Prevent .. endings + neworigin = l.token + "." + origin + } else { + neworigin = l.token + origin + } + } else { + neworigin = l.token + } + } + case zNewline, zEOF: + // Ok + default: + t <- &Token{Error: &ParseError{f, "garbage after $INCLUDE", l}} + return + } + // Start with the new file + r1, e1 := os.Open(l.token) + if e1 != nil { + t <- &Token{Error: &ParseError{f, "failed to open `" + l.token + "'", l}} + return + } + if include+1 > 7 { + t <- &Token{Error: &ParseError{f, "too deeply nested $INCLUDE", l}} + return + } + parseZone(r1, l.token, neworigin, t, include+1) + st = zExpectOwnerDir + case zExpectDirTtlBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank after $TTL-directive", l}} + return + } + st = zExpectDirTtl + case zExpectDirTtl: + if l.value != zString { + t <- &Token{Error: &ParseError{f, "expecting $TTL value, not this...", l}} + return + } + if e, _ := slurpRemainder(c, f); e != nil { + t <- &Token{Error: e} + return + } + ttl, ok := stringToTtl(l.token) + if !ok { + t <- &Token{Error: &ParseError{f, "expecting $TTL value, not this...", l}} + return + } + defttl = ttl + st = zExpectOwnerDir + case zExpectDirOriginBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank after $ORIGIN-directive", l}} + return + } + st = zExpectDirOrigin + case zExpectDirOrigin: + if l.value != zString { + t <- &Token{Error: &ParseError{f, "expecting $ORIGIN value, not this...", l}} + return + } + if e, _ := slurpRemainder(c, f); e != nil { + t <- &Token{Error: e} + } + if _, ok := IsDomainName(l.token); !ok { + t <- &Token{Error: &ParseError{f, "bad origin name", l}} + return + } + if l.token[l.length-1] != '.' { + if origin != "." { // Prevent .. endings + origin = l.token + "." + origin + } else { + origin = l.token + origin + } + } else { + origin = l.token + } + st = zExpectOwnerDir + case zExpectDirGenerateBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank after $GENERATE-directive", l}} + return + } + st = zExpectDirGenerate + case zExpectDirGenerate: + if l.value != zString { + t <- &Token{Error: &ParseError{f, "expecting $GENERATE value, not this...", l}} + return + } + if e := generate(l, c, t, origin); e != "" { + t <- &Token{Error: &ParseError{f, e, l}} + return + } + st = zExpectOwnerDir + case zExpectOwnerBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank after owner", l}} + return + } + st = zExpectAny + case zExpectAny: + switch l.value { + case zRrtpe: + h.Rrtype = l.torc + st = zExpectRdata + case zClass: + h.Class = l.torc + st = zExpectAnyNoClassBl + case zString: + ttl, ok := stringToTtl(l.token) + if !ok { + t <- &Token{Error: &ParseError{f, "not a TTL", l}} + return + } + h.Ttl = ttl + // defttl = ttl // don't set the defttl here + st = zExpectAnyNoTtlBl + default: + t <- &Token{Error: &ParseError{f, "expecting RR type, TTL or class, not this...", l}} + return + } + case zExpectAnyNoClassBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank before class", l}} + return + } + st = zExpectAnyNoClass + case zExpectAnyNoTtlBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank before TTL", l}} + return + } + st = zExpectAnyNoTtl + case zExpectAnyNoTtl: + switch l.value { + case zClass: + h.Class = l.torc + st = zExpectRrtypeBl + case zRrtpe: + h.Rrtype = l.torc + st = zExpectRdata + default: + t <- &Token{Error: &ParseError{f, "expecting RR type or class, not this...", l}} + return + } + case zExpectAnyNoClass: + switch l.value { + case zString: + ttl, ok := stringToTtl(l.token) + if !ok { + t <- &Token{Error: &ParseError{f, "not a TTL", l}} + return + } + h.Ttl = ttl + // defttl = ttl // don't set the def ttl anymore + st = zExpectRrtypeBl + case zRrtpe: + h.Rrtype = l.torc + st = zExpectRdata + default: + t <- &Token{Error: &ParseError{f, "expecting RR type or TTL, not this...", l}} + return + } + case zExpectRrtypeBl: + if l.value != zBlank { + t <- &Token{Error: &ParseError{f, "no blank before RR type", l}} + return + } + st = zExpectRrtype + case zExpectRrtype: + if l.value != zRrtpe { + t <- &Token{Error: &ParseError{f, "unknown RR type", l}} + return + } + h.Rrtype = l.torc + st = zExpectRdata + case zExpectRdata: + r, e, c1 := setRR(h, c, origin, f) + if e != nil { + // If e.lex is nil than we have encounter a unknown RR type + // in that case we substitute our current lex token + if e.lex.token == "" && e.lex.value == 0 { + e.lex = l // Uh, dirty + } + t <- &Token{Error: e} + return + } + t <- &Token{RR: r, Comment: c1} + st = zExpectOwnerDir + } + } + // If we get here, we and the h.Rrtype is still zero, we haven't parsed anything, this + // is not an error, because an empty zone file is still a zone file. +} + +// zlexer scans the sourcefile and returns tokens on the channel c. +func zlexer(s *scan, c chan lex) { + var l lex + str := make([]byte, maxTok) // Should be enough for any token + stri := 0 // Offset in str (0 means empty) + com := make([]byte, maxTok) // Hold comment text + comi := 0 + quote := false + escape := false + space := false + commt := false + rrtype := false + owner := true + brace := 0 + x, err := s.tokenText() + defer close(c) + for err == nil { + l.column = s.position.Column + l.line = s.position.Line + if stri >= maxTok { + l.token = "token length insufficient for parsing" + l.err = true + debug.Printf("[%+v]", l.token) + c <- l + return + } + if comi >= maxTok { + l.token = "comment length insufficient for parsing" + l.err = true + debug.Printf("[%+v]", l.token) + c <- l + return + } + + switch x { + case ' ', '\t': + if escape { + escape = false + str[stri] = x + stri++ + break + } + if quote { + // Inside quotes this is legal + str[stri] = x + stri++ + break + } + if commt { + com[comi] = x + comi++ + break + } + if stri == 0 { + // Space directly in the beginning, handled in the grammar + } else if owner { + // If we have a string and its the first, make it an owner + l.value = zOwner + l.token = string(str[:stri]) + l.tokenUpper = strings.ToUpper(l.token) + l.length = stri + // escape $... start with a \ not a $, so this will work + switch l.tokenUpper { + case "$TTL": + l.value = zDirTtl + case "$ORIGIN": + l.value = zDirOrigin + case "$INCLUDE": + l.value = zDirInclude + case "$GENERATE": + l.value = zDirGenerate + } + debug.Printf("[7 %+v]", l.token) + c <- l + } else { + l.value = zString + l.token = string(str[:stri]) + l.tokenUpper = strings.ToUpper(l.token) + l.length = stri + if !rrtype { + if t, ok := StringToType[l.tokenUpper]; ok { + l.value = zRrtpe + l.torc = t + rrtype = true + } else { + if strings.HasPrefix(l.tokenUpper, "TYPE") { + t, ok := typeToInt(l.token) + if !ok { + l.token = "unknown RR type" + l.err = true + c <- l + return + } + l.value = zRrtpe + l.torc = t + } + } + if t, ok := StringToClass[l.tokenUpper]; ok { + l.value = zClass + l.torc = t + } else { + if strings.HasPrefix(l.tokenUpper, "CLASS") { + t, ok := classToInt(l.token) + if !ok { + l.token = "unknown class" + l.err = true + c <- l + return + } + l.value = zClass + l.torc = t + } + } + } + debug.Printf("[6 %+v]", l.token) + c <- l + } + stri = 0 + // I reverse space stuff here + if !space && !commt { + l.value = zBlank + l.token = " " + l.length = 1 + debug.Printf("[5 %+v]", l.token) + c <- l + } + owner = false + space = true + case ';': + if escape { + escape = false + str[stri] = x + stri++ + break + } + if quote { + // Inside quotes this is legal + str[stri] = x + stri++ + break + } + if stri > 0 { + l.value = zString + l.token = string(str[:stri]) + l.length = stri + debug.Printf("[4 %+v]", l.token) + c <- l + stri = 0 + } + commt = true + com[comi] = ';' + comi++ + case '\r': + escape = false + if quote { + str[stri] = x + stri++ + break + } + // discard if outside of quotes + case '\n': + escape = false + // Escaped newline + if quote { + str[stri] = x + stri++ + break + } + // inside quotes this is legal + if commt { + // Reset a comment + commt = false + rrtype = false + stri = 0 + // If not in a brace this ends the comment AND the RR + if brace == 0 { + owner = true + owner = true + l.value = zNewline + l.token = "\n" + l.length = 1 + l.comment = string(com[:comi]) + debug.Printf("[3 %+v %+v]", l.token, l.comment) + c <- l + l.comment = "" + comi = 0 + break + } + com[comi] = ' ' // convert newline to space + comi++ + break + } + + if brace == 0 { + // If there is previous text, we should output it here + if stri != 0 { + l.value = zString + l.token = string(str[:stri]) + l.tokenUpper = strings.ToUpper(l.token) + + l.length = stri + if !rrtype { + if t, ok := StringToType[l.tokenUpper]; ok { + l.value = zRrtpe + l.torc = t + rrtype = true + } + } + debug.Printf("[2 %+v]", l.token) + c <- l + } + l.value = zNewline + l.token = "\n" + l.length = 1 + debug.Printf("[1 %+v]", l.token) + c <- l + stri = 0 + commt = false + rrtype = false + owner = true + comi = 0 + } + case '\\': + // comments do not get escaped chars, everything is copied + if commt { + com[comi] = x + comi++ + break + } + // something already escaped must be in string + if escape { + str[stri] = x + stri++ + escape = false + break + } + // something escaped outside of string gets added to string + str[stri] = x + stri++ + escape = true + case '"': + if commt { + com[comi] = x + comi++ + break + } + if escape { + str[stri] = x + stri++ + escape = false + break + } + space = false + // send previous gathered text and the quote + if stri != 0 { + l.value = zString + l.token = string(str[:stri]) + l.length = stri + + debug.Printf("[%+v]", l.token) + c <- l + stri = 0 + } + + // send quote itself as separate token + l.value = zQuote + l.token = "\"" + l.length = 1 + c <- l + quote = !quote + case '(', ')': + if commt { + com[comi] = x + comi++ + break + } + if escape { + str[stri] = x + stri++ + escape = false + break + } + if quote { + str[stri] = x + stri++ + break + } + switch x { + case ')': + brace-- + if brace < 0 { + l.token = "extra closing brace" + l.err = true + debug.Printf("[%+v]", l.token) + c <- l + return + } + case '(': + brace++ + } + default: + escape = false + if commt { + com[comi] = x + comi++ + break + } + str[stri] = x + stri++ + space = false + } + x, err = s.tokenText() + } + if stri > 0 { + // Send remainder + l.token = string(str[:stri]) + l.length = stri + l.value = zString + debug.Printf("[%+v]", l.token) + c <- l + } +} + +// Extract the class number from CLASSxx +func classToInt(token string) (uint16, bool) { + offset := 5 + if len(token) < offset+1 { + return 0, false + } + class, ok := strconv.Atoi(token[offset:]) + if ok != nil || class > maxUint16 { + return 0, false + } + return uint16(class), true +} + +// Extract the rr number from TYPExxx +func typeToInt(token string) (uint16, bool) { + offset := 4 + if len(token) < offset+1 { + return 0, false + } + typ, ok := strconv.Atoi(token[offset:]) + if ok != nil || typ > maxUint16 { + return 0, false + } + return uint16(typ), true +} + +// Parse things like 2w, 2m, etc, Return the time in seconds. +func stringToTtl(token string) (uint32, bool) { + s := uint32(0) + i := uint32(0) + for _, c := range token { + switch c { + case 's', 'S': + s += i + i = 0 + case 'm', 'M': + s += i * 60 + i = 0 + case 'h', 'H': + s += i * 60 * 60 + i = 0 + case 'd', 'D': + s += i * 60 * 60 * 24 + i = 0 + case 'w', 'W': + s += i * 60 * 60 * 24 * 7 + i = 0 + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + i *= 10 + i += uint32(c) - '0' + default: + return 0, false + } + } + return s + i, true +} + +// Parse LOC records' <digits>[.<digits>][mM] into a +// mantissa exponent format. Token should contain the entire +// string (i.e. no spaces allowed) +func stringToCm(token string) (e, m uint8, ok bool) { + if token[len(token)-1] == 'M' || token[len(token)-1] == 'm' { + token = token[0 : len(token)-1] + } + s := strings.SplitN(token, ".", 2) + var meters, cmeters, val int + var err error + switch len(s) { + case 2: + if cmeters, err = strconv.Atoi(s[1]); err != nil { + return + } + fallthrough + case 1: + if meters, err = strconv.Atoi(s[0]); err != nil { + return + } + case 0: + // huh? + return 0, 0, false + } + ok = true + if meters > 0 { + e = 2 + val = meters + } else { + e = 0 + val = cmeters + } + for val > 10 { + e++ + val /= 10 + } + if e > 9 { + ok = false + } + m = uint8(val) + return +} + +func appendOrigin(name, origin string) string { + if origin == "." { + return name + origin + } + return name + "." + origin +} + +// LOC record helper function +func locCheckNorth(token string, latitude uint32) (uint32, bool) { + switch token { + case "n", "N": + return LOC_EQUATOR + latitude, true + case "s", "S": + return LOC_EQUATOR - latitude, true + } + return latitude, false +} + +// LOC record helper function +func locCheckEast(token string, longitude uint32) (uint32, bool) { + switch token { + case "e", "E": + return LOC_EQUATOR + longitude, true + case "w", "W": + return LOC_EQUATOR - longitude, true + } + return longitude, false +} + +// "Eat" the rest of the "line". Return potential comments +func slurpRemainder(c chan lex, f string) (*ParseError, string) { + l := <-c + com := "" + switch l.value { + case zBlank: + l = <-c + com = l.comment + if l.value != zNewline && l.value != zEOF { + return &ParseError{f, "garbage after rdata", l}, "" + } + case zNewline: + com = l.comment + case zEOF: + default: + return &ParseError{f, "garbage after rdata", l}, "" + } + return nil, com +} + +// Parse a 64 bit-like ipv6 address: "0014:4fff:ff20:ee64" +// Used for NID and L64 record. +func stringToNodeID(l lex) (uint64, *ParseError) { + if len(l.token) < 19 { + return 0, &ParseError{l.token, "bad NID/L64 NodeID/Locator64", l} + } + // There must be three colons at fixes postitions, if not its a parse error + if l.token[4] != ':' && l.token[9] != ':' && l.token[14] != ':' { + return 0, &ParseError{l.token, "bad NID/L64 NodeID/Locator64", l} + } + s := l.token[0:4] + l.token[5:9] + l.token[10:14] + l.token[15:19] + u, e := strconv.ParseUint(s, 16, 64) + if e != nil { + return 0, &ParseError{l.token, "bad NID/L64 NodeID/Locator64", l} + } + return u, nil +} diff --git a/vendor/github.com/miekg/dns/zscan_rr.go b/vendor/github.com/miekg/dns/zscan_rr.go new file mode 100644 index 00000000..a2db008f --- /dev/null +++ b/vendor/github.com/miekg/dns/zscan_rr.go @@ -0,0 +1,2270 @@ +package dns + +import ( + "encoding/base64" + "net" + "strconv" + "strings" +) + +type parserFunc struct { + // Func defines the function that parses the tokens and returns the RR + // or an error. The last string contains any comments in the line as + // they returned by the lexer as well. + Func func(h RR_Header, c chan lex, origin string, file string) (RR, *ParseError, string) + // Signals if the RR ending is of variable length, like TXT or records + // that have Hexadecimal or Base64 as their last element in the Rdata. Records + // that have a fixed ending or for instance A, AAAA, SOA and etc. + Variable bool +} + +// Parse the rdata of each rrtype. +// All data from the channel c is either zString or zBlank. +// After the rdata there may come a zBlank and then a zNewline +// or immediately a zNewline. If this is not the case we flag +// an *ParseError: garbage after rdata. +func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + parserfunc, ok := typeToparserFunc[h.Rrtype] + if ok { + r, e, cm := parserfunc.Func(h, c, o, f) + if parserfunc.Variable { + return r, e, cm + } + if e != nil { + return nil, e, "" + } + e, cm = slurpRemainder(c, f) + if e != nil { + return nil, e, "" + } + return r, nil, cm + } + // RFC3957 RR (Unknown RR handling) + return setRFC3597(h, c, o, f) +} + +// A remainder of the rdata with embedded spaces, return the parsed string (sans the spaces) +// or an error +func endingToString(c chan lex, errstr, f string) (string, *ParseError, string) { + s := "" + l := <-c // zString + for l.value != zNewline && l.value != zEOF { + if l.err { + return s, &ParseError{f, errstr, l}, "" + } + switch l.value { + case zString: + s += l.token + case zBlank: // Ok + default: + return "", &ParseError{f, errstr, l}, "" + } + l = <-c + } + return s, nil, l.comment +} + +// A remainder of the rdata with embedded spaces, return the parsed string slice (sans the spaces) +// or an error +func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError, string) { + // Get the remaining data until we see a zNewline + quote := false + l := <-c + var s []string + if l.err { + return s, &ParseError{f, errstr, l}, "" + } + switch l.value == zQuote { + case true: // A number of quoted string + s = make([]string, 0) + empty := true + for l.value != zNewline && l.value != zEOF { + if l.err { + return nil, &ParseError{f, errstr, l}, "" + } + switch l.value { + case zString: + empty = false + if len(l.token) > 255 { + // split up tokens that are larger than 255 into 255-chunks + sx := []string{} + p, i := 0, 255 + for { + if i <= len(l.token) { + sx = append(sx, l.token[p:i]) + } else { + sx = append(sx, l.token[p:]) + break + + } + p, i = p+255, i+255 + } + s = append(s, sx...) + break + } + + s = append(s, l.token) + case zBlank: + if quote { + // zBlank can only be seen in between txt parts. + return nil, &ParseError{f, errstr, l}, "" + } + case zQuote: + if empty && quote { + s = append(s, "") + } + quote = !quote + empty = true + default: + return nil, &ParseError{f, errstr, l}, "" + } + l = <-c + } + if quote { + return nil, &ParseError{f, errstr, l}, "" + } + case false: // Unquoted text record + s = make([]string, 1) + for l.value != zNewline && l.value != zEOF { + if l.err { + return s, &ParseError{f, errstr, l}, "" + } + s[0] += l.token + l = <-c + } + } + return s, nil, l.comment +} + +func setA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(A) + rr.Hdr = h + + l := <-c + if l.length == 0 { // Dynamic updates. + return rr, nil, "" + } + rr.A = net.ParseIP(l.token) + if rr.A == nil || l.err { + return nil, &ParseError{f, "bad A A", l}, "" + } + return rr, nil, "" +} + +func setAAAA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(AAAA) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + rr.AAAA = net.ParseIP(l.token) + if rr.AAAA == nil || l.err { + return nil, &ParseError{f, "bad AAAA AAAA", l}, "" + } + return rr, nil, "" +} + +func setNS(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NS) + rr.Hdr = h + + l := <-c + rr.Ns = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Ns = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad NS Ns", l}, "" + } + if rr.Ns[l.length-1] != '.' { + rr.Ns = appendOrigin(rr.Ns, o) + } + return rr, nil, "" +} + +func setPTR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(PTR) + rr.Hdr = h + + l := <-c + rr.Ptr = l.token + if l.length == 0 { // dynamic update rr. + return rr, nil, "" + } + if l.token == "@" { + rr.Ptr = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad PTR Ptr", l}, "" + } + if rr.Ptr[l.length-1] != '.' { + rr.Ptr = appendOrigin(rr.Ptr, o) + } + return rr, nil, "" +} + +func setNSAPPTR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NSAPPTR) + rr.Hdr = h + + l := <-c + rr.Ptr = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Ptr = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad NSAP-PTR Ptr", l}, "" + } + if rr.Ptr[l.length-1] != '.' { + rr.Ptr = appendOrigin(rr.Ptr, o) + } + return rr, nil, "" +} + +func setRP(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(RP) + rr.Hdr = h + + l := <-c + rr.Mbox = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Mbox = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad RP Mbox", l}, "" + } + if rr.Mbox[l.length-1] != '.' { + rr.Mbox = appendOrigin(rr.Mbox, o) + } + } + <-c // zBlank + l = <-c + rr.Txt = l.token + if l.token == "@" { + rr.Txt = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad RP Txt", l}, "" + } + if rr.Txt[l.length-1] != '.' { + rr.Txt = appendOrigin(rr.Txt, o) + } + return rr, nil, "" +} + +func setMR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MR) + rr.Hdr = h + + l := <-c + rr.Mr = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Mr = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MR Mr", l}, "" + } + if rr.Mr[l.length-1] != '.' { + rr.Mr = appendOrigin(rr.Mr, o) + } + return rr, nil, "" +} + +func setMB(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MB) + rr.Hdr = h + + l := <-c + rr.Mb = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Mb = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MB Mb", l}, "" + } + if rr.Mb[l.length-1] != '.' { + rr.Mb = appendOrigin(rr.Mb, o) + } + return rr, nil, "" +} + +func setMG(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MG) + rr.Hdr = h + + l := <-c + rr.Mg = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Mg = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MG Mg", l}, "" + } + if rr.Mg[l.length-1] != '.' { + rr.Mg = appendOrigin(rr.Mg, o) + } + return rr, nil, "" +} + +func setHINFO(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(HINFO) + rr.Hdr = h + + chunks, e, c1 := endingToTxtSlice(c, "bad HINFO Fields", f) + if e != nil { + return nil, e, c1 + } + + if ln := len(chunks); ln == 0 { + return rr, nil, "" + } else if ln == 1 { + // Can we split it? + if out := strings.Fields(chunks[0]); len(out) > 1 { + chunks = out + } else { + chunks = append(chunks, "") + } + } + + rr.Cpu = chunks[0] + rr.Os = strings.Join(chunks[1:], " ") + + return rr, nil, "" +} + +func setMINFO(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MINFO) + rr.Hdr = h + + l := <-c + rr.Rmail = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Rmail = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MINFO Rmail", l}, "" + } + if rr.Rmail[l.length-1] != '.' { + rr.Rmail = appendOrigin(rr.Rmail, o) + } + } + <-c // zBlank + l = <-c + rr.Email = l.token + if l.token == "@" { + rr.Email = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MINFO Email", l}, "" + } + if rr.Email[l.length-1] != '.' { + rr.Email = appendOrigin(rr.Email, o) + } + return rr, nil, "" +} + +func setMF(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MF) + rr.Hdr = h + + l := <-c + rr.Mf = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Mf = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MF Mf", l}, "" + } + if rr.Mf[l.length-1] != '.' { + rr.Mf = appendOrigin(rr.Mf, o) + } + return rr, nil, "" +} + +func setMD(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MD) + rr.Hdr = h + + l := <-c + rr.Md = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Md = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MD Md", l}, "" + } + if rr.Md[l.length-1] != '.' { + rr.Md = appendOrigin(rr.Md, o) + } + return rr, nil, "" +} + +func setMX(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(MX) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad MX Pref", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Mx = l.token + if l.token == "@" { + rr.Mx = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad MX Mx", l}, "" + } + if rr.Mx[l.length-1] != '.' { + rr.Mx = appendOrigin(rr.Mx, o) + } + return rr, nil, "" +} + +func setRT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(RT) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil { + return nil, &ParseError{f, "bad RT Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Host = l.token + if l.token == "@" { + rr.Host = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad RT Host", l}, "" + } + if rr.Host[l.length-1] != '.' { + rr.Host = appendOrigin(rr.Host, o) + } + return rr, nil, "" +} + +func setAFSDB(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(AFSDB) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad AFSDB Subtype", l}, "" + } + rr.Subtype = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Hostname = l.token + if l.token == "@" { + rr.Hostname = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad AFSDB Hostname", l}, "" + } + if rr.Hostname[l.length-1] != '.' { + rr.Hostname = appendOrigin(rr.Hostname, o) + } + return rr, nil, "" +} + +func setX25(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(X25) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + if l.err { + return nil, &ParseError{f, "bad X25 PSDNAddress", l}, "" + } + rr.PSDNAddress = l.token + return rr, nil, "" +} + +func setKX(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(KX) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad KX Pref", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Exchanger = l.token + if l.token == "@" { + rr.Exchanger = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad KX Exchanger", l}, "" + } + if rr.Exchanger[l.length-1] != '.' { + rr.Exchanger = appendOrigin(rr.Exchanger, o) + } + return rr, nil, "" +} + +func setCNAME(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(CNAME) + rr.Hdr = h + + l := <-c + rr.Target = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Target = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad CNAME Target", l}, "" + } + if rr.Target[l.length-1] != '.' { + rr.Target = appendOrigin(rr.Target, o) + } + return rr, nil, "" +} + +func setDNAME(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(DNAME) + rr.Hdr = h + + l := <-c + rr.Target = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Target = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad CNAME Target", l}, "" + } + if rr.Target[l.length-1] != '.' { + rr.Target = appendOrigin(rr.Target, o) + } + return rr, nil, "" +} + +func setSOA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(SOA) + rr.Hdr = h + + l := <-c + rr.Ns = l.token + if l.length == 0 { + return rr, nil, "" + } + <-c // zBlank + if l.token == "@" { + rr.Ns = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad SOA Ns", l}, "" + } + if rr.Ns[l.length-1] != '.' { + rr.Ns = appendOrigin(rr.Ns, o) + } + } + + l = <-c + rr.Mbox = l.token + if l.token == "@" { + rr.Mbox = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad SOA Mbox", l}, "" + } + if rr.Mbox[l.length-1] != '.' { + rr.Mbox = appendOrigin(rr.Mbox, o) + } + } + <-c // zBlank + + var ( + v uint32 + ok bool + ) + for i := 0; i < 5; i++ { + l = <-c + if l.err { + return nil, &ParseError{f, "bad SOA zone parameter", l}, "" + } + if j, e := strconv.Atoi(l.token); e != nil { + if i == 0 { + // Serial should be a number + return nil, &ParseError{f, "bad SOA zone parameter", l}, "" + } + if v, ok = stringToTtl(l.token); !ok { + return nil, &ParseError{f, "bad SOA zone parameter", l}, "" + + } + } else { + v = uint32(j) + } + switch i { + case 0: + rr.Serial = v + <-c // zBlank + case 1: + rr.Refresh = v + <-c // zBlank + case 2: + rr.Retry = v + <-c // zBlank + case 3: + rr.Expire = v + <-c // zBlank + case 4: + rr.Minttl = v + } + } + return rr, nil, "" +} + +func setSRV(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(SRV) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad SRV Priority", l}, "" + } + rr.Priority = uint16(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad SRV Weight", l}, "" + } + rr.Weight = uint16(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad SRV Port", l}, "" + } + rr.Port = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Target = l.token + if l.token == "@" { + rr.Target = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad SRV Target", l}, "" + } + if rr.Target[l.length-1] != '.' { + rr.Target = appendOrigin(rr.Target, o) + } + return rr, nil, "" +} + +func setNAPTR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NAPTR) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NAPTR Order", l}, "" + } + rr.Order = uint16(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NAPTR Preference", l}, "" + } + rr.Preference = uint16(i) + // Flags + <-c // zBlank + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Flags", l}, "" + } + l = <-c // Either String or Quote + if l.value == zString { + rr.Flags = l.token + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Flags", l}, "" + } + } else if l.value == zQuote { + rr.Flags = "" + } else { + return nil, &ParseError{f, "bad NAPTR Flags", l}, "" + } + + // Service + <-c // zBlank + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Service", l}, "" + } + l = <-c // Either String or Quote + if l.value == zString { + rr.Service = l.token + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Service", l}, "" + } + } else if l.value == zQuote { + rr.Service = "" + } else { + return nil, &ParseError{f, "bad NAPTR Service", l}, "" + } + + // Regexp + <-c // zBlank + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Regexp", l}, "" + } + l = <-c // Either String or Quote + if l.value == zString { + rr.Regexp = l.token + l = <-c // _QUOTE + if l.value != zQuote { + return nil, &ParseError{f, "bad NAPTR Regexp", l}, "" + } + } else if l.value == zQuote { + rr.Regexp = "" + } else { + return nil, &ParseError{f, "bad NAPTR Regexp", l}, "" + } + // After quote no space?? + <-c // zBlank + l = <-c // zString + rr.Replacement = l.token + if l.token == "@" { + rr.Replacement = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad NAPTR Replacement", l}, "" + } + if rr.Replacement[l.length-1] != '.' { + rr.Replacement = appendOrigin(rr.Replacement, o) + } + return rr, nil, "" +} + +func setTALINK(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(TALINK) + rr.Hdr = h + + l := <-c + rr.PreviousName = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.PreviousName = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad TALINK PreviousName", l}, "" + } + if rr.PreviousName[l.length-1] != '.' { + rr.PreviousName = appendOrigin(rr.PreviousName, o) + } + } + <-c // zBlank + l = <-c + rr.NextName = l.token + if l.token == "@" { + rr.NextName = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad TALINK NextName", l}, "" + } + if rr.NextName[l.length-1] != '.' { + rr.NextName = appendOrigin(rr.NextName, o) + } + return rr, nil, "" +} + +func setLOC(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(LOC) + rr.Hdr = h + // Non zero defaults for LOC record, see RFC 1876, Section 3. + rr.HorizPre = 165 // 10000 + rr.VertPre = 162 // 10 + rr.Size = 18 // 1 + ok := false + // North + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad LOC Latitude", l}, "" + } + rr.Latitude = 1000 * 60 * 60 * uint32(i) + + <-c // zBlank + // Either number, 'N' or 'S' + l = <-c + if rr.Latitude, ok = locCheckNorth(l.token, rr.Latitude); ok { + goto East + } + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad LOC Latitude minutes", l}, "" + } + rr.Latitude += 1000 * 60 * uint32(i) + + <-c // zBlank + l = <-c + if i, e := strconv.ParseFloat(l.token, 32); e != nil || l.err { + return nil, &ParseError{f, "bad LOC Latitude seconds", l}, "" + } else { + rr.Latitude += uint32(1000 * i) + } + <-c // zBlank + // Either number, 'N' or 'S' + l = <-c + if rr.Latitude, ok = locCheckNorth(l.token, rr.Latitude); ok { + goto East + } + // If still alive, flag an error + return nil, &ParseError{f, "bad LOC Latitude North/South", l}, "" + +East: + // East + <-c // zBlank + l = <-c + if i, e := strconv.Atoi(l.token); e != nil || l.err { + return nil, &ParseError{f, "bad LOC Longitude", l}, "" + } else { + rr.Longitude = 1000 * 60 * 60 * uint32(i) + } + <-c // zBlank + // Either number, 'E' or 'W' + l = <-c + if rr.Longitude, ok = locCheckEast(l.token, rr.Longitude); ok { + goto Altitude + } + if i, e := strconv.Atoi(l.token); e != nil || l.err { + return nil, &ParseError{f, "bad LOC Longitude minutes", l}, "" + } else { + rr.Longitude += 1000 * 60 * uint32(i) + } + <-c // zBlank + l = <-c + if i, e := strconv.ParseFloat(l.token, 32); e != nil || l.err { + return nil, &ParseError{f, "bad LOC Longitude seconds", l}, "" + } else { + rr.Longitude += uint32(1000 * i) + } + <-c // zBlank + // Either number, 'E' or 'W' + l = <-c + if rr.Longitude, ok = locCheckEast(l.token, rr.Longitude); ok { + goto Altitude + } + // If still alive, flag an error + return nil, &ParseError{f, "bad LOC Longitude East/West", l}, "" + +Altitude: + <-c // zBlank + l = <-c + if l.length == 0 || l.err { + return nil, &ParseError{f, "bad LOC Altitude", l}, "" + } + if l.token[len(l.token)-1] == 'M' || l.token[len(l.token)-1] == 'm' { + l.token = l.token[0 : len(l.token)-1] + } + if i, e := strconv.ParseFloat(l.token, 32); e != nil { + return nil, &ParseError{f, "bad LOC Altitude", l}, "" + } else { + rr.Altitude = uint32(i*100.0 + 10000000.0 + 0.5) + } + + // And now optionally the other values + l = <-c + count := 0 + for l.value != zNewline && l.value != zEOF { + switch l.value { + case zString: + switch count { + case 0: // Size + e, m, ok := stringToCm(l.token) + if !ok { + return nil, &ParseError{f, "bad LOC Size", l}, "" + } + rr.Size = (e & 0x0f) | (m << 4 & 0xf0) + case 1: // HorizPre + e, m, ok := stringToCm(l.token) + if !ok { + return nil, &ParseError{f, "bad LOC HorizPre", l}, "" + } + rr.HorizPre = (e & 0x0f) | (m << 4 & 0xf0) + case 2: // VertPre + e, m, ok := stringToCm(l.token) + if !ok { + return nil, &ParseError{f, "bad LOC VertPre", l}, "" + } + rr.VertPre = (e & 0x0f) | (m << 4 & 0xf0) + } + count++ + case zBlank: + // Ok + default: + return nil, &ParseError{f, "bad LOC Size, HorizPre or VertPre", l}, "" + } + l = <-c + } + return rr, nil, "" +} + +func setHIP(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(HIP) + rr.Hdr = h + + // HitLength is not represented + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad HIP PublicKeyAlgorithm", l}, "" + } + rr.PublicKeyAlgorithm = uint8(i) + <-c // zBlank + l = <-c // zString + if l.length == 0 || l.err { + return nil, &ParseError{f, "bad HIP Hit", l}, "" + } + rr.Hit = l.token // This can not contain spaces, see RFC 5205 Section 6. + rr.HitLength = uint8(len(rr.Hit)) / 2 + + <-c // zBlank + l = <-c // zString + if l.length == 0 || l.err { + return nil, &ParseError{f, "bad HIP PublicKey", l}, "" + } + rr.PublicKey = l.token // This cannot contain spaces + rr.PublicKeyLength = uint16(base64.StdEncoding.DecodedLen(len(rr.PublicKey))) + + // RendezvousServers (if any) + l = <-c + var xs []string + for l.value != zNewline && l.value != zEOF { + switch l.value { + case zString: + if l.token == "@" { + xs = append(xs, o) + l = <-c + continue + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad HIP RendezvousServers", l}, "" + } + if l.token[l.length-1] != '.' { + l.token = appendOrigin(l.token, o) + } + xs = append(xs, l.token) + case zBlank: + // Ok + default: + return nil, &ParseError{f, "bad HIP RendezvousServers", l}, "" + } + l = <-c + } + rr.RendezvousServers = xs + return rr, nil, l.comment +} + +func setCERT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(CERT) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + if v, ok := StringToCertType[l.token]; ok { + rr.Type = v + } else if i, e := strconv.Atoi(l.token); e != nil { + return nil, &ParseError{f, "bad CERT Type", l}, "" + } else { + rr.Type = uint16(i) + } + <-c // zBlank + l = <-c // zString + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad CERT KeyTag", l}, "" + } + rr.KeyTag = uint16(i) + <-c // zBlank + l = <-c // zString + if v, ok := StringToAlgorithm[l.token]; ok { + rr.Algorithm = v + } else if i, e := strconv.Atoi(l.token); e != nil { + return nil, &ParseError{f, "bad CERT Algorithm", l}, "" + } else { + rr.Algorithm = uint8(i) + } + s, e1, c1 := endingToString(c, "bad CERT Certificate", f) + if e1 != nil { + return nil, e1, c1 + } + rr.Certificate = s + return rr, nil, c1 +} + +func setOPENPGPKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(OPENPGPKEY) + rr.Hdr = h + + s, e, c1 := endingToString(c, "bad OPENPGPKEY PublicKey", f) + if e != nil { + return nil, e, c1 + } + rr.PublicKey = s + return rr, nil, c1 +} + +func setSIG(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setRRSIG(h, c, o, f) + if r != nil { + return &SIG{*r.(*RRSIG)}, e, s + } + return nil, e, s +} + +func setRRSIG(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(RRSIG) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + if t, ok := StringToType[l.tokenUpper]; !ok { + if strings.HasPrefix(l.tokenUpper, "TYPE") { + t, ok = typeToInt(l.tokenUpper) + if !ok { + return nil, &ParseError{f, "bad RRSIG Typecovered", l}, "" + } + rr.TypeCovered = t + } else { + return nil, &ParseError{f, "bad RRSIG Typecovered", l}, "" + } + } else { + rr.TypeCovered = t + } + <-c // zBlank + l = <-c + i, err := strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad RRSIG Algorithm", l}, "" + } + rr.Algorithm = uint8(i) + <-c // zBlank + l = <-c + i, err = strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad RRSIG Labels", l}, "" + } + rr.Labels = uint8(i) + <-c // zBlank + l = <-c + i, err = strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad RRSIG OrigTtl", l}, "" + } + rr.OrigTtl = uint32(i) + <-c // zBlank + l = <-c + if i, err := StringToTime(l.token); err != nil { + // Try to see if all numeric and use it as epoch + if i, err := strconv.ParseInt(l.token, 10, 64); err == nil { + // TODO(miek): error out on > MAX_UINT32, same below + rr.Expiration = uint32(i) + } else { + return nil, &ParseError{f, "bad RRSIG Expiration", l}, "" + } + } else { + rr.Expiration = i + } + <-c // zBlank + l = <-c + if i, err := StringToTime(l.token); err != nil { + if i, err := strconv.ParseInt(l.token, 10, 64); err == nil { + rr.Inception = uint32(i) + } else { + return nil, &ParseError{f, "bad RRSIG Inception", l}, "" + } + } else { + rr.Inception = i + } + <-c // zBlank + l = <-c + i, err = strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad RRSIG KeyTag", l}, "" + } + rr.KeyTag = uint16(i) + <-c // zBlank + l = <-c + rr.SignerName = l.token + if l.token == "@" { + rr.SignerName = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad RRSIG SignerName", l}, "" + } + if rr.SignerName[l.length-1] != '.' { + rr.SignerName = appendOrigin(rr.SignerName, o) + } + } + s, e, c1 := endingToString(c, "bad RRSIG Signature", f) + if e != nil { + return nil, e, c1 + } + rr.Signature = s + return rr, nil, c1 +} + +func setNSEC(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NSEC) + rr.Hdr = h + + l := <-c + rr.NextDomain = l.token + if l.length == 0 { + return rr, nil, l.comment + } + if l.token == "@" { + rr.NextDomain = o + } else { + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad NSEC NextDomain", l}, "" + } + if rr.NextDomain[l.length-1] != '.' { + rr.NextDomain = appendOrigin(rr.NextDomain, o) + } + } + + rr.TypeBitMap = make([]uint16, 0) + var ( + k uint16 + ok bool + ) + l = <-c + for l.value != zNewline && l.value != zEOF { + switch l.value { + case zBlank: + // Ok + case zString: + if k, ok = StringToType[l.tokenUpper]; !ok { + if k, ok = typeToInt(l.tokenUpper); !ok { + return nil, &ParseError{f, "bad NSEC TypeBitMap", l}, "" + } + } + rr.TypeBitMap = append(rr.TypeBitMap, k) + default: + return nil, &ParseError{f, "bad NSEC TypeBitMap", l}, "" + } + l = <-c + } + return rr, nil, l.comment +} + +func setNSEC3(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NSEC3) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3 Hash", l}, "" + } + rr.Hash = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3 Flags", l}, "" + } + rr.Flags = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3 Iterations", l}, "" + } + rr.Iterations = uint16(i) + <-c + l = <-c + if len(l.token) == 0 || l.err { + return nil, &ParseError{f, "bad NSEC3 Salt", l}, "" + } + rr.SaltLength = uint8(len(l.token)) / 2 + rr.Salt = l.token + + <-c + l = <-c + if len(l.token) == 0 || l.err { + return nil, &ParseError{f, "bad NSEC3 NextDomain", l}, "" + } + rr.HashLength = 20 // Fix for NSEC3 (sha1 160 bits) + rr.NextDomain = l.token + + rr.TypeBitMap = make([]uint16, 0) + var ( + k uint16 + ok bool + ) + l = <-c + for l.value != zNewline && l.value != zEOF { + switch l.value { + case zBlank: + // Ok + case zString: + if k, ok = StringToType[l.tokenUpper]; !ok { + if k, ok = typeToInt(l.tokenUpper); !ok { + return nil, &ParseError{f, "bad NSEC3 TypeBitMap", l}, "" + } + } + rr.TypeBitMap = append(rr.TypeBitMap, k) + default: + return nil, &ParseError{f, "bad NSEC3 TypeBitMap", l}, "" + } + l = <-c + } + return rr, nil, l.comment +} + +func setNSEC3PARAM(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NSEC3PARAM) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3PARAM Hash", l}, "" + } + rr.Hash = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3PARAM Flags", l}, "" + } + rr.Flags = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NSEC3PARAM Iterations", l}, "" + } + rr.Iterations = uint16(i) + <-c + l = <-c + rr.SaltLength = uint8(len(l.token)) + rr.Salt = l.token + return rr, nil, "" +} + +func setEUI48(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(EUI48) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + if l.length != 17 || l.err { + return nil, &ParseError{f, "bad EUI48 Address", l}, "" + } + addr := make([]byte, 12) + dash := 0 + for i := 0; i < 10; i += 2 { + addr[i] = l.token[i+dash] + addr[i+1] = l.token[i+1+dash] + dash++ + if l.token[i+1+dash] != '-' { + return nil, &ParseError{f, "bad EUI48 Address", l}, "" + } + } + addr[10] = l.token[15] + addr[11] = l.token[16] + + i, e := strconv.ParseUint(string(addr), 16, 48) + if e != nil { + return nil, &ParseError{f, "bad EUI48 Address", l}, "" + } + rr.Address = i + return rr, nil, "" +} + +func setEUI64(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(EUI64) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + if l.length != 23 || l.err { + return nil, &ParseError{f, "bad EUI64 Address", l}, "" + } + addr := make([]byte, 16) + dash := 0 + for i := 0; i < 14; i += 2 { + addr[i] = l.token[i+dash] + addr[i+1] = l.token[i+1+dash] + dash++ + if l.token[i+1+dash] != '-' { + return nil, &ParseError{f, "bad EUI64 Address", l}, "" + } + } + addr[14] = l.token[21] + addr[15] = l.token[22] + + i, e := strconv.ParseUint(string(addr), 16, 64) + if e != nil { + return nil, &ParseError{f, "bad EUI68 Address", l}, "" + } + rr.Address = uint64(i) + return rr, nil, "" +} + +func setWKS(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(WKS) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + rr.Address = net.ParseIP(l.token) + if rr.Address == nil || l.err { + return nil, &ParseError{f, "bad WKS Address", l}, "" + } + + <-c // zBlank + l = <-c + proto := "tcp" + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad WKS Protocol", l}, "" + } + rr.Protocol = uint8(i) + switch rr.Protocol { + case 17: + proto = "udp" + case 6: + proto = "tcp" + default: + return nil, &ParseError{f, "bad WKS Protocol", l}, "" + } + + <-c + l = <-c + rr.BitMap = make([]uint16, 0) + var ( + k int + err error + ) + for l.value != zNewline && l.value != zEOF { + switch l.value { + case zBlank: + // Ok + case zString: + if k, err = net.LookupPort(proto, l.token); err != nil { + i, e := strconv.Atoi(l.token) // If a number use that + if e != nil { + return nil, &ParseError{f, "bad WKS BitMap", l}, "" + } + rr.BitMap = append(rr.BitMap, uint16(i)) + } + rr.BitMap = append(rr.BitMap, uint16(k)) + default: + return nil, &ParseError{f, "bad WKS BitMap", l}, "" + } + l = <-c + } + return rr, nil, l.comment +} + +func setSSHFP(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(SSHFP) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad SSHFP Algorithm", l}, "" + } + rr.Algorithm = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad SSHFP Type", l}, "" + } + rr.Type = uint8(i) + <-c // zBlank + s, e1, c1 := endingToString(c, "bad SSHFP Fingerprint", f) + if e1 != nil { + return nil, e1, c1 + } + rr.FingerPrint = s + return rr, nil, "" +} + +func setDNSKEYs(h RR_Header, c chan lex, o, f, typ string) (RR, *ParseError, string) { + rr := new(DNSKEY) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad " + typ + " Flags", l}, "" + } + rr.Flags = uint16(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad " + typ + " Protocol", l}, "" + } + rr.Protocol = uint8(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad " + typ + " Algorithm", l}, "" + } + rr.Algorithm = uint8(i) + s, e1, c1 := endingToString(c, "bad "+typ+" PublicKey", f) + if e1 != nil { + return nil, e1, c1 + } + rr.PublicKey = s + return rr, nil, c1 +} + +func setKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDNSKEYs(h, c, o, f, "KEY") + if r != nil { + return &KEY{*r.(*DNSKEY)}, e, s + } + return nil, e, s +} + +func setDNSKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDNSKEYs(h, c, o, f, "DNSKEY") + return r, e, s +} + +func setCDNSKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDNSKEYs(h, c, o, f, "CDNSKEY") + if r != nil { + return &CDNSKEY{*r.(*DNSKEY)}, e, s + } + return nil, e, s +} + +func setRKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(RKEY) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad RKEY Flags", l}, "" + } + rr.Flags = uint16(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad RKEY Protocol", l}, "" + } + rr.Protocol = uint8(i) + <-c // zBlank + l = <-c // zString + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad RKEY Algorithm", l}, "" + } + rr.Algorithm = uint8(i) + s, e1, c1 := endingToString(c, "bad RKEY PublicKey", f) + if e1 != nil { + return nil, e1, c1 + } + rr.PublicKey = s + return rr, nil, c1 +} + +func setEID(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(EID) + rr.Hdr = h + s, e, c1 := endingToString(c, "bad EID Endpoint", f) + if e != nil { + return nil, e, c1 + } + rr.Endpoint = s + return rr, nil, c1 +} + +func setNIMLOC(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NIMLOC) + rr.Hdr = h + s, e, c1 := endingToString(c, "bad NIMLOC Locator", f) + if e != nil { + return nil, e, c1 + } + rr.Locator = s + return rr, nil, c1 +} + +func setGPOS(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(GPOS) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, "" + } + _, e := strconv.ParseFloat(l.token, 64) + if e != nil || l.err { + return nil, &ParseError{f, "bad GPOS Longitude", l}, "" + } + rr.Longitude = l.token + <-c // zBlank + l = <-c + _, e = strconv.ParseFloat(l.token, 64) + if e != nil || l.err { + return nil, &ParseError{f, "bad GPOS Latitude", l}, "" + } + rr.Latitude = l.token + <-c // zBlank + l = <-c + _, e = strconv.ParseFloat(l.token, 64) + if e != nil || l.err { + return nil, &ParseError{f, "bad GPOS Altitude", l}, "" + } + rr.Altitude = l.token + return rr, nil, "" +} + +func setDSs(h RR_Header, c chan lex, o, f, typ string) (RR, *ParseError, string) { + rr := new(DS) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad " + typ + " KeyTag", l}, "" + } + rr.KeyTag = uint16(i) + <-c // zBlank + l = <-c + if i, e := strconv.Atoi(l.token); e != nil { + i, ok := StringToAlgorithm[l.tokenUpper] + if !ok || l.err { + return nil, &ParseError{f, "bad " + typ + " Algorithm", l}, "" + } + rr.Algorithm = i + } else { + rr.Algorithm = uint8(i) + } + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad " + typ + " DigestType", l}, "" + } + rr.DigestType = uint8(i) + s, e1, c1 := endingToString(c, "bad "+typ+" Digest", f) + if e1 != nil { + return nil, e1, c1 + } + rr.Digest = s + return rr, nil, c1 +} + +func setDS(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDSs(h, c, o, f, "DS") + return r, e, s +} + +func setDLV(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDSs(h, c, o, f, "DLV") + if r != nil { + return &DLV{*r.(*DS)}, e, s + } + return nil, e, s +} + +func setCDS(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + r, e, s := setDSs(h, c, o, f, "CDS") + if r != nil { + return &CDS{*r.(*DS)}, e, s + } + return nil, e, s +} + +func setTA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(TA) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad TA KeyTag", l}, "" + } + rr.KeyTag = uint16(i) + <-c // zBlank + l = <-c + if i, e := strconv.Atoi(l.token); e != nil { + i, ok := StringToAlgorithm[l.tokenUpper] + if !ok || l.err { + return nil, &ParseError{f, "bad TA Algorithm", l}, "" + } + rr.Algorithm = i + } else { + rr.Algorithm = uint8(i) + } + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad TA DigestType", l}, "" + } + rr.DigestType = uint8(i) + s, e, c1 := endingToString(c, "bad TA Digest", f) + if e != nil { + return nil, e.(*ParseError), c1 + } + rr.Digest = s + return rr, nil, c1 +} + +func setTLSA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(TLSA) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad TLSA Usage", l}, "" + } + rr.Usage = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad TLSA Selector", l}, "" + } + rr.Selector = uint8(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad TLSA MatchingType", l}, "" + } + rr.MatchingType = uint8(i) + // So this needs be e2 (i.e. different than e), because...??t + s, e2, c1 := endingToString(c, "bad TLSA Certificate", f) + if e2 != nil { + return nil, e2, c1 + } + rr.Certificate = s + return rr, nil, c1 +} + +func setRFC3597(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(RFC3597) + rr.Hdr = h + l := <-c + if l.token != "\\#" { + return nil, &ParseError{f, "bad RFC3597 Rdata", l}, "" + } + <-c // zBlank + l = <-c + rdlength, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad RFC3597 Rdata ", l}, "" + } + + s, e1, c1 := endingToString(c, "bad RFC3597 Rdata", f) + if e1 != nil { + return nil, e1, c1 + } + if rdlength*2 != len(s) { + return nil, &ParseError{f, "bad RFC3597 Rdata", l}, "" + } + rr.Rdata = s + return rr, nil, c1 +} + +func setSPF(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(SPF) + rr.Hdr = h + + s, e, c1 := endingToTxtSlice(c, "bad SPF Txt", f) + if e != nil { + return nil, e, "" + } + rr.Txt = s + return rr, nil, c1 +} + +func setTXT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(TXT) + rr.Hdr = h + + // no zBlank reading here, because all this rdata is TXT + s, e, c1 := endingToTxtSlice(c, "bad TXT Txt", f) + if e != nil { + return nil, e, "" + } + rr.Txt = s + return rr, nil, c1 +} + +// identical to setTXT +func setNINFO(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NINFO) + rr.Hdr = h + + s, e, c1 := endingToTxtSlice(c, "bad NINFO ZSData", f) + if e != nil { + return nil, e, "" + } + rr.ZSData = s + return rr, nil, c1 +} + +func setURI(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(URI) + rr.Hdr = h + + l := <-c + if l.length == 0 { // Dynamic updates. + return rr, nil, "" + } + + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad URI Priority", l}, "" + } + rr.Priority = uint16(i) + <-c // zBlank + l = <-c + i, e = strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad URI Weight", l}, "" + } + rr.Weight = uint16(i) + + <-c // zBlank + s, err, c1 := endingToTxtSlice(c, "bad URI Target", f) + if err != nil { + return nil, err, "" + } + if len(s) > 1 { + return nil, &ParseError{f, "bad URI Target", l}, "" + } + rr.Target = s[0] + return rr, nil, c1 +} + +func setDHCID(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + // awesome record to parse! + rr := new(DHCID) + rr.Hdr = h + + s, e, c1 := endingToString(c, "bad DHCID Digest", f) + if e != nil { + return nil, e, c1 + } + rr.Digest = s + return rr, nil, c1 +} + +func setNID(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(NID) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad NID Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + u, err := stringToNodeID(l) + if err != nil || l.err { + return nil, err, "" + } + rr.NodeID = u + return rr, nil, "" +} + +func setL32(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(L32) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad L32 Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Locator32 = net.ParseIP(l.token) + if rr.Locator32 == nil || l.err { + return nil, &ParseError{f, "bad L32 Locator", l}, "" + } + return rr, nil, "" +} + +func setLP(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(LP) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad LP Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Fqdn = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Fqdn = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad LP Fqdn", l}, "" + } + if rr.Fqdn[l.length-1] != '.' { + rr.Fqdn = appendOrigin(rr.Fqdn, o) + } + return rr, nil, "" +} + +func setL64(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(L64) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad L64 Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + u, err := stringToNodeID(l) + if err != nil || l.err { + return nil, err, "" + } + rr.Locator64 = u + return rr, nil, "" +} + +func setUID(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(UID) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad UID Uid", l}, "" + } + rr.Uid = uint32(i) + return rr, nil, "" +} + +func setGID(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(GID) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad GID Gid", l}, "" + } + rr.Gid = uint32(i) + return rr, nil, "" +} + +func setUINFO(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(UINFO) + rr.Hdr = h + s, e, c1 := endingToTxtSlice(c, "bad UINFO Uinfo", f) + if e != nil { + return nil, e, "" + } + rr.Uinfo = s[0] // silently discard anything above + return rr, nil, c1 +} + +func setPX(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(PX) + rr.Hdr = h + + l := <-c + if l.length == 0 { + return rr, nil, "" + } + i, e := strconv.Atoi(l.token) + if e != nil || l.err { + return nil, &ParseError{f, "bad PX Preference", l}, "" + } + rr.Preference = uint16(i) + <-c // zBlank + l = <-c // zString + rr.Map822 = l.token + if l.length == 0 { + return rr, nil, "" + } + if l.token == "@" { + rr.Map822 = o + return rr, nil, "" + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad PX Map822", l}, "" + } + if rr.Map822[l.length-1] != '.' { + rr.Map822 = appendOrigin(rr.Map822, o) + } + <-c // zBlank + l = <-c // zString + rr.Mapx400 = l.token + if l.token == "@" { + rr.Mapx400 = o + return rr, nil, "" + } + _, ok = IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad PX Mapx400", l}, "" + } + if rr.Mapx400[l.length-1] != '.' { + rr.Mapx400 = appendOrigin(rr.Mapx400, o) + } + return rr, nil, "" +} + +func setIPSECKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(IPSECKEY) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, err := strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad IPSECKEY Precedence", l}, "" + } + rr.Precedence = uint8(i) + <-c // zBlank + l = <-c + i, err = strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad IPSECKEY GatewayType", l}, "" + } + rr.GatewayType = uint8(i) + <-c // zBlank + l = <-c + i, err = strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad IPSECKEY Algorithm", l}, "" + } + rr.Algorithm = uint8(i) + + // Now according to GatewayType we can have different elements here + <-c // zBlank + l = <-c + switch rr.GatewayType { + case 0: + fallthrough + case 3: + rr.GatewayName = l.token + if l.token == "@" { + rr.GatewayName = o + } + _, ok := IsDomainName(l.token) + if !ok || l.length == 0 || l.err { + return nil, &ParseError{f, "bad IPSECKEY GatewayName", l}, "" + } + if rr.GatewayName[l.length-1] != '.' { + rr.GatewayName = appendOrigin(rr.GatewayName, o) + } + case 1: + rr.GatewayA = net.ParseIP(l.token) + if rr.GatewayA == nil { + return nil, &ParseError{f, "bad IPSECKEY GatewayA", l}, "" + } + case 2: + rr.GatewayAAAA = net.ParseIP(l.token) + if rr.GatewayAAAA == nil { + return nil, &ParseError{f, "bad IPSECKEY GatewayAAAA", l}, "" + } + default: + return nil, &ParseError{f, "bad IPSECKEY GatewayType", l}, "" + } + + s, e, c1 := endingToString(c, "bad IPSECKEY PublicKey", f) + if e != nil { + return nil, e, c1 + } + rr.PublicKey = s + return rr, nil, c1 +} + +func setCAA(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) { + rr := new(CAA) + rr.Hdr = h + l := <-c + if l.length == 0 { + return rr, nil, l.comment + } + i, err := strconv.Atoi(l.token) + if err != nil || l.err { + return nil, &ParseError{f, "bad CAA Flag", l}, "" + } + rr.Flag = uint8(i) + + <-c // zBlank + l = <-c // zString + if l.value != zString { + return nil, &ParseError{f, "bad CAA Tag", l}, "" + } + rr.Tag = l.token + + <-c // zBlank + s, e, c1 := endingToTxtSlice(c, "bad CAA Value", f) + if e != nil { + return nil, e, "" + } + if len(s) > 1 { + return nil, &ParseError{f, "bad CAA Value", l}, "" + } + rr.Value = s[0] + return rr, nil, c1 +} + +var typeToparserFunc = map[uint16]parserFunc{ + TypeAAAA: parserFunc{setAAAA, false}, + TypeAFSDB: parserFunc{setAFSDB, false}, + TypeA: parserFunc{setA, false}, + TypeCAA: parserFunc{setCAA, true}, + TypeCDS: parserFunc{setCDS, true}, + TypeCDNSKEY: parserFunc{setCDNSKEY, true}, + TypeCERT: parserFunc{setCERT, true}, + TypeCNAME: parserFunc{setCNAME, false}, + TypeDHCID: parserFunc{setDHCID, true}, + TypeDLV: parserFunc{setDLV, true}, + TypeDNAME: parserFunc{setDNAME, false}, + TypeKEY: parserFunc{setKEY, true}, + TypeDNSKEY: parserFunc{setDNSKEY, true}, + TypeDS: parserFunc{setDS, true}, + TypeEID: parserFunc{setEID, true}, + TypeEUI48: parserFunc{setEUI48, false}, + TypeEUI64: parserFunc{setEUI64, false}, + TypeGID: parserFunc{setGID, false}, + TypeGPOS: parserFunc{setGPOS, false}, + TypeHINFO: parserFunc{setHINFO, true}, + TypeHIP: parserFunc{setHIP, true}, + TypeIPSECKEY: parserFunc{setIPSECKEY, true}, + TypeKX: parserFunc{setKX, false}, + TypeL32: parserFunc{setL32, false}, + TypeL64: parserFunc{setL64, false}, + TypeLOC: parserFunc{setLOC, true}, + TypeLP: parserFunc{setLP, false}, + TypeMB: parserFunc{setMB, false}, + TypeMD: parserFunc{setMD, false}, + TypeMF: parserFunc{setMF, false}, + TypeMG: parserFunc{setMG, false}, + TypeMINFO: parserFunc{setMINFO, false}, + TypeMR: parserFunc{setMR, false}, + TypeMX: parserFunc{setMX, false}, + TypeNAPTR: parserFunc{setNAPTR, false}, + TypeNID: parserFunc{setNID, false}, + TypeNIMLOC: parserFunc{setNIMLOC, true}, + TypeNINFO: parserFunc{setNINFO, true}, + TypeNSAPPTR: parserFunc{setNSAPPTR, false}, + TypeNSEC3PARAM: parserFunc{setNSEC3PARAM, false}, + TypeNSEC3: parserFunc{setNSEC3, true}, + TypeNSEC: parserFunc{setNSEC, true}, + TypeNS: parserFunc{setNS, false}, + TypeOPENPGPKEY: parserFunc{setOPENPGPKEY, true}, + TypePTR: parserFunc{setPTR, false}, + TypePX: parserFunc{setPX, false}, + TypeSIG: parserFunc{setSIG, true}, + TypeRKEY: parserFunc{setRKEY, true}, + TypeRP: parserFunc{setRP, false}, + TypeRRSIG: parserFunc{setRRSIG, true}, + TypeRT: parserFunc{setRT, false}, + TypeSOA: parserFunc{setSOA, false}, + TypeSPF: parserFunc{setSPF, true}, + TypeSRV: parserFunc{setSRV, false}, + TypeSSHFP: parserFunc{setSSHFP, true}, + TypeTALINK: parserFunc{setTALINK, false}, + TypeTA: parserFunc{setTA, true}, + TypeTLSA: parserFunc{setTLSA, true}, + TypeTXT: parserFunc{setTXT, true}, + TypeUID: parserFunc{setUID, false}, + TypeUINFO: parserFunc{setUINFO, true}, + TypeURI: parserFunc{setURI, true}, + TypeWKS: parserFunc{setWKS, true}, + TypeX25: parserFunc{setX25, false}, +} diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go index 7e87f1ac..74ed5a9f 100644 --- a/vendor/github.com/prometheus/common/model/time.go +++ b/vendor/github.com/prometheus/common/model/time.go @@ -214,6 +214,9 @@ func (d Duration) String() string { ms = int64(time.Duration(d) / time.Millisecond) unit = "ms" ) + if ms == 0 { + return "0s" + } factors := map[string]int64{ "y": 1000 * 60 * 60 * 24 * 365, "w": 1000 * 60 * 60 * 24 * 7, diff --git a/vendor/golang.org/x/crypto/acme/acme.go b/vendor/golang.org/x/crypto/acme/acme.go index 1f4fb69e..8257ffb0 100644 --- a/vendor/golang.org/x/crypto/acme/acme.go +++ b/vendor/golang.org/x/crypto/acme/acme.go @@ -14,7 +14,6 @@ package acme import ( - "bytes" "context" "crypto" "crypto/ecdsa" @@ -23,6 +22,8 @@ import ( "crypto/sha256" "crypto/tls" "crypto/x509" + "crypto/x509/pkix" + "encoding/asn1" "encoding/base64" "encoding/hex" "encoding/json" @@ -33,7 +34,6 @@ import ( "io/ioutil" "math/big" "net/http" - "strconv" "strings" "sync" "time" @@ -42,6 +42,9 @@ import ( // LetsEncryptURL is the Directory endpoint of Let's Encrypt CA. const LetsEncryptURL = "https://acme-v01.api.letsencrypt.org/directory" +// idPeACMEIdentifierV1 is the OID for the ACME extension for the TLS-ALPN challenge. +var idPeACMEIdentifierV1 = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 1, 30, 1} + const ( maxChainLen = 5 // max depth and breadth of a certificate chain maxCertSize = 1 << 20 // max size of a certificate, in bytes @@ -76,6 +79,22 @@ type Client struct { // will have no effect. DirectoryURL string + // RetryBackoff computes the duration after which the nth retry of a failed request + // should occur. The value of n for the first call on failure is 1. + // The values of r and resp are the request and response of the last failed attempt. + // If the returned value is negative or zero, no more retries are done and an error + // is returned to the caller of the original method. + // + // Requests which result in a 4xx client error are not retried, + // except for 400 Bad Request due to "bad nonce" errors and 429 Too Many Requests. + // + // If RetryBackoff is nil, a truncated exponential backoff algorithm + // with the ceiling of 10 seconds is used, where each subsequent retry n + // is done after either ("Retry-After" + jitter) or (2^n seconds + jitter), + // preferring the former if "Retry-After" header is found in the resp. + // The jitter is a random value up to 1 second. + RetryBackoff func(n int, r *http.Request, resp *http.Response) time.Duration + dirMu sync.Mutex // guards writes to dir dir *Directory // cached result of Client's Discover method @@ -99,15 +118,12 @@ func (c *Client) Discover(ctx context.Context) (Directory, error) { if dirURL == "" { dirURL = LetsEncryptURL } - res, err := c.get(ctx, dirURL) + res, err := c.get(ctx, dirURL, wantStatus(http.StatusOK)) if err != nil { return Directory{}, err } defer res.Body.Close() c.addNonce(res.Header) - if res.StatusCode != http.StatusOK { - return Directory{}, responseError(res) - } var v struct { Reg string `json:"new-reg"` @@ -166,14 +182,11 @@ func (c *Client) CreateCert(ctx context.Context, csr []byte, exp time.Duration, req.NotAfter = now.Add(exp).Format(time.RFC3339) } - res, err := c.retryPostJWS(ctx, c.Key, c.dir.CertURL, req) + res, err := c.post(ctx, c.Key, c.dir.CertURL, req, wantStatus(http.StatusCreated)) if err != nil { return nil, "", err } defer res.Body.Close() - if res.StatusCode != http.StatusCreated { - return nil, "", responseError(res) - } curl := res.Header.Get("Location") // cert permanent URL if res.ContentLength == 0 { @@ -196,26 +209,11 @@ func (c *Client) CreateCert(ctx context.Context, csr []byte, exp time.Duration, // Callers are encouraged to parse the returned value to ensure the certificate is valid // and has expected features. func (c *Client) FetchCert(ctx context.Context, url string, bundle bool) ([][]byte, error) { - for { - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode == http.StatusOK { - return c.responseCert(ctx, res, bundle) - } - if res.StatusCode > 299 { - return nil, responseError(res) - } - d := retryAfter(res.Header.Get("Retry-After"), 3*time.Second) - select { - case <-time.After(d): - // retry - case <-ctx.Done(): - return nil, ctx.Err() - } + res, err := c.get(ctx, url, wantStatus(http.StatusOK)) + if err != nil { + return nil, err } + return c.responseCert(ctx, res, bundle) } // RevokeCert revokes a previously issued certificate cert, provided in DER format. @@ -241,14 +239,11 @@ func (c *Client) RevokeCert(ctx context.Context, key crypto.Signer, cert []byte, if key == nil { key = c.Key } - res, err := c.retryPostJWS(ctx, key, c.dir.RevokeURL, body) + res, err := c.post(ctx, key, c.dir.RevokeURL, body, wantStatus(http.StatusOK)) if err != nil { return err } defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return responseError(res) - } return nil } @@ -329,14 +324,11 @@ func (c *Client) Authorize(ctx context.Context, domain string) (*Authorization, Resource: "new-authz", Identifier: authzID{Type: "dns", Value: domain}, } - res, err := c.retryPostJWS(ctx, c.Key, c.dir.AuthzURL, req) + res, err := c.post(ctx, c.Key, c.dir.AuthzURL, req, wantStatus(http.StatusCreated)) if err != nil { return nil, err } defer res.Body.Close() - if res.StatusCode != http.StatusCreated { - return nil, responseError(res) - } var v wireAuthz if err := json.NewDecoder(res.Body).Decode(&v); err != nil { @@ -353,14 +345,11 @@ func (c *Client) Authorize(ctx context.Context, domain string) (*Authorization, // If a caller needs to poll an authorization until its status is final, // see the WaitAuthorization method. func (c *Client) GetAuthorization(ctx context.Context, url string) (*Authorization, error) { - res, err := c.get(ctx, url) + res, err := c.get(ctx, url, wantStatus(http.StatusOK, http.StatusAccepted)) if err != nil { return nil, err } defer res.Body.Close() - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } var v wireAuthz if err := json.NewDecoder(res.Body).Decode(&v); err != nil { return nil, fmt.Errorf("acme: invalid response: %v", err) @@ -387,14 +376,11 @@ func (c *Client) RevokeAuthorization(ctx context.Context, url string) error { Status: "deactivated", Delete: true, } - res, err := c.retryPostJWS(ctx, c.Key, url, req) + res, err := c.post(ctx, c.Key, url, req, wantStatus(http.StatusOK)) if err != nil { return err } defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return responseError(res) - } return nil } @@ -406,44 +392,42 @@ func (c *Client) RevokeAuthorization(ctx context.Context, url string) error { // In all other cases WaitAuthorization returns an error. // If the Status is StatusInvalid, the returned error is of type *AuthorizationError. func (c *Client) WaitAuthorization(ctx context.Context, url string) (*Authorization, error) { - sleep := sleeper(ctx) for { - res, err := c.get(ctx, url) + res, err := c.get(ctx, url, wantStatus(http.StatusOK, http.StatusAccepted)) if err != nil { return nil, err } - if res.StatusCode >= 400 && res.StatusCode <= 499 { - // Non-retriable error. For instance, Let's Encrypt may return 404 Not Found - // when requesting an expired authorization. - defer res.Body.Close() - return nil, responseError(res) - } - retry := res.Header.Get("Retry-After") - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - res.Body.Close() - if err := sleep(retry, 1); err != nil { - return nil, err - } - continue - } var raw wireAuthz err = json.NewDecoder(res.Body).Decode(&raw) res.Body.Close() - if err != nil { - if err := sleep(retry, 0); err != nil { - return nil, err - } - continue - } - if raw.Status == StatusValid { + switch { + case err != nil: + // Skip and retry. + case raw.Status == StatusValid: return raw.authorization(url), nil - } - if raw.Status == StatusInvalid { + case raw.Status == StatusInvalid: return nil, raw.error(url) } - if err := sleep(retry, 0); err != nil { - return nil, err + + // Exponential backoff is implemented in c.get above. + // This is just to prevent continuously hitting the CA + // while waiting for a final authorization status. + d := retryAfter(res.Header.Get("Retry-After")) + if d == 0 { + // Given that the fastest challenges TLS-SNI and HTTP-01 + // require a CA to make at least 1 network round trip + // and most likely persist a challenge state, + // this default delay seems reasonable. + d = time.Second + } + t := time.NewTimer(d) + select { + case <-ctx.Done(): + t.Stop() + return nil, ctx.Err() + case <-t.C: + // Retry. } } } @@ -452,14 +436,11 @@ func (c *Client) WaitAuthorization(ctx context.Context, url string) (*Authorizat // // A client typically polls a challenge status using this method. func (c *Client) GetChallenge(ctx context.Context, url string) (*Challenge, error) { - res, err := c.get(ctx, url) + res, err := c.get(ctx, url, wantStatus(http.StatusOK, http.StatusAccepted)) if err != nil { return nil, err } defer res.Body.Close() - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } v := wireChallenge{URI: url} if err := json.NewDecoder(res.Body).Decode(&v); err != nil { return nil, fmt.Errorf("acme: invalid response: %v", err) @@ -486,16 +467,14 @@ func (c *Client) Accept(ctx context.Context, chal *Challenge) (*Challenge, error Type: chal.Type, Auth: auth, } - res, err := c.retryPostJWS(ctx, c.Key, chal.URI, req) + res, err := c.post(ctx, c.Key, chal.URI, req, wantStatus( + http.StatusOK, // according to the spec + http.StatusAccepted, // Let's Encrypt: see https://goo.gl/WsJ7VT (acme-divergences.md) + )) if err != nil { return nil, err } defer res.Body.Close() - // Note: the protocol specifies 200 as the expected response code, but - // letsencrypt seems to be returning 202. - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } var v wireChallenge if err := json.NewDecoder(res.Body).Decode(&v); err != nil { @@ -552,7 +531,7 @@ func (c *Client) HTTP01ChallengePath(token string) string { // If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. // // The returned certificate is valid for the next 24 hours and must be presented only when -// the server name of the client hello matches exactly the returned name value. +// the server name of the TLS ClientHello matches exactly the returned name value. func (c *Client) TLSSNI01ChallengeCert(token string, opt ...CertOption) (cert tls.Certificate, name string, err error) { ka, err := keyAuth(c.Key.Public(), token) if err != nil { @@ -579,7 +558,7 @@ func (c *Client) TLSSNI01ChallengeCert(token string, opt ...CertOption) (cert tl // If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. // // The returned certificate is valid for the next 24 hours and must be presented only when -// the server name in the client hello matches exactly the returned name value. +// the server name in the TLS ClientHello matches exactly the returned name value. func (c *Client) TLSSNI02ChallengeCert(token string, opt ...CertOption) (cert tls.Certificate, name string, err error) { b := sha256.Sum256([]byte(token)) h := hex.EncodeToString(b[:]) @@ -600,6 +579,52 @@ func (c *Client) TLSSNI02ChallengeCert(token string, opt ...CertOption) (cert tl return cert, sanA, nil } +// TLSALPN01ChallengeCert creates a certificate for TLS-ALPN-01 challenge response. +// Servers can present the certificate to validate the challenge and prove control +// over a domain name. For more details on TLS-ALPN-01 see +// https://tools.ietf.org/html/draft-shoemaker-acme-tls-alpn-00#section-3 +// +// The token argument is a Challenge.Token value. +// If a WithKey option is provided, its private part signs the returned cert, +// and the public part is used to specify the signee. +// If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. +// +// The returned certificate is valid for the next 24 hours and must be presented only when +// the server name in the TLS ClientHello matches the domain, and the special acme-tls/1 ALPN protocol +// has been specified. +func (c *Client) TLSALPN01ChallengeCert(token, domain string, opt ...CertOption) (cert tls.Certificate, err error) { + ka, err := keyAuth(c.Key.Public(), token) + if err != nil { + return tls.Certificate{}, err + } + shasum := sha256.Sum256([]byte(ka)) + extValue, err := asn1.Marshal(shasum[:]) + if err != nil { + return tls.Certificate{}, err + } + acmeExtension := pkix.Extension{ + Id: idPeACMEIdentifierV1, + Critical: true, + Value: extValue, + } + + tmpl := defaultTLSChallengeCertTemplate() + + var newOpt []CertOption + for _, o := range opt { + switch o := o.(type) { + case *certOptTemplate: + t := *(*x509.Certificate)(o) // shallow copy is ok + tmpl = &t + default: + newOpt = append(newOpt, o) + } + } + tmpl.ExtraExtensions = append(tmpl.ExtraExtensions, acmeExtension) + newOpt = append(newOpt, WithTemplate(tmpl)) + return tlsChallengeCert([]string{domain}, newOpt) +} + // doReg sends all types of registration requests. // The type of request is identified by typ argument, which is a "resource" // in the ACME spec terms. @@ -619,14 +644,14 @@ func (c *Client) doReg(ctx context.Context, url string, typ string, acct *Accoun req.Contact = acct.Contact req.Agreement = acct.AgreedTerms } - res, err := c.retryPostJWS(ctx, c.Key, url, req) + res, err := c.post(ctx, c.Key, url, req, wantStatus( + http.StatusOK, // updates and deletes + http.StatusCreated, // new account creation + )) if err != nil { return nil, err } defer res.Body.Close() - if res.StatusCode < 200 || res.StatusCode > 299 { - return nil, responseError(res) - } var v struct { Contact []string @@ -656,59 +681,6 @@ func (c *Client) doReg(ctx context.Context, url string, typ string, acct *Accoun }, nil } -// retryPostJWS will retry calls to postJWS if there is a badNonce error, -// clearing the stored nonces after each error. -// If the response was 4XX-5XX, then responseError is called on the body, -// the body is closed, and the error returned. -func (c *Client) retryPostJWS(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, error) { - sleep := sleeper(ctx) - for { - res, err := c.postJWS(ctx, key, url, body) - if err != nil { - return nil, err - } - // handle errors 4XX-5XX with responseError - if res.StatusCode >= 400 && res.StatusCode <= 599 { - err := responseError(res) - res.Body.Close() - // according to spec badNonce is urn:ietf:params:acme:error:badNonce - // however, acme servers in the wild return their version of the error - // https://tools.ietf.org/html/draft-ietf-acme-acme-02#section-5.4 - if ae, ok := err.(*Error); ok && strings.HasSuffix(strings.ToLower(ae.ProblemType), ":badnonce") { - // clear any nonces that we might've stored that might now be - // considered bad - c.clearNonces() - retry := res.Header.Get("Retry-After") - if err := sleep(retry, 1); err != nil { - return nil, err - } - continue - } - return nil, err - } - return res, nil - } -} - -// postJWS signs the body with the given key and POSTs it to the provided url. -// The body argument must be JSON-serializable. -func (c *Client) postJWS(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, error) { - nonce, err := c.popNonce(ctx, url) - if err != nil { - return nil, err - } - b, err := jwsEncodeJSON(body, key, nonce) - if err != nil { - return nil, err - } - res, err := c.post(ctx, url, "application/jose+json", bytes.NewReader(b)) - if err != nil { - return nil, err - } - c.addNonce(res.Header) - return res, nil -} - // popNonce returns a nonce value previously stored with c.addNonce // or fetches a fresh one from the given URL. func (c *Client) popNonce(ctx context.Context, url string) (string, error) { @@ -749,58 +721,12 @@ func (c *Client) addNonce(h http.Header) { c.nonces[v] = struct{}{} } -func (c *Client) httpClient() *http.Client { - if c.HTTPClient != nil { - return c.HTTPClient - } - return http.DefaultClient -} - -func (c *Client) get(ctx context.Context, urlStr string) (*http.Response, error) { - req, err := http.NewRequest("GET", urlStr, nil) - if err != nil { - return nil, err - } - return c.do(ctx, req) -} - -func (c *Client) head(ctx context.Context, urlStr string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", urlStr, nil) - if err != nil { - return nil, err - } - return c.do(ctx, req) -} - -func (c *Client) post(ctx context.Context, urlStr, contentType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", urlStr, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", contentType) - return c.do(ctx, req) -} - -func (c *Client) do(ctx context.Context, req *http.Request) (*http.Response, error) { - res, err := c.httpClient().Do(req.WithContext(ctx)) +func (c *Client) fetchNonce(ctx context.Context, url string) (string, error) { + r, err := http.NewRequest("HEAD", url, nil) if err != nil { - select { - case <-ctx.Done(): - // Prefer the unadorned context error. - // (The acme package had tests assuming this, previously from ctxhttp's - // behavior, predating net/http supporting contexts natively) - // TODO(bradfitz): reconsider this in the future. But for now this - // requires no test updates. - return nil, ctx.Err() - default: - return nil, err - } + return "", err } - return res, nil -} - -func (c *Client) fetchNonce(ctx context.Context, url string) (string, error) { - resp, err := c.head(ctx, url) + resp, err := c.doNoRetry(ctx, r) if err != nil { return "", err } @@ -852,24 +778,6 @@ func (c *Client) responseCert(ctx context.Context, res *http.Response, bundle bo return cert, nil } -// responseError creates an error of Error type from resp. -func responseError(resp *http.Response) error { - // don't care if ReadAll returns an error: - // json.Unmarshal will fail in that case anyway - b, _ := ioutil.ReadAll(resp.Body) - e := &wireError{Status: resp.StatusCode} - if err := json.Unmarshal(b, e); err != nil { - // this is not a regular error response: - // populate detail with anything we received, - // e.Status will already contain HTTP response code value - e.Detail = string(b) - if e.Detail == "" { - e.Detail = resp.Status - } - } - return e.error(resp.Header) -} - // chainCert fetches CA certificate chain recursively by following "up" links. // Each recursive call increments the depth by 1, resulting in an error // if the recursion level reaches maxChainLen. @@ -880,14 +788,11 @@ func (c *Client) chainCert(ctx context.Context, url string, depth int) ([][]byte return nil, errors.New("acme: certificate chain is too deep") } - res, err := c.get(ctx, url) + res, err := c.get(ctx, url, wantStatus(http.StatusOK)) if err != nil { return nil, err } defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return nil, responseError(res) - } b, err := ioutil.ReadAll(io.LimitReader(res.Body, maxCertSize+1)) if err != nil { return nil, err @@ -932,65 +837,6 @@ func linkHeader(h http.Header, rel string) []string { return links } -// sleeper returns a function that accepts the Retry-After HTTP header value -// and an increment that's used with backoff to increasingly sleep on -// consecutive calls until the context is done. If the Retry-After header -// cannot be parsed, then backoff is used with a maximum sleep time of 10 -// seconds. -func sleeper(ctx context.Context) func(ra string, inc int) error { - var count int - return func(ra string, inc int) error { - count += inc - d := backoff(count, 10*time.Second) - d = retryAfter(ra, d) - wakeup := time.NewTimer(d) - defer wakeup.Stop() - select { - case <-ctx.Done(): - return ctx.Err() - case <-wakeup.C: - return nil - } - } -} - -// retryAfter parses a Retry-After HTTP header value, -// trying to convert v into an int (seconds) or use http.ParseTime otherwise. -// It returns d if v cannot be parsed. -func retryAfter(v string, d time.Duration) time.Duration { - if i, err := strconv.Atoi(v); err == nil { - return time.Duration(i) * time.Second - } - t, err := http.ParseTime(v) - if err != nil { - return d - } - return t.Sub(timeNow()) -} - -// backoff computes a duration after which an n+1 retry iteration should occur -// using truncated exponential backoff algorithm. -// -// The n argument is always bounded between 0 and 30. -// The max argument defines upper bound for the returned value. -func backoff(n int, max time.Duration) time.Duration { - if n < 0 { - n = 0 - } - if n > 30 { - n = 30 - } - var d time.Duration - if x, err := rand.Int(rand.Reader, big.NewInt(1000)); err == nil { - d = time.Duration(x.Int64()) * time.Millisecond - } - d += time.Duration(1<<uint(n)) * time.Second - if d > max { - return max - } - return d -} - // keyAuth generates a key authorization string for a given token. func keyAuth(pub crypto.PublicKey, token string) (string, error) { th, err := JWKThumbprint(pub) @@ -1000,15 +846,25 @@ func keyAuth(pub crypto.PublicKey, token string) (string, error) { return fmt.Sprintf("%s.%s", token, th), nil } +// defaultTLSChallengeCertTemplate is a template used to create challenge certs for TLS challenges. +func defaultTLSChallengeCertTemplate() *x509.Certificate { + return &x509.Certificate{ + SerialNumber: big.NewInt(1), + NotBefore: time.Now(), + NotAfter: time.Now().Add(24 * time.Hour), + BasicConstraintsValid: true, + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + } +} + // tlsChallengeCert creates a temporary certificate for TLS-SNI challenges // with the given SANs and auto-generated public/private key pair. // The Subject Common Name is set to the first SAN to aid debugging. // To create a cert with a custom key pair, specify WithKey option. func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { - var ( - key crypto.Signer - tmpl *x509.Certificate - ) + var key crypto.Signer + tmpl := defaultTLSChallengeCertTemplate() for _, o := range opt { switch o := o.(type) { case *certOptKey: @@ -1017,7 +873,7 @@ func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { } key = o.key case *certOptTemplate: - var t = *(*x509.Certificate)(o) // shallow copy is ok + t := *(*x509.Certificate)(o) // shallow copy is ok tmpl = &t default: // package's fault, if we let this happen: @@ -1030,16 +886,6 @@ func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { return tls.Certificate{}, err } } - if tmpl == nil { - tmpl = &x509.Certificate{ - SerialNumber: big.NewInt(1), - NotBefore: time.Now(), - NotAfter: time.Now().Add(24 * time.Hour), - BasicConstraintsValid: true, - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, - } - } tmpl.DNSNames = san if len(san) > 0 { tmpl.Subject.CommonName = san[0] diff --git a/vendor/golang.org/x/crypto/acme/http.go b/vendor/golang.org/x/crypto/acme/http.go new file mode 100644 index 00000000..a43ce6a5 --- /dev/null +++ b/vendor/golang.org/x/crypto/acme/http.go @@ -0,0 +1,281 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package acme + +import ( + "bytes" + "context" + "crypto" + "crypto/rand" + "encoding/json" + "fmt" + "io/ioutil" + "math/big" + "net/http" + "strconv" + "strings" + "time" +) + +// retryTimer encapsulates common logic for retrying unsuccessful requests. +// It is not safe for concurrent use. +type retryTimer struct { + // backoffFn provides backoff delay sequence for retries. + // See Client.RetryBackoff doc comment. + backoffFn func(n int, r *http.Request, res *http.Response) time.Duration + // n is the current retry attempt. + n int +} + +func (t *retryTimer) inc() { + t.n++ +} + +// backoff pauses the current goroutine as described in Client.RetryBackoff. +func (t *retryTimer) backoff(ctx context.Context, r *http.Request, res *http.Response) error { + d := t.backoffFn(t.n, r, res) + if d <= 0 { + return fmt.Errorf("acme: no more retries for %s; tried %d time(s)", r.URL, t.n) + } + wakeup := time.NewTimer(d) + defer wakeup.Stop() + select { + case <-ctx.Done(): + return ctx.Err() + case <-wakeup.C: + return nil + } +} + +func (c *Client) retryTimer() *retryTimer { + f := c.RetryBackoff + if f == nil { + f = defaultBackoff + } + return &retryTimer{backoffFn: f} +} + +// defaultBackoff provides default Client.RetryBackoff implementation +// using a truncated exponential backoff algorithm, +// as described in Client.RetryBackoff. +// +// The n argument is always bounded between 1 and 30. +// The returned value is always greater than 0. +func defaultBackoff(n int, r *http.Request, res *http.Response) time.Duration { + const max = 10 * time.Second + var jitter time.Duration + if x, err := rand.Int(rand.Reader, big.NewInt(1000)); err == nil { + // Set the minimum to 1ms to avoid a case where + // an invalid Retry-After value is parsed into 0 below, + // resulting in the 0 returned value which would unintentionally + // stop the retries. + jitter = (1 + time.Duration(x.Int64())) * time.Millisecond + } + if v, ok := res.Header["Retry-After"]; ok { + return retryAfter(v[0]) + jitter + } + + if n < 1 { + n = 1 + } + if n > 30 { + n = 30 + } + d := time.Duration(1<<uint(n-1))*time.Second + jitter + if d > max { + return max + } + return d +} + +// retryAfter parses a Retry-After HTTP header value, +// trying to convert v into an int (seconds) or use http.ParseTime otherwise. +// It returns zero value if v cannot be parsed. +func retryAfter(v string) time.Duration { + if i, err := strconv.Atoi(v); err == nil { + return time.Duration(i) * time.Second + } + t, err := http.ParseTime(v) + if err != nil { + return 0 + } + return t.Sub(timeNow()) +} + +// resOkay is a function that reports whether the provided response is okay. +// It is expected to keep the response body unread. +type resOkay func(*http.Response) bool + +// wantStatus returns a function which reports whether the code +// matches the status code of a response. +func wantStatus(codes ...int) resOkay { + return func(res *http.Response) bool { + for _, code := range codes { + if code == res.StatusCode { + return true + } + } + return false + } +} + +// get issues an unsigned GET request to the specified URL. +// It returns a non-error value only when ok reports true. +// +// get retries unsuccessful attempts according to c.RetryBackoff +// until the context is done or a non-retriable error is received. +func (c *Client) get(ctx context.Context, url string, ok resOkay) (*http.Response, error) { + retry := c.retryTimer() + for { + req, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil, err + } + res, err := c.doNoRetry(ctx, req) + switch { + case err != nil: + return nil, err + case ok(res): + return res, nil + case isRetriable(res.StatusCode): + retry.inc() + resErr := responseError(res) + res.Body.Close() + // Ignore the error value from retry.backoff + // and return the one from last retry, as received from the CA. + if retry.backoff(ctx, req, res) != nil { + return nil, resErr + } + default: + defer res.Body.Close() + return nil, responseError(res) + } + } +} + +// post issues a signed POST request in JWS format using the provided key +// to the specified URL. +// It returns a non-error value only when ok reports true. +// +// post retries unsuccessful attempts according to c.RetryBackoff +// until the context is done or a non-retriable error is received. +// It uses postNoRetry to make individual requests. +func (c *Client) post(ctx context.Context, key crypto.Signer, url string, body interface{}, ok resOkay) (*http.Response, error) { + retry := c.retryTimer() + for { + res, req, err := c.postNoRetry(ctx, key, url, body) + if err != nil { + return nil, err + } + if ok(res) { + return res, nil + } + resErr := responseError(res) + res.Body.Close() + switch { + // Check for bad nonce before isRetriable because it may have been returned + // with an unretriable response code such as 400 Bad Request. + case isBadNonce(resErr): + // Consider any previously stored nonce values to be invalid. + c.clearNonces() + case !isRetriable(res.StatusCode): + return nil, resErr + } + retry.inc() + // Ignore the error value from retry.backoff + // and return the one from last retry, as received from the CA. + if err := retry.backoff(ctx, req, res); err != nil { + return nil, resErr + } + } +} + +// postNoRetry signs the body with the given key and POSTs it to the provided url. +// The body argument must be JSON-serializable. +// It is used by c.post to retry unsuccessful attempts. +func (c *Client) postNoRetry(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, *http.Request, error) { + nonce, err := c.popNonce(ctx, url) + if err != nil { + return nil, nil, err + } + b, err := jwsEncodeJSON(body, key, nonce) + if err != nil { + return nil, nil, err + } + req, err := http.NewRequest("POST", url, bytes.NewReader(b)) + if err != nil { + return nil, nil, err + } + req.Header.Set("Content-Type", "application/jose+json") + res, err := c.doNoRetry(ctx, req) + if err != nil { + return nil, nil, err + } + c.addNonce(res.Header) + return res, req, nil +} + +// doNoRetry issues a request req, replacing its context (if any) with ctx. +func (c *Client) doNoRetry(ctx context.Context, req *http.Request) (*http.Response, error) { + res, err := c.httpClient().Do(req.WithContext(ctx)) + if err != nil { + select { + case <-ctx.Done(): + // Prefer the unadorned context error. + // (The acme package had tests assuming this, previously from ctxhttp's + // behavior, predating net/http supporting contexts natively) + // TODO(bradfitz): reconsider this in the future. But for now this + // requires no test updates. + return nil, ctx.Err() + default: + return nil, err + } + } + return res, nil +} + +func (c *Client) httpClient() *http.Client { + if c.HTTPClient != nil { + return c.HTTPClient + } + return http.DefaultClient +} + +// isBadNonce reports whether err is an ACME "badnonce" error. +func isBadNonce(err error) bool { + // According to the spec badNonce is urn:ietf:params:acme:error:badNonce. + // However, ACME servers in the wild return their versions of the error. + // See https://tools.ietf.org/html/draft-ietf-acme-acme-02#section-5.4 + // and https://github.com/letsencrypt/boulder/blob/0e07eacb/docs/acme-divergences.md#section-66. + ae, ok := err.(*Error) + return ok && strings.HasSuffix(strings.ToLower(ae.ProblemType), ":badnonce") +} + +// isRetriable reports whether a request can be retried +// based on the response status code. +// +// Note that a "bad nonce" error is returned with a non-retriable 400 Bad Request code. +// Callers should parse the response and check with isBadNonce. +func isRetriable(code int) bool { + return code <= 399 || code >= 500 || code == http.StatusTooManyRequests +} + +// responseError creates an error of Error type from resp. +func responseError(resp *http.Response) error { + // don't care if ReadAll returns an error: + // json.Unmarshal will fail in that case anyway + b, _ := ioutil.ReadAll(resp.Body) + e := &wireError{Status: resp.StatusCode} + if err := json.Unmarshal(b, e); err != nil { + // this is not a regular error response: + // populate detail with anything we received, + // e.Status will already contain HTTP response code value + e.Detail = string(b) + if e.Detail == "" { + e.Detail = resp.Status + } + } + return e.error(resp.Header) +} diff --git a/vendor/golang.org/x/crypto/acme/types.go b/vendor/golang.org/x/crypto/acme/types.go index 3e199749..54792c06 100644 --- a/vendor/golang.org/x/crypto/acme/types.go +++ b/vendor/golang.org/x/crypto/acme/types.go @@ -104,7 +104,7 @@ func RateLimit(err error) (time.Duration, bool) { if e.Header == nil { return 0, true } - return retryAfter(e.Header.Get("Retry-After"), 0), true + return retryAfter(e.Header.Get("Retry-After")), true } // Account is a user account. It is associated with a private key. @@ -296,8 +296,8 @@ func (e *wireError) error(h http.Header) *Error { } } -// CertOption is an optional argument type for the TLSSNIxChallengeCert methods for -// customizing a temporary certificate for TLS-SNI challenges. +// CertOption is an optional argument type for the TLS ChallengeCert methods for +// customizing a temporary certificate for TLS-based challenges. type CertOption interface { privateCertOpt() } @@ -317,7 +317,7 @@ func (*certOptKey) privateCertOpt() {} // WithTemplate creates an option for specifying a certificate template. // See x509.CreateCertificate for template usage details. // -// In TLSSNIxChallengeCert methods, the template is also used as parent, +// In TLS ChallengeCert methods, the template is also used as parent, // resulting in a self-signed certificate. // The DNSNames field of t is always overwritten for tls-sni challenge certs. func WithTemplate(t *x509.Certificate) CertOption { diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE index 8dada3ed..866d74a7 100644 --- a/vendor/gopkg.in/yaml.v2/LICENSE +++ b/vendor/gopkg.in/yaml.v2/LICENSE @@ -1,201 +1,13 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Copyright 2011-2016 Canonical Ltd. - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +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 - 1. Definitions. + http://www.apache.org/licenses/LICENSE-2.0 - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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. +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. diff --git a/vendor/vendor.json b/vendor/vendor.json index ab8aecfd..52086fd7 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -3,28 +3,28 @@ "ignore": "test", "package": [ { - "checksumSHA1": "gHJY2xf5fdCTGbBUf+QQba30lPA=", + "checksumSHA1": "raJx5BjBbVQG0ylGSjPpi+JvqjU=", "path": "git.autistici.org/ai3/go-common", - "revision": "1c931821c1fcd47c904e85850c1b4c811148c28f", - "revisionTime": "2018-05-24T08:55:40Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { - "checksumSHA1": "o+rWKVQIDy79ZwrItwa5/whAL6g=", + "checksumSHA1": "49MChcx9D+/+pCyl/F469TcQcK4=", "path": "git.autistici.org/ai3/go-common/clientutil", - "revision": "1c931821c1fcd47c904e85850c1b4c811148c28f", - "revisionTime": "2018-05-24T08:55:40Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { "checksumSHA1": "7VBLbwaK1m/jwsk8sLsh4iD9T/s=", "path": "git.autistici.org/ai3/go-common/serverutil", - "revision": "1c931821c1fcd47c904e85850c1b4c811148c28f", - "revisionTime": "2018-05-24T08:55:40Z" + "revision": "39b1908a9e399db1a0ceebb0fe4f3d3c35298357", + "revisionTime": "2018-08-17T06:38:25Z" }, { - "checksumSHA1": "QZLvJV+CttBnZ0wK5D3XlKjKq0I=", + "checksumSHA1": "zCVstnZ23vTfA6oKC389y6Opglw=", "path": "git.autistici.org/ai3/replds", - "revision": "47130d7caf4b0cfc8c445cdeee0d993a779ece60", - "revisionTime": "2018-05-24T08:58:05Z" + "revision": "a60c057e6e543d8842e83cbdd770350a4228fa2a", + "revisionTime": "2018-08-17T07:17:02Z" }, { "checksumSHA1": "spyv5/YFBjYyZLZa1U2LBfDR8PM=", @@ -33,22 +33,22 @@ "revisionTime": "2016-08-04T10:47:26Z" }, { - "checksumSHA1": "hTThB1Cw2ue02RD5Oig4eu1Dkzk=", + "checksumSHA1": "EAUmmJ4ccZbyuyf8Fnf+KU+DH3w=", "path": "github.com/cenkalti/backoff", - "revision": "309aa717adbf351e92864cbedf9cca0b769a4b5a", - "revisionTime": "2017-10-07T11:45:50Z" + "revision": "b7325b0f3f1097c6546ea5e83c4a23267e58ad71", + "revisionTime": "2018-08-01T15:21:24Z" }, { "checksumSHA1": "+Zz+leZHHC9C0rx8DoRuffSRPso=", "path": "github.com/coreos/go-systemd/daemon", - "revision": "d2196463941895ee908e13531a23a39feb9e1243", - "revisionTime": "2017-07-31T11:19:25Z" + "revision": "1f9909e51b2dab2487c26d64c8f2e7e580e4c9f5", + "revisionTime": "2017-03-24T09:58:19Z" }, { - "checksumSHA1": "Pyou8mceOASSFxc7GeXZuVdSMi0=", + "checksumSHA1": "yqF125xVSkmfLpIVGrLlfE05IUk=", "path": "github.com/golang/protobuf/proto", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z" + "revision": "1e59b77b52bf8e4b449a57e6f79f21226d571845", + "revisionTime": "2017-11-13T18:07:20Z" }, { "checksumSHA1": "t1nayUUugNoJWht7p4cbKyWuk8Q=", @@ -62,41 +62,47 @@ "revision": "c12348ce28de40eed0136aa2b644d0ee0650e56c", "revisionTime": "2016-04-24T11:30:07Z" }, + { + "checksumSHA1": "Ovc3HTFXmFFlk8i1tf+4hEu3bx4=", + "path": "github.com/miekg/dns", + "revision": "874ec871288a738d8d87fd5cec1dd71e88fdacb2", + "revisionTime": "2015-09-23T21:02:39Z" + }, { "checksumSHA1": "hu0MsbTdFzZxNRyAxe2HmTFFFak=", "path": "github.com/prometheus/client_golang/prometheus", - "revision": "5cec1d0429b02e4323e042eb04dafdb079ddf568", - "revisionTime": "2017-10-05T11:29:15Z" + "revision": "661e31bf844dfca9aeba15f27ea8aa0d485ad212", + "revisionTime": "2017-12-01T12:22:22Z" }, { "checksumSHA1": "wsAkYlRRUNx+OAuUOIqdjO7dICM=", "path": "github.com/prometheus/client_golang/prometheus/promhttp", - "revision": "5cec1d0429b02e4323e042eb04dafdb079ddf568", - "revisionTime": "2017-10-05T11:29:15Z" + "revision": "661e31bf844dfca9aeba15f27ea8aa0d485ad212", + "revisionTime": "2017-12-01T12:22:22Z" }, { "checksumSHA1": "DvwvOlPNAgRntBzt3b3OSRMS2N4=", "path": "github.com/prometheus/client_model/go", - "revision": "6f3806018612930941127f2a7c6c453ba2c527d2", - "revisionTime": "2017-02-16T18:52:47Z" + "revision": "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c", + "revisionTime": "2017-11-17T10:05:41Z" }, { "checksumSHA1": "xfnn0THnqNwjwimeTClsxahYrIo=", "path": "github.com/prometheus/common/expfmt", - "revision": "e3fb1a1acd7605367a2b378bc2e2f893c05174b7", - "revisionTime": "2017-11-04T09:59:07Z" + "revision": "2e54d0b93cba2fd133edc32211dcc32c06ef72ca", + "revisionTime": "2017-11-17T16:30:51Z" }, { "checksumSHA1": "GWlM3d2vPYyNATtTFgftS10/A9w=", "path": "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg", - "revision": "e3fb1a1acd7605367a2b378bc2e2f893c05174b7", - "revisionTime": "2017-11-04T09:59:07Z" + "revision": "2e54d0b93cba2fd133edc32211dcc32c06ef72ca", + "revisionTime": "2017-11-17T16:30:51Z" }, { - "checksumSHA1": "3VoqH7TFfzA6Ds0zFzIbKCUvBmw=", + "checksumSHA1": "YU+/K48IMawQnToO4ETE6a+hhj4=", "path": "github.com/prometheus/common/model", - "revision": "e3fb1a1acd7605367a2b378bc2e2f893c05174b7", - "revisionTime": "2017-11-04T09:59:07Z" + "revision": "2e54d0b93cba2fd133edc32211dcc32c06ef72ca", + "revisionTime": "2017-11-17T16:30:51Z" }, { "checksumSHA1": "pW1yt1G1J9jnQMCxr1TDI7LQr3s=", @@ -111,22 +117,22 @@ "revisionTime": "2017-10-17T21:40:25Z" }, { - "checksumSHA1": "zHLlCNnnX/KNVue2tHr+FWxbszA=", + "checksumSHA1": "FBc8PNxDwtV1tPS4LzJAX2oGNqM=", "path": "golang.org/x/crypto/acme", - "revision": "4ec37c66abab2c7e02ae775328b2ff001c3f025a", - "revisionTime": "2018-05-05T00:22:42Z" + "revision": "a49355c7e3f8fe157a85be2f77e6e269a0f89602", + "revisionTime": "2018-06-20T09:14:27Z" }, { "checksumSHA1": "GtamqiJoL7PGHsN454AoffBFMa8=", "path": "golang.org/x/net/context", - "revision": "f73e4c9ed3b7ebdd5f699a16a880c2b1994e50dd", - "revisionTime": "2018-05-08T00:58:03Z" + "revision": "c39426892332e1bb5ec0a434a079bf82f5d30c54", + "revisionTime": "2018-07-15T06:54:04Z" }, { - "checksumSHA1": "RDJpJQwkF012L6m/2BJizyOksNw=", + "checksumSHA1": "o20lmjzBQyKD5LfLZ3OhUoMkLds=", "path": "gopkg.in/yaml.v2", - "revision": "eb3733d160e74a9c7e442f435eb3bea458e1d19f", - "revisionTime": "2017-08-12T16:00:11Z" + "revision": "25c4ec802a7d637f88d584ab26798e94ad14c13b", + "revisionTime": "2017-07-21T12:20:51Z" } ], "rootPath": "git.autistici.org/ai3/acmeserver" -- GitLab