diff options
| author | Russ Cox <rsc@golang.org> | 2009-05-07 17:36:29 -0700 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2009-05-07 17:36:29 -0700 |
| commit | 97bc222d5cb888cce280b50b0c9ddf8f60c0ffa3 (patch) | |
| tree | 5f9507053f5e61740dc62996021a69e279e5fa82 /src/lib/net/ip.go | |
| parent | 93bbbf90ef652c144801fb677de458f8ab7e1ded (diff) | |
| download | go-97bc222d5cb888cce280b50b0c9ddf8f60c0ffa3.tar.xz | |
another attempt at avoiding IPv6 when it's not supported.
dsymonds confirms that this one works.
R=r
DELTA=50 (23 added, 17 deleted, 10 changed)
OCL=28433
CL=28444
Diffstat (limited to 'src/lib/net/ip.go')
| -rw-r--r-- | src/lib/net/ip.go | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/net/ip.go b/src/lib/net/ip.go index 717541b8c5..774f048ca8 100644 --- a/src/lib/net/ip.go +++ b/src/lib/net/ip.go @@ -42,7 +42,7 @@ type IPMask []byte; // IPv4 returns the IP address (in 16-byte form) of the // IPv4 address a.b.c.d. func IPv4(a, b, c, d byte) IP { - p := make([]byte, IPv6len); + p := make(IP, IPv6len); for i := 0; i < 10; i++ { p[i] = 0 } @@ -60,6 +60,7 @@ var ( IPv4bcast = IPv4(255, 255, 255, 255); // broadcast IPv4allsys = IPv4(224, 0, 0, 1); // all systems IPv4allrouter = IPv4(224, 0, 0, 2); // all routers + IPv4zero = IPv4(0, 0, 0, 0); // all zeros ) // Well-known IPv6 addresses @@ -68,7 +69,7 @@ var ( ) // Is p all zeros? -func isZeros(p []byte) bool { +func isZeros(p IP) bool { for i := 0; i < len(p); i++ { if p[i] != 0 { return false @@ -106,9 +107,9 @@ func (ip IP) To16() IP { // Default route masks for IPv4. var ( - classAMask IPMask = IPv4(0xff, 0, 0, 0); - classBMask IPMask = IPv4(0xff, 0xff, 0, 0); - classCMask IPMask = IPv4(0xff, 0xff, 0xff, 0); + classAMask = IPMask(IPv4(0xff, 0, 0, 0)); + classBMask = IPMask(IPv4(0xff, 0xff, 0, 0)); + classCMask = IPMask(IPv4(0xff, 0xff, 0xff, 0)); ) // DefaultMask returns the default IP mask for the IP address ip. @@ -227,7 +228,7 @@ func (ip IP) String() string { // If mask is a sequence of 1 bits followed by 0 bits, // return the number of 1 bits. -func simpleMaskLength(mask IP) int { +func simpleMaskLength(mask IPMask) int { var i int; for i = 0; i < len(mask); i++ { if mask[i] != 0xFF { |
