1 |
/* Inet4Address.java -- |
/* Inet4Address.java -- |
2 |
Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. |
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
3 |
|
|
4 |
This file is part of GNU Classpath. |
This file is part of GNU Classpath. |
5 |
|
|
39 |
package java.net; |
package java.net; |
40 |
|
|
41 |
import java.io.ObjectStreamException; |
import java.io.ObjectStreamException; |
|
import java.util.Arrays; |
|
42 |
|
|
43 |
/* |
/* |
44 |
* Written using on-line Java Platform 1.4 API Specification and |
* Written using on-line Java Platform 1.4 API Specification and |
84 |
*/ |
*/ |
85 |
public boolean isMulticastAddress() |
public boolean isMulticastAddress() |
86 |
{ |
{ |
87 |
return (addr[0] & 0xF0) == 0xE0; |
return super.isMulticastAddress(); |
88 |
} |
} |
89 |
|
|
90 |
/** |
/** |
92 |
*/ |
*/ |
93 |
public boolean isLoopbackAddress() |
public boolean isLoopbackAddress() |
94 |
{ |
{ |
95 |
return addr[0] == 0x7F; |
return super.isLoopbackAddress(); |
96 |
} |
} |
97 |
|
|
98 |
/** |
/** |
102 |
*/ |
*/ |
103 |
public boolean isAnyLocalAddress() |
public boolean isAnyLocalAddress() |
104 |
{ |
{ |
105 |
byte[] anylocal = { 0, 0, 0, 0 }; |
return super.isAnyLocalAddress(); |
|
|
|
|
return Arrays.equals(addr, anylocal); |
|
106 |
} |
} |
107 |
|
|
108 |
/** |
/** |
112 |
*/ |
*/ |
113 |
public boolean isLinkLocalAddress() |
public boolean isLinkLocalAddress() |
114 |
{ |
{ |
115 |
// XXX: This seems to not exist with IPv4 addresses |
return super.isLinkLocalAddress(); |
|
return false; |
|
116 |
} |
} |
117 |
|
|
118 |
/** |
/** |
122 |
*/ |
*/ |
123 |
public boolean isSiteLocalAddress() |
public boolean isSiteLocalAddress() |
124 |
{ |
{ |
125 |
// 10.0.0.0/8 |
return super.isSiteLocalAddress(); |
|
if (addr[0] == 0x0A) |
|
|
return true; |
|
|
|
|
|
// XXX: Suns JDK 1.4.1 (on Linux) seems to have a bug here: |
|
|
// it says 172.16.0.0 - 172.255.255.255 are site local addresses |
|
|
// |
|
|
// 172.16.0.0/12 |
|
|
if (addr[0] == 0xAC && (addr[1] & 0xF0) == 0x01) |
|
|
return true; |
|
|
|
|
|
// 192.168.0.0/16 |
|
|
if (addr[0] == 0xC0 && addr[1] == 0xA8) |
|
|
return true; |
|
|
|
|
|
// XXX: Do we need to check more addresses here ? |
|
|
return false; |
|
126 |
} |
} |
127 |
|
|
128 |
/** |
/** |
132 |
*/ |
*/ |
133 |
public boolean isMCGlobal() |
public boolean isMCGlobal() |
134 |
{ |
{ |
135 |
// XXX: This seems to net exist with IPv4 addresses |
return super.isMCGlobal(); |
|
return false; |
|
136 |
} |
} |
137 |
|
|
138 |
/** |
/** |
142 |
*/ |
*/ |
143 |
public boolean isMCNodeLocal() |
public boolean isMCNodeLocal() |
144 |
{ |
{ |
145 |
// XXX: This seems to net exist with IPv4 addresses |
return isMCNodeLocal(); |
|
return false; |
|
146 |
} |
} |
147 |
|
|
148 |
/** |
/** |
152 |
*/ |
*/ |
153 |
public boolean isMCLinkLocal() |
public boolean isMCLinkLocal() |
154 |
{ |
{ |
155 |
if (! isMulticastAddress()) |
return super.isMCLinkLocal(); |
|
return false; |
|
|
|
|
|
return (addr[0] == 0xE0) && (addr[1] == 0x00) && (addr[2] == 0x00); |
|
156 |
} |
} |
157 |
|
|
158 |
/** |
/** |
162 |
*/ |
*/ |
163 |
public boolean isMCSiteLocal() |
public boolean isMCSiteLocal() |
164 |
{ |
{ |
165 |
// XXX: This seems to net exist with IPv4 addresses |
return super.isMCSiteLocal(); |
|
return false; |
|
166 |
} |
} |
167 |
|
|
168 |
/** |
/** |
172 |
*/ |
*/ |
173 |
public boolean isMCOrgLocal() |
public boolean isMCOrgLocal() |
174 |
{ |
{ |
175 |
// XXX: This seems to net exist with IPv4 addresses |
return isMCOrgLocal(); |
|
return false; |
|
176 |
} |
} |
177 |
|
|
178 |
/** |
/** |
190 |
*/ |
*/ |
191 |
public String getHostAddress() |
public String getHostAddress() |
192 |
{ |
{ |
193 |
StringBuffer sbuf = new StringBuffer(40); |
return super.getHostAddress(); |
|
int len = addr.length; |
|
|
int i = 0; |
|
|
|
|
|
for (;;) |
|
|
{ |
|
|
sbuf.append(addr[i] & 0xFF); |
|
|
i++; |
|
|
|
|
|
if (i == len) |
|
|
break; |
|
|
|
|
|
sbuf.append('.'); |
|
|
} |
|
|
|
|
|
return sbuf.toString(); |
|
194 |
} |
} |
195 |
|
|
196 |
/** |
/** |
230 |
|
|
231 |
return true; |
return true; |
232 |
} |
} |
233 |
} // class Inet4Address |
} |