aboutsummaryrefslogtreecommitdiff
path: root/src/lib/net/ip.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-05-07 17:36:29 -0700
committerRuss Cox <rsc@golang.org>2009-05-07 17:36:29 -0700
commit97bc222d5cb888cce280b50b0c9ddf8f60c0ffa3 (patch)
tree5f9507053f5e61740dc62996021a69e279e5fa82 /src/lib/net/ip.go
parent93bbbf90ef652c144801fb677de458f8ab7e1ded (diff)
downloadgo-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.go13
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 {