This file is indexed.

/usr/share/gocode/src/github.com/docker/libnetwork/driverapi/driverapi_test.go is in golang-github-docker-libnetwork-dev 0.8.0-dev.2+git20170202.599.45b4086-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package driverapi

import (
	"encoding/json"
	"net"
	"testing"

	_ "github.com/docker/libnetwork/testutils"
	"github.com/docker/libnetwork/types"
)

func TestIPDataMarshalling(t *testing.T) {
	i := &IPAMData{
		AddressSpace: "giallo",
		Pool:         &net.IPNet{IP: net.IP{10, 10, 10, 8}, Mask: net.IPMask{255, 255, 255, 0}},
		Gateway:      &net.IPNet{IP: net.IP{10, 10, 10, 254}, Mask: net.IPMask{255, 255, 255, 0}},
		AuxAddresses: map[string]*net.IPNet{
			"ip1": {IP: net.IP{10, 10, 10, 1}, Mask: net.IPMask{255, 255, 255, 0}},
			"ip2": {IP: net.IP{10, 10, 10, 2}, Mask: net.IPMask{255, 255, 255, 0}},
		},
	}

	b, err := json.Marshal(i)
	if err != nil {
		t.Fatal(err)
	}

	ii := &IPAMData{}
	err = json.Unmarshal(b, &ii)
	if err != nil {
		t.Fatal(err)
	}

	if i.AddressSpace != ii.AddressSpace || !types.CompareIPNet(i.Pool, ii.Pool) ||
		!types.CompareIPNet(i.Gateway, ii.Gateway) ||
		!compareAddresses(i.AuxAddresses, ii.AuxAddresses) {
		t.Fatalf("JSON marsh/unmarsh failed.\nOriginal:\n%s\nDecoded:\n%s", i, ii)
	}
}

func compareAddresses(a, b map[string]*net.IPNet) bool {
	if len(a) != len(b) {
		return false
	}
	if len(a) > 0 {
		for k := range a {
			if !types.CompareIPNet(a[k], b[k]) {
				return false
			}
		}
	}
	return true
}

func TestValidateAndIsV6(t *testing.T) {
	var err error

	i := &IPAMData{
		Pool:    &net.IPNet{IP: net.IP{10, 10, 10, 8}, Mask: net.IPMask{255, 255, 255, 0}},
		Gateway: &net.IPNet{IP: net.IP{10, 10, 10, 254}, Mask: net.IPMask{255, 255, 255, 0}},
		AuxAddresses: map[string]*net.IPNet{
			"ip1": {IP: net.IP{10, 10, 10, 1}, Mask: net.IPMask{255, 255, 255, 0}},
			"ip2": {IP: net.IP{10, 10, 10, 2}, Mask: net.IPMask{255, 255, 255, 0}},
		},
	}

	// Check ip version
	if i.IsV6() {
		t.Fatalf("incorrect ip version returned")
	}
	orig := i.Pool
	if i.Pool, err = types.ParseCIDR("2001:db8::33/64"); err != nil {
		t.Fatal(err)
	}
	if !i.IsV6() {
		t.Fatalf("incorrect ip version returned")
	}
	i.Pool = orig

	// valid ip data
	if err = i.Validate(); err != nil {
		t.Fatal(err)
	}

	// incongruent gw ver
	if i.Gateway, err = types.ParseCIDR("2001:db8::45/65"); err != nil {
		t.Fatal(err)
	}
	if err = i.Validate(); err == nil {
		t.Fatalf("expected error but succeeded")
	}
	i.Gateway = nil

	// incongruent secondary ip ver
	if i.AuxAddresses["ip2"], err = types.ParseCIDR("2001:db8::44/80"); err != nil {
		t.Fatal(err)
	}
	if err = i.Validate(); err == nil {
		t.Fatalf("expected error but succeeded")
	}
	delete(i.AuxAddresses, "ip2")

	// gw outside pool
	if i.Gateway, err = types.ParseCIDR("10.10.15.254/24"); err != nil {
		t.Fatal(err)
	}
	if err = i.Validate(); err == nil {
		t.Fatalf("expected error but succeeded")
	}
	i.Gateway = nil

	// sec ip outside of pool
	if i.AuxAddresses["ip1"], err = types.ParseCIDR("10.10.2.1/24"); err != nil {
		t.Fatal(err)
	}
	if err = i.Validate(); err == nil {
		t.Fatalf("expected error but succeeded")
	}
}