Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-aarch32-jdk8u
Path: blob/jdk8u272-b10-aarch32-20201026/jdk/test/java/net/Inet6Address/serialize/Inet6AddressSerializationTest.java
48795 views
1
/*
2
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.io.ByteArrayInputStream;
25
import java.io.ByteArrayOutputStream;
26
import java.io.FileNotFoundException;
27
import java.io.FileOutputStream;
28
import java.io.IOException;
29
import java.io.ObjectInputStream;
30
import java.io.ObjectOutputStream;
31
import java.io.PrintStream;
32
import java.net.Inet6Address;
33
import java.net.InetAddress;
34
import java.net.NetworkInterface;
35
import java.net.UnknownHostException;
36
import java.util.ArrayList;
37
import java.util.Arrays;
38
import java.util.Enumeration;
39
import java.util.List;
40
41
/**
42
* @test
43
* @bug 8007373
44
* @summary jdk7 backward compatibility serialization problem
45
*/
46
47
public class Inet6AddressSerializationTest {
48
49
static boolean failed;
50
51
public static final int LOOPBACK_SCOPE_ID = 0;
52
53
public static final byte[] IN6ADDR_ANY_INIT = { (byte) 0x00, (byte) 0x00,
54
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
55
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
56
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };
57
58
public static final byte[] LOOPBACKIPV6ADDRESS = { (byte) 0x00,
59
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
60
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
61
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01 };
62
63
// fe80::21b:24ff:febd:f29c
64
public static final byte[] E1000G0IPV6ADDRESS = { (byte) 0xfe, (byte) 0x80,
65
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
66
(byte) 0x00, (byte) 0x02, (byte) 0x1b, (byte) 0x24, (byte) 0xff,
67
(byte) 0xfe, (byte) 0xbd, (byte) 0xf2, (byte) 0x9c };
68
69
public static final String E1000G0HOSTNAME = "fe80:0:0:0:21b:24ff:febd:f29c%e1000g0";
70
71
public static final String LOCALHOSTNAME = "localhost";
72
73
public static final String NETWORK_IF_E1000G0 = "e1000g0";
74
75
public static final String NETWORK_IF_LO0 = "lo0";
76
77
public static final int SCOPE_ID_E1000G0 = 2;
78
79
public static final int SCOPE_ID_LO0 = 1;
80
81
public static final int SCOPE_ID_ZERO = 0;
82
83
public static void main(String[] args) throws Exception {
84
// args[0] == generate-loopback generates serial data for loopback if
85
// args[0] == generateAll generates serial data for interfaces with an
86
// IPV6 address binding
87
88
if (args.length != 0) {
89
90
if (args[0].equals("generate-loopback")) {
91
92
generateSerializedInet6AddressData(Inet6Address.getByAddress(
93
InetAddress.getLoopbackAddress().getHostName(),
94
LOOPBACKIPV6ADDRESS, LOOPBACK_SCOPE_ID), System.out,
95
true);
96
97
} else {
98
generateAllInet6AddressSerializedData();
99
}
100
} else {
101
runTests();
102
}
103
}
104
105
private static void runTests() throws UnknownHostException, Exception,
106
IOException {
107
byte[] thisHostIPV6Address = null;
108
int scope_id = LOOPBACK_SCOPE_ID;
109
110
System.out.println("Hostname: "
111
+ InetAddress.getLocalHost().getHostName());
112
System.out.println("LocalHost isLoopback : "
113
+ InetAddress.getLocalHost().isLoopbackAddress());
114
thisHostIPV6Address = getThisHostIPV6Address(InetAddress.getLocalHost()
115
.getHostName());
116
117
if (thisHostIPV6Address == null) {
118
thisHostIPV6Address = IN6ADDR_ANY_INIT;
119
}
120
121
// testing JDK7 generated serialized loopback against locally generated
122
// loopback address
123
testInet6AddressSerialization(Inet6Address.getByAddress(InetAddress
124
.getLoopbackAddress().getHostName(), LOOPBACKIPV6ADDRESS,
125
scope_id), JDK7Inet6AddressSerialData);
126
// testing JDK8 generated serialized loopback against locally generated
127
// loopback address
128
testInet6AddressSerialization(Inet6Address.getByAddress(InetAddress
129
.getLoopbackAddress().getHostName(), LOOPBACKIPV6ADDRESS,
130
scope_id), JDK8Inet6AddressSerialData);
131
testInet6AddressSerialization(Inet6Address.getByAddress(InetAddress
132
.getLocalHost().getHostName(), IN6ADDR_ANY_INIT, scope_id),
133
null);
134
testInet6AddressSerialization(Inet6Address.getByAddress(InetAddress
135
.getLocalHost().getHostName(), thisHostIPV6Address, scope_id),
136
null);
137
testAllNetworkInterfaces();
138
139
// test against lo0
140
testSerializedLo0Inet6Address();
141
142
testSerializedE1000gInet6Address();
143
144
if (failed)
145
throw new RuntimeException("Some tests failed, check output");
146
}
147
148
private static byte[] getThisHostIPV6Address(String hostName)
149
throws Exception {
150
InetAddress[] thisHostIPAddresses = null;
151
try {
152
thisHostIPAddresses = InetAddress.getAllByName(InetAddress
153
.getLocalHost().getHostName());
154
} catch (UnknownHostException uhEx) {
155
uhEx.printStackTrace();
156
throw uhEx;
157
}
158
byte[] thisHostIPV6Address = null;
159
for (InetAddress inetAddress : thisHostIPAddresses) {
160
if (inetAddress instanceof Inet6Address) {
161
if (inetAddress.getHostName().equals(hostName)) {
162
thisHostIPV6Address = inetAddress.getAddress();
163
break;
164
}
165
}
166
}
167
// System.err.println("getThisHostIPV6Address: address is "
168
// + Arrays.toString(thisHostIPV6Address));
169
return thisHostIPV6Address;
170
}
171
172
static void testAllNetworkInterfaces() throws Exception {
173
System.err.println("\n testAllNetworkInterfaces: \n ");
174
for (Enumeration<NetworkInterface> e = NetworkInterface
175
.getNetworkInterfaces(); e.hasMoreElements();) {
176
NetworkInterface netIF = e.nextElement();
177
for (Enumeration<InetAddress> iadrs = netIF.getInetAddresses(); iadrs
178
.hasMoreElements();) {
179
InetAddress iadr = iadrs.nextElement();
180
if (iadr instanceof Inet6Address) {
181
System.err.println("Test NetworkInterface: " + netIF);
182
Inet6Address i6adr = (Inet6Address) iadr;
183
System.err.println("Testing with " + iadr);
184
System.err.println(" scoped iface: "
185
+ i6adr.getScopedInterface());
186
testInet6AddressSerialization(i6adr, null);
187
}
188
}
189
}
190
}
191
192
static void displayExpectedInet6Address(Inet6Address expectedInet6Address) {
193
194
String expectedHostName = expectedInet6Address.getHostName();
195
byte[] expectedAddress = expectedInet6Address.getAddress();
196
String expectedHostAddress = expectedInet6Address.getHostAddress();
197
int expectedScopeId = expectedInet6Address.getScopeId();
198
NetworkInterface expectedNetIf = expectedInet6Address
199
.getScopedInterface();
200
201
System.err.println("Excpected HostName: " + expectedHostName);
202
System.err.println("Expected Address: "
203
+ Arrays.toString(expectedAddress));
204
System.err.println("Expected HostAddress: " + expectedHostAddress);
205
System.err.println("Expected Scope Id " + expectedScopeId);
206
System.err.println("Expected NetworkInterface " + expectedNetIf);
207
System.err.println("Expected Inet6Address " + expectedInet6Address);
208
}
209
210
// test serialization deserialization of Inet6Address
211
static void testInet6AddressSerialization(
212
Inet6Address expectedInet6Address, byte[] serializedAddress)
213
throws IOException {
214
System.err.println("\n testInet6AddressSerialization: enter \n");
215
216
// displayExpectedInet6Address(expectedInet6Address);
217
218
byte[] serialData = serializedAddress != null ? serializedAddress
219
: generateSerializedInet6AddressData(expectedInet6Address,
220
null, false);
221
try (ByteArrayInputStream bis = new ByteArrayInputStream(serialData);
222
ObjectInputStream oin = new ObjectInputStream(bis)) {
223
Inet6Address deserializedIPV6Addr = (Inet6Address) oin.readObject();
224
System.err.println("Deserialized Inet6Address "
225
+ deserializedIPV6Addr);
226
assertHostNameEqual(expectedInet6Address.getHostName(),
227
deserializedIPV6Addr.getHostName());
228
assertHostAddressEqual(expectedInet6Address.getHostAddress(),
229
deserializedIPV6Addr.getHostAddress());
230
assertAddressEqual(expectedInet6Address.getAddress(),
231
deserializedIPV6Addr.getAddress());
232
assertScopeIdEqual(expectedInet6Address.getScopeId(),
233
deserializedIPV6Addr.getScopeId());
234
assertNetworkInterfaceEqual(
235
expectedInet6Address.getScopedInterface(),
236
deserializedIPV6Addr.getScopedInterface());
237
} catch (Exception e) {
238
System.err.println("Exception caught during deserialization");
239
failed = true;
240
e.printStackTrace();
241
}
242
}
243
244
static void testSerializedE1000gInet6Address() throws IOException {
245
System.err.println("\n testSerializedE1000gInet6Address: enter \n");
246
boolean testWithNetIf = true;
247
boolean useMockInet6Address = false;
248
249
NetworkInterface testNetIf = NetworkInterface
250
.getByName(NETWORK_IF_E1000G0);
251
Inet6Address expectedInet6Address = null;
252
if (testNetIf != null) {
253
System.err
254
.println("\n testSerializedE1000gInet6Address: using netif \n");
255
try {
256
expectedInet6Address = Inet6Address.getByAddress(
257
E1000G0HOSTNAME, E1000G0IPV6ADDRESS, testNetIf);
258
} catch (UnknownHostException ukhEx) {
259
ukhEx.printStackTrace();
260
testWithNetIf = true;
261
useMockInet6Address = true;
262
}
263
} else {
264
System.err
265
.println("\n testSerializedE1000gInet6Address: using index \n");
266
try {
267
expectedInet6Address = Inet6Address.getByAddress(
268
E1000G0HOSTNAME, E1000G0IPV6ADDRESS, SCOPE_ID_ZERO);
269
} catch (UnknownHostException ukhEx1) {
270
ukhEx1.printStackTrace();
271
useMockInet6Address = true;
272
}
273
testWithNetIf = false;
274
}
275
276
byte[] serializedAddress = SerialData_ifname_e1000g0;
277
278
// displayExpectedInet6Address(expectedInet6Address);
279
280
try (ByteArrayInputStream bis = new ByteArrayInputStream(
281
serializedAddress);
282
ObjectInputStream oin = new ObjectInputStream(bis)) {
283
Inet6Address deserializedIPV6Addr = (Inet6Address) oin.readObject();
284
System.err.println("Deserialized Inet6Address "
285
+ deserializedIPV6Addr);
286
287
if (!useMockInet6Address) {
288
assertHostNameEqual(expectedInet6Address.getHostName(),
289
deserializedIPV6Addr.getHostName());
290
if (testWithNetIf) {
291
assertHostAddressEqual(
292
expectedInet6Address.getHostAddress(),
293
deserializedIPV6Addr.getHostAddress());
294
} else {
295
assertHostAddressEqual(
296
MockE1000g0Inet6Address.getBareHostAddress(),
297
deserializedIPV6Addr.getHostAddress());
298
}
299
assertAddressEqual(expectedInet6Address.getAddress(),
300
deserializedIPV6Addr.getAddress());
301
assertScopeIdEqual(expectedInet6Address.getScopeId(),
302
deserializedIPV6Addr.getScopeId());
303
if (testWithNetIf) {
304
assertNetworkInterfaceEqual(
305
expectedInet6Address.getScopedInterface(),
306
deserializedIPV6Addr.getScopedInterface());
307
} else {
308
assertNetworkInterfaceEqual(null,
309
deserializedIPV6Addr.getScopedInterface());
310
}
311
} else { // use MockLo0Inet6Address
312
assertHostNameEqual(MockE1000g0Inet6Address.getHostName(),
313
deserializedIPV6Addr.getHostName());
314
if (testWithNetIf) {
315
assertHostAddressEqual(
316
MockE1000g0Inet6Address.getHostAddress(),
317
deserializedIPV6Addr.getHostAddress());
318
} else {
319
assertHostAddressEqual(
320
MockE1000g0Inet6Address.getHostAddressWithIndex(),
321
deserializedIPV6Addr.getHostAddress());
322
}
323
assertAddressEqual(MockE1000g0Inet6Address.getAddress(),
324
deserializedIPV6Addr.getAddress());
325
if (testWithNetIf) {
326
assertScopeIdEqual(MockE1000g0Inet6Address.getScopeId(),
327
deserializedIPV6Addr.getScopeId());
328
} else {
329
assertScopeIdEqual(MockE1000g0Inet6Address.getScopeZero(),
330
deserializedIPV6Addr.getScopeId());
331
}
332
assertNetworkInterfaceNameEqual(
333
MockE1000g0Inet6Address.getScopeIfName(),
334
deserializedIPV6Addr.getScopedInterface());
335
}
336
} catch (Exception e) {
337
System.err.println("Exception caught during deserialization");
338
failed = true;
339
e.printStackTrace();
340
}
341
}
342
343
static void testSerializedLo0Inet6Address() throws IOException {
344
System.err.println("\n testSerializedLo0Inet6Address: enter \n");
345
boolean testWithNetIf = true;
346
boolean useMockInet6Address = false;
347
348
NetworkInterface testNetIf = NetworkInterface.getByName(NETWORK_IF_LO0);
349
Inet6Address expectedInet6Address = null;
350
if (testNetIf != null) {
351
System.err
352
.println("\n testSerializedLo0Inet6Address: using netif \n");
353
try {
354
expectedInet6Address = Inet6Address.getByAddress(LOCALHOSTNAME,
355
LOOPBACKIPV6ADDRESS, testNetIf);
356
} catch (UnknownHostException ukhEx) {
357
ukhEx.printStackTrace();
358
testWithNetIf = true;
359
useMockInet6Address = true;
360
}
361
} else {
362
System.err
363
.println("\n testSerializedLo0Inet6Address: using index \n");
364
try {
365
expectedInet6Address = Inet6Address.getByAddress(LOCALHOSTNAME,
366
LOOPBACKIPV6ADDRESS, SCOPE_ID_ZERO);
367
} catch (UnknownHostException ukhEx1) {
368
ukhEx1.printStackTrace();
369
useMockInet6Address = true;
370
}
371
testWithNetIf = false;
372
}
373
374
// displayExpectedInet6Address(expectedInet6Address);
375
376
byte[] serializedAddress = SerialData_ifname_lo0;
377
378
try (ByteArrayInputStream bis = new ByteArrayInputStream(
379
serializedAddress);
380
ObjectInputStream oin = new ObjectInputStream(bis)) {
381
Inet6Address deserializedIPV6Addr = (Inet6Address) oin.readObject();
382
System.err.println("Deserialized Inet6Address "
383
+ deserializedIPV6Addr);
384
if (!useMockInet6Address) {
385
assertHostNameEqual(expectedInet6Address.getHostName(),
386
deserializedIPV6Addr.getHostName());
387
if (testWithNetIf) {
388
assertHostAddressEqual(
389
expectedInet6Address.getHostAddress(),
390
deserializedIPV6Addr.getHostAddress());
391
} else {
392
assertHostAddressEqual(
393
MockLo0Inet6Address.getBareHostAddress(),
394
deserializedIPV6Addr.getHostAddress());
395
}
396
assertAddressEqual(expectedInet6Address.getAddress(),
397
deserializedIPV6Addr.getAddress());
398
assertScopeIdEqual(expectedInet6Address.getScopeId(),
399
deserializedIPV6Addr.getScopeId());
400
if (testWithNetIf) {
401
assertNetworkInterfaceEqual(
402
expectedInet6Address.getScopedInterface(),
403
deserializedIPV6Addr.getScopedInterface());
404
} else {
405
assertNetworkInterfaceEqual(null,
406
deserializedIPV6Addr.getScopedInterface());
407
}
408
} else { // use MockLo0Inet6Address
409
assertHostNameEqual(MockLo0Inet6Address.getHostName(),
410
deserializedIPV6Addr.getHostName());
411
if (testWithNetIf) {
412
assertHostAddressEqual(
413
MockLo0Inet6Address.getHostAddress(),
414
deserializedIPV6Addr.getHostAddress());
415
} else {
416
assertHostAddressEqual(
417
MockLo0Inet6Address.getHostAddressWithIndex(),
418
deserializedIPV6Addr.getHostAddress());
419
}
420
assertAddressEqual(MockLo0Inet6Address.getAddress(),
421
deserializedIPV6Addr.getAddress());
422
if (testWithNetIf) {
423
assertScopeIdEqual(MockLo0Inet6Address.getScopeId(),
424
deserializedIPV6Addr.getScopeId());
425
} else {
426
assertScopeIdEqual(MockLo0Inet6Address.getScopeZero(),
427
deserializedIPV6Addr.getScopeId());
428
}
429
assertNetworkInterfaceNameEqual(
430
MockLo0Inet6Address.getScopeIfName(),
431
deserializedIPV6Addr.getScopedInterface());
432
}
433
} catch (Exception e) {
434
System.err.println("Exception caught during deserialization");
435
failed = true;
436
e.printStackTrace();
437
}
438
}
439
440
static List<Inet6Address> getAllInet6Addresses() throws Exception {
441
// System.err.println("\n getAllInet6Addresses: \n ");
442
ArrayList<Inet6Address> inet6Addresses = new ArrayList<Inet6Address>();
443
for (Enumeration<NetworkInterface> e = NetworkInterface
444
.getNetworkInterfaces(); e.hasMoreElements();) {
445
NetworkInterface netIF = e.nextElement();
446
for (Enumeration<InetAddress> iadrs = netIF.getInetAddresses(); iadrs
447
.hasMoreElements();) {
448
InetAddress iadr = iadrs.nextElement();
449
if (iadr instanceof Inet6Address) {
450
System.err.println("Test NetworkInterface: " + netIF);
451
Inet6Address i6adr = (Inet6Address) iadr;
452
System.err.println(" address " + iadr);
453
System.err.println(" scoped iface: "
454
+ i6adr.getScopedInterface());
455
// using this to actually set the hostName for an
456
// InetAddress
457
// created through the NetworkInterface
458
// have found that the fabricated instances has a null
459
// hostName
460
System.err.println(" hostName: " + i6adr.getHostName());
461
inet6Addresses.add(i6adr);
462
}
463
}
464
}
465
return inet6Addresses;
466
}
467
468
static void assertHostNameEqual(String expectedHostName,
469
String deserializedHostName) {
470
System.err
471
.println("Inet6AddressSerializationTest.assertHostNameEqual:");
472
if (expectedHostName == null) {
473
if (deserializedHostName == null) {
474
// ok, do nothing.
475
} else {
476
System.err.println("Error checking " + " HostName, expected:"
477
+ expectedHostName + ", got :" + deserializedHostName);
478
failed = true;
479
}
480
} else if (!expectedHostName.equals(deserializedHostName)) {
481
System.err.println("Error checking "
482
+ // versionStr +
483
" HostName, expected:" + expectedHostName + ", got :"
484
+ deserializedHostName);
485
failed = true;
486
} else {
487
System.err.println("HostName equality "
488
+ // versionStr +
489
" HostName, expected:" + expectedHostName + ", got :"
490
+ deserializedHostName);
491
}
492
}
493
494
static void assertHostAddressEqual(String expectedHostAddress,
495
String deserializedHostAddress) {
496
System.err
497
.println("Inet6AddressSerializationTest.assertHostAddressEqual:");
498
if (expectedHostAddress == null) {
499
if (deserializedHostAddress == null) {
500
// ok, do nothing.
501
} else {
502
System.err.println("Error checking "
503
+ " HostAddress, expected: " + expectedHostAddress
504
+ ", got: " + deserializedHostAddress);
505
failed = true;
506
}
507
} else if (!expectedHostAddress.equals(deserializedHostAddress)) {
508
System.err.println("Error checking "
509
+ // versionStr +
510
" HostAddress, expected: " + expectedHostAddress
511
+ ", got: " + deserializedHostAddress);
512
failed = true;
513
} else {
514
System.err.println("HostAddress equality "
515
+ // versionStr +
516
" HostAddress, expected: " + expectedHostAddress
517
+ ", got: " + deserializedHostAddress);
518
}
519
}
520
521
static void assertAddressEqual(byte[] expectedAddress,
522
byte[] deserializedAddress) {
523
System.err.println("Inet6AddressSerializationTest.assertAddressEqual:");
524
if (expectedAddress == null) {
525
if (deserializedAddress == null) {
526
// ok, do nothing.
527
} else {
528
System.err.println("Error checking " + " Address, expected:"
529
+ Arrays.toString(expectedAddress) + ", got: "
530
+ Arrays.toString(deserializedAddress));
531
failed = true;
532
}
533
} else if (!Arrays.equals(expectedAddress, deserializedAddress)) {
534
System.err.println("Error checking "
535
+ // versionStr +
536
" Address, expected: " + Arrays.toString(expectedAddress)
537
+ ", got: " + Arrays.toString(deserializedAddress));
538
failed = true;
539
} else {
540
System.err.println("Address equality "
541
+ // versionStr +
542
" Address, expected: " + Arrays.toString(expectedAddress)
543
+ ", got: " + Arrays.toString(deserializedAddress));
544
}
545
}
546
547
static void assertScopeIdEqual(int expectedScopeId, int deserializedScopeId) {
548
System.err.println("Inet6AddressSerializationTest.assertScopeIdEqual:");
549
if (expectedScopeId != deserializedScopeId) {
550
System.err.println("Error checking " + " ScopeId, expected:"
551
+ expectedScopeId + ", got: " + deserializedScopeId);
552
failed = true;
553
} else {
554
System.err.println("ScopeId equality "
555
+ // versionStr +
556
" ScopeId, expected: " + expectedScopeId + ", got: "
557
+ deserializedScopeId);
558
}
559
}
560
561
static void assertNetworkInterfaceNameEqual(String expectedNetworkIfName,
562
NetworkInterface deserializedNetworkInterface) {
563
564
if (deserializedNetworkInterface != null) {
565
String deserializedNetworkIfName = deserializedNetworkInterface
566
.getName();
567
System.err
568
.println("Inet6AddressSerializationTest.assertHostNameEqual:");
569
if (expectedNetworkIfName == null) {
570
if (deserializedNetworkIfName == null) {
571
// ok, do nothing.
572
} else {
573
System.err.println("Error checking "
574
+ " NetworkIfName, expected: "
575
+ expectedNetworkIfName + ", got: "
576
+ deserializedNetworkIfName);
577
failed = true;
578
}
579
} else if (!expectedNetworkIfName.equals(deserializedNetworkIfName)) {
580
System.err.println("Error checking "
581
+ " NetworkIfName, expected: " + expectedNetworkIfName
582
+ ", got: " + deserializedNetworkIfName);
583
failed = true;
584
} else {
585
System.err.println("NetworkIfName equality "
586
+ " NetworkIfName, expected: " + expectedNetworkIfName
587
+ ", got: " + deserializedNetworkIfName);
588
}
589
} else {
590
System.err
591
.println("Warning "
592
+ " NetworkInterface expected, but is null - ifname not relevant on deserializing host");
593
}
594
}
595
596
static void assertNetworkInterfaceEqual(
597
NetworkInterface expectedNetworkInterface,
598
NetworkInterface deserializedNetworkInterface) {
599
System.err
600
.println("Inet6AddressSerializationTest.assertNetworkInterfaceEqual:");
601
if (expectedNetworkInterface == null) {
602
if (deserializedNetworkInterface == null) {
603
// ok, do nothing.
604
System.err.println("Network Interface equality "
605
+ " NetworkInterface, expected:"
606
+ expectedNetworkInterface + ", got :"
607
+ deserializedNetworkInterface);
608
} else {
609
System.err.println("Error checking "
610
+ " NetworkInterface, expected:"
611
+ expectedNetworkInterface + ", got :"
612
+ deserializedNetworkInterface);
613
failed = true;
614
}
615
} else if (!expectedNetworkInterface
616
.equals(deserializedNetworkInterface)) {
617
System.err.println("Error checking "
618
+ // versionStr +
619
" NetworkInterface, expected:" + expectedNetworkInterface
620
+ ", got :" + deserializedNetworkInterface);
621
failed = true;
622
} else {
623
System.err.println("Network Interface equality "
624
+ " NetworkInterface, expected:" + expectedNetworkInterface
625
+ ", got :" + deserializedNetworkInterface);
626
}
627
}
628
629
static void equal(Object expected, Object got) {
630
if (expected == null) {
631
if (got == null) {
632
// ok, do nothing.
633
} else {
634
System.err.println("Error checking "
635
+ " serial data, expected:" + expected + ", got :"
636
+ got);
637
failed = true;
638
}
639
} else if (!expected.equals(got)) {
640
System.err.println("Error checking " + // versionStr +
641
" serial data, expected:" + expected + ", got :" + got);
642
failed = true;
643
}
644
}
645
646
// Used to generate serialData.
647
static byte[] generateSerializedInet6AddressData(Inet6Address addr,
648
PrintStream out, boolean outputToFile) throws IOException {
649
ByteArrayOutputStream bos = new ByteArrayOutputStream();
650
try (ObjectOutputStream oos = new ObjectOutputStream(bos)) {
651
oos.writeObject(addr);
652
}
653
654
String ifname = getIfName(addr);
655
byte[] ba = bos.toByteArray();
656
if (out != null) {
657
out.format("static final byte[] SerialData" + ifname + " = {\n");
658
for (int i = 0; i < ba.length; i++) {
659
out.format(" (byte)0x%02X", ba[i]);
660
if (i != (ba.length - 1))
661
out.format(",");
662
if (((i + 1) % 6) == 0)
663
out.format("\n");
664
}
665
out.format(" };\n \n");
666
}
667
if (outputToFile) {
668
serializeInet6AddressToFile(addr);
669
}
670
return ba;
671
}
672
673
private static String getIfName(Inet6Address inet6Addr) {
674
String ifname;
675
if (inet6Addr.getScopedInterface() != null) {
676
ifname = "_ifname_" + inet6Addr.getScopedInterface().getName();
677
} else {
678
ifname = "_ifname_"
679
+ Integer.valueOf(inet6Addr.getScopeId()).toString();
680
}
681
return ifname;
682
}
683
684
static void generateAllInet6AddressSerializedData() throws IOException {
685
// System.err.println("generateAllInet6AddressSerializedData: enter ....");
686
687
List<Inet6Address> inet6Addresses;
688
689
try {
690
inet6Addresses = getAllInet6Addresses();
691
} catch (Exception e) {
692
e.printStackTrace();
693
throw new IOException(e);
694
}
695
696
for (Inet6Address inet6Address : inet6Addresses) {
697
generateSerializedInet6AddressData(inet6Address, System.out, true);
698
}
699
}
700
701
static void serializeInet6AddressToFile(Inet6Address inet6Addr) {
702
703
// System.err
704
// .println("serializeInet6AddressToIPV6AddressFile: enter ....");
705
706
FileOutputStream fOut = null;
707
String inet6AddressOutputFilename = null;
708
inet6AddressOutputFilename = createOutputFileName(inet6Addr);
709
try {
710
fOut = new FileOutputStream(inet6AddressOutputFilename);
711
} catch (FileNotFoundException fnfEx) {
712
713
fnfEx.printStackTrace();
714
}
715
ObjectOutputStream ooStream = null;
716
try {
717
if (fOut != null) {
718
ooStream = new ObjectOutputStream(fOut);
719
} else {
720
System.err.println("Problem initilising Object output stream ");
721
System.exit(-1);
722
}
723
724
} catch (IOException e) {
725
e.printStackTrace();
726
System.exit(-1);
727
}
728
729
// serialise the last Inet6Address
730
/*
731
* System.err
732
* .println("serializeInet6AddressToIPV6AddressFile scoped iface: \n" +
733
* inet6Addr.getScopedInterface());
734
*/
735
try {
736
ooStream.writeObject(inet6Addr);
737
} catch (Exception ex) {
738
ex.printStackTrace();
739
System.exit(-1);
740
}
741
742
try {
743
ooStream.close();
744
} catch (IOException e) {
745
e.printStackTrace();
746
}
747
}
748
749
private static String createOutputFileName(Inet6Address inet6Addr) {
750
String inet6AddressOutputFilename;
751
if (inet6Addr.getScopedInterface() != null) {
752
inet6AddressOutputFilename = "IPV6Address_"
753
+ inet6Addr.getScopedInterface().getName() + ".out";
754
} else {
755
inet6AddressOutputFilename = "IPV6Address_"
756
+ Integer.valueOf(inet6Addr.getScopeId()).toString()
757
+ ".out";
758
}
759
return inet6AddressOutputFilename;
760
}
761
762
// --- Generated data ---
763
// JDK7 output java Inet6AddressSerializationTest generate.
764
765
// loopback lo0 interface on Solaris 10
766
767
static final byte[] JDK7Inet6AddressSerialData = { (byte) 0xAC,
768
(byte) 0xED, (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72,
769
(byte) 0x00, (byte) 0x15, (byte) 0x6A, (byte) 0x61, (byte) 0x76,
770
(byte) 0x61, (byte) 0x2E, (byte) 0x6E, (byte) 0x65, (byte) 0x74,
771
(byte) 0x2E, (byte) 0x49, (byte) 0x6E, (byte) 0x65, (byte) 0x74,
772
(byte) 0x36, (byte) 0x41, (byte) 0x64, (byte) 0x64, (byte) 0x72,
773
(byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x5F, (byte) 0x7C,
774
(byte) 0x20, (byte) 0x81, (byte) 0x52, (byte) 0x2C, (byte) 0x80,
775
(byte) 0x21, (byte) 0x03, (byte) 0x00, (byte) 0x05, (byte) 0x49,
776
(byte) 0x00, (byte) 0x08, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
777
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64,
778
(byte) 0x5A, (byte) 0x00, (byte) 0x0C, (byte) 0x73, (byte) 0x63,
779
(byte) 0x6F, (byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69,
780
(byte) 0x64, (byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74,
781
(byte) 0x5A, (byte) 0x00, (byte) 0x10, (byte) 0x73, (byte) 0x63,
782
(byte) 0x6F, (byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69,
783
(byte) 0x66, (byte) 0x6E, (byte) 0x61, (byte) 0x6D, (byte) 0x65,
784
(byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x4C,
785
(byte) 0x00, (byte) 0x06, (byte) 0x69, (byte) 0x66, (byte) 0x6E,
786
(byte) 0x61, (byte) 0x6D, (byte) 0x65, (byte) 0x74, (byte) 0x00,
787
(byte) 0x12, (byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76,
788
(byte) 0x61, (byte) 0x2F, (byte) 0x6C, (byte) 0x61, (byte) 0x6E,
789
(byte) 0x67, (byte) 0x2F, (byte) 0x53, (byte) 0x74, (byte) 0x72,
790
(byte) 0x69, (byte) 0x6E, (byte) 0x67, (byte) 0x3B, (byte) 0x5B,
791
(byte) 0x00, (byte) 0x09, (byte) 0x69, (byte) 0x70, (byte) 0x61,
792
(byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73,
793
(byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x02, (byte) 0x5B,
794
(byte) 0x42, (byte) 0x78, (byte) 0x72, (byte) 0x00, (byte) 0x14,
795
(byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2E,
796
(byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x2E, (byte) 0x49,
797
(byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x41, (byte) 0x64,
798
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
799
(byte) 0x2D, (byte) 0x9B, (byte) 0x57, (byte) 0xAF, (byte) 0x9F,
800
(byte) 0xE3, (byte) 0xEB, (byte) 0xDB, (byte) 0x02, (byte) 0x00,
801
(byte) 0x03, (byte) 0x49, (byte) 0x00, (byte) 0x07, (byte) 0x61,
802
(byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73,
803
(byte) 0x73, (byte) 0x49, (byte) 0x00, (byte) 0x06, (byte) 0x66,
804
(byte) 0x61, (byte) 0x6D, (byte) 0x69, (byte) 0x6C, (byte) 0x79,
805
(byte) 0x4C, (byte) 0x00, (byte) 0x08, (byte) 0x68, (byte) 0x6F,
806
(byte) 0x73, (byte) 0x74, (byte) 0x4E, (byte) 0x61, (byte) 0x6D,
807
(byte) 0x65, (byte) 0x71, (byte) 0x00, (byte) 0x7E, (byte) 0x00,
808
(byte) 0x01, (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x00,
809
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
810
(byte) 0x02, (byte) 0x74, (byte) 0x00, (byte) 0x09, (byte) 0x6C,
811
(byte) 0x6F, (byte) 0x63, (byte) 0x61, (byte) 0x6C, (byte) 0x68,
812
(byte) 0x6F, (byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x00,
813
(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x70,
814
(byte) 0x75, (byte) 0x72, (byte) 0x00, (byte) 0x02, (byte) 0x5B,
815
(byte) 0x42, (byte) 0xAC, (byte) 0xF3, (byte) 0x17, (byte) 0xF8,
816
(byte) 0x06, (byte) 0x08, (byte) 0x54, (byte) 0xE0, (byte) 0x02,
817
(byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70, (byte) 0x00,
818
(byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x00,
819
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
820
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
821
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x78 };
822
823
// JDK8 output java Inet6AddressSerializationTest generate.
824
// loopback lo0 interface on Solaris 10
825
826
static final byte[] JDK8Inet6AddressSerialData = { (byte) 0xAC,
827
(byte) 0xED, (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72,
828
(byte) 0x00, (byte) 0x15, (byte) 0x6A, (byte) 0x61, (byte) 0x76,
829
(byte) 0x61, (byte) 0x2E, (byte) 0x6E, (byte) 0x65, (byte) 0x74,
830
(byte) 0x2E, (byte) 0x49, (byte) 0x6E, (byte) 0x65, (byte) 0x74,
831
(byte) 0x36, (byte) 0x41, (byte) 0x64, (byte) 0x64, (byte) 0x72,
832
(byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x5F, (byte) 0x7C,
833
(byte) 0x20, (byte) 0x81, (byte) 0x52, (byte) 0x2C, (byte) 0x80,
834
(byte) 0x21, (byte) 0x03, (byte) 0x00, (byte) 0x05, (byte) 0x49,
835
(byte) 0x00, (byte) 0x08, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
836
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64,
837
(byte) 0x5A, (byte) 0x00, (byte) 0x0C, (byte) 0x73, (byte) 0x63,
838
(byte) 0x6F, (byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69,
839
(byte) 0x64, (byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74,
840
(byte) 0x5A, (byte) 0x00, (byte) 0x10, (byte) 0x73, (byte) 0x63,
841
(byte) 0x6F, (byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69,
842
(byte) 0x66, (byte) 0x6E, (byte) 0x61, (byte) 0x6D, (byte) 0x65,
843
(byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x4C,
844
(byte) 0x00, (byte) 0x06, (byte) 0x69, (byte) 0x66, (byte) 0x6E,
845
(byte) 0x61, (byte) 0x6D, (byte) 0x65, (byte) 0x74, (byte) 0x00,
846
(byte) 0x12, (byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76,
847
(byte) 0x61, (byte) 0x2F, (byte) 0x6C, (byte) 0x61, (byte) 0x6E,
848
(byte) 0x67, (byte) 0x2F, (byte) 0x53, (byte) 0x74, (byte) 0x72,
849
(byte) 0x69, (byte) 0x6E, (byte) 0x67, (byte) 0x3B, (byte) 0x5B,
850
(byte) 0x00, (byte) 0x09, (byte) 0x69, (byte) 0x70, (byte) 0x61,
851
(byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73,
852
(byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x02, (byte) 0x5B,
853
(byte) 0x42, (byte) 0x78, (byte) 0x72, (byte) 0x00, (byte) 0x14,
854
(byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2E,
855
(byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x2E, (byte) 0x49,
856
(byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x41, (byte) 0x64,
857
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
858
(byte) 0x2D, (byte) 0x9B, (byte) 0x57, (byte) 0xAF, (byte) 0x9F,
859
(byte) 0xE3, (byte) 0xEB, (byte) 0xDB, (byte) 0x02, (byte) 0x00,
860
(byte) 0x03, (byte) 0x49, (byte) 0x00, (byte) 0x07, (byte) 0x61,
861
(byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73,
862
(byte) 0x73, (byte) 0x49, (byte) 0x00, (byte) 0x06, (byte) 0x66,
863
(byte) 0x61, (byte) 0x6D, (byte) 0x69, (byte) 0x6C, (byte) 0x79,
864
(byte) 0x4C, (byte) 0x00, (byte) 0x08, (byte) 0x68, (byte) 0x6F,
865
(byte) 0x73, (byte) 0x74, (byte) 0x4E, (byte) 0x61, (byte) 0x6D,
866
(byte) 0x65, (byte) 0x71, (byte) 0x00, (byte) 0x7E, (byte) 0x00,
867
(byte) 0x01, (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x00,
868
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
869
(byte) 0x02, (byte) 0x74, (byte) 0x00, (byte) 0x09, (byte) 0x6C,
870
(byte) 0x6F, (byte) 0x63, (byte) 0x61, (byte) 0x6C, (byte) 0x68,
871
(byte) 0x6F, (byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x00,
872
(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x70,
873
(byte) 0x75, (byte) 0x72, (byte) 0x00, (byte) 0x02, (byte) 0x5B,
874
(byte) 0x42, (byte) 0xAC, (byte) 0xF3, (byte) 0x17, (byte) 0xF8,
875
(byte) 0x06, (byte) 0x08, (byte) 0x54, (byte) 0xE0, (byte) 0x02,
876
(byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70, (byte) 0x00,
877
(byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x00,
878
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
879
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
880
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x78 };
881
882
// java Inet6AddressSerializationTest generateAll produces this inet6address
883
// serial data
884
// jdk8 generated serialization of on address fe80:0:0:0:21b:24ff:febd:f29c
885
// net if e1000g0
886
887
static final byte[] SerialData_ifname_e1000g0 = { (byte) 0xAC, (byte) 0xED,
888
(byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, (byte) 0x00,
889
(byte) 0x15, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
890
(byte) 0x2E, (byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x2E,
891
(byte) 0x49, (byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x36,
892
(byte) 0x41, (byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65,
893
(byte) 0x73, (byte) 0x73, (byte) 0x5F, (byte) 0x7C, (byte) 0x20,
894
(byte) 0x81, (byte) 0x52, (byte) 0x2C, (byte) 0x80, (byte) 0x21,
895
(byte) 0x03, (byte) 0x00, (byte) 0x05, (byte) 0x49, (byte) 0x00,
896
(byte) 0x08, (byte) 0x73, (byte) 0x63, (byte) 0x6F, (byte) 0x70,
897
(byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64, (byte) 0x5A,
898
(byte) 0x00, (byte) 0x0C, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
899
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64,
900
(byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x5A,
901
(byte) 0x00, (byte) 0x10, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
902
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x66,
903
(byte) 0x6E, (byte) 0x61, (byte) 0x6D, (byte) 0x65, (byte) 0x5F,
904
(byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x4C, (byte) 0x00,
905
(byte) 0x06, (byte) 0x69, (byte) 0x66, (byte) 0x6E, (byte) 0x61,
906
(byte) 0x6D, (byte) 0x65, (byte) 0x74, (byte) 0x00, (byte) 0x12,
907
(byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
908
(byte) 0x2F, (byte) 0x6C, (byte) 0x61, (byte) 0x6E, (byte) 0x67,
909
(byte) 0x2F, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69,
910
(byte) 0x6E, (byte) 0x67, (byte) 0x3B, (byte) 0x5B, (byte) 0x00,
911
(byte) 0x09, (byte) 0x69, (byte) 0x70, (byte) 0x61, (byte) 0x64,
912
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
913
(byte) 0x74, (byte) 0x00, (byte) 0x02, (byte) 0x5B, (byte) 0x42,
914
(byte) 0x78, (byte) 0x72, (byte) 0x00, (byte) 0x14, (byte) 0x6A,
915
(byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2E, (byte) 0x6E,
916
(byte) 0x65, (byte) 0x74, (byte) 0x2E, (byte) 0x49, (byte) 0x6E,
917
(byte) 0x65, (byte) 0x74, (byte) 0x41, (byte) 0x64, (byte) 0x64,
918
(byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x2D,
919
(byte) 0x9B, (byte) 0x57, (byte) 0xAF, (byte) 0x9F, (byte) 0xE3,
920
(byte) 0xEB, (byte) 0xDB, (byte) 0x02, (byte) 0x00, (byte) 0x03,
921
(byte) 0x49, (byte) 0x00, (byte) 0x07, (byte) 0x61, (byte) 0x64,
922
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
923
(byte) 0x49, (byte) 0x00, (byte) 0x06, (byte) 0x66, (byte) 0x61,
924
(byte) 0x6D, (byte) 0x69, (byte) 0x6C, (byte) 0x79, (byte) 0x4C,
925
(byte) 0x00, (byte) 0x08, (byte) 0x68, (byte) 0x6F, (byte) 0x73,
926
(byte) 0x74, (byte) 0x4E, (byte) 0x61, (byte) 0x6D, (byte) 0x65,
927
(byte) 0x71, (byte) 0x00, (byte) 0x7E, (byte) 0x00, (byte) 0x01,
928
(byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x00, (byte) 0x00,
929
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02,
930
(byte) 0x74, (byte) 0x00, (byte) 0x25, (byte) 0x66, (byte) 0x65,
931
(byte) 0x38, (byte) 0x30, (byte) 0x3A, (byte) 0x30, (byte) 0x3A,
932
(byte) 0x30, (byte) 0x3A, (byte) 0x30, (byte) 0x3A, (byte) 0x32,
933
(byte) 0x31, (byte) 0x62, (byte) 0x3A, (byte) 0x32, (byte) 0x34,
934
(byte) 0x66, (byte) 0x66, (byte) 0x3A, (byte) 0x66, (byte) 0x65,
935
(byte) 0x62, (byte) 0x64, (byte) 0x3A, (byte) 0x66, (byte) 0x32,
936
(byte) 0x39, (byte) 0x63, (byte) 0x25, (byte) 0x65, (byte) 0x31,
937
(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x67, (byte) 0x30,
938
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x01,
939
(byte) 0x01, (byte) 0x74, (byte) 0x00, (byte) 0x07, (byte) 0x65,
940
(byte) 0x31, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x67,
941
(byte) 0x30, (byte) 0x75, (byte) 0x72, (byte) 0x00, (byte) 0x02,
942
(byte) 0x5B, (byte) 0x42, (byte) 0xAC, (byte) 0xF3, (byte) 0x17,
943
(byte) 0xF8, (byte) 0x06, (byte) 0x08, (byte) 0x54, (byte) 0xE0,
944
(byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70,
945
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0xFE,
946
(byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
947
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x1B, (byte) 0x24,
948
(byte) 0xFF, (byte) 0xFE, (byte) 0xBD, (byte) 0xF2, (byte) 0x9C,
949
(byte) 0x78 };
950
951
// jdk8 generated serialization of address 0::1 on net if lo0 hostname
952
// localhost scope_id 1
953
954
static final byte[] SerialData_ifname_lo0 = { (byte) 0xAC, (byte) 0xED,
955
(byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, (byte) 0x00,
956
(byte) 0x15, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
957
(byte) 0x2E, (byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x2E,
958
(byte) 0x49, (byte) 0x6E, (byte) 0x65, (byte) 0x74, (byte) 0x36,
959
(byte) 0x41, (byte) 0x64, (byte) 0x64, (byte) 0x72, (byte) 0x65,
960
(byte) 0x73, (byte) 0x73, (byte) 0x5F, (byte) 0x7C, (byte) 0x20,
961
(byte) 0x81, (byte) 0x52, (byte) 0x2C, (byte) 0x80, (byte) 0x21,
962
(byte) 0x03, (byte) 0x00, (byte) 0x05, (byte) 0x49, (byte) 0x00,
963
(byte) 0x08, (byte) 0x73, (byte) 0x63, (byte) 0x6F, (byte) 0x70,
964
(byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64, (byte) 0x5A,
965
(byte) 0x00, (byte) 0x0C, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
966
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x64,
967
(byte) 0x5F, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x5A,
968
(byte) 0x00, (byte) 0x10, (byte) 0x73, (byte) 0x63, (byte) 0x6F,
969
(byte) 0x70, (byte) 0x65, (byte) 0x5F, (byte) 0x69, (byte) 0x66,
970
(byte) 0x6E, (byte) 0x61, (byte) 0x6D, (byte) 0x65, (byte) 0x5F,
971
(byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x4C, (byte) 0x00,
972
(byte) 0x06, (byte) 0x69, (byte) 0x66, (byte) 0x6E, (byte) 0x61,
973
(byte) 0x6D, (byte) 0x65, (byte) 0x74, (byte) 0x00, (byte) 0x12,
974
(byte) 0x4C, (byte) 0x6A, (byte) 0x61, (byte) 0x76, (byte) 0x61,
975
(byte) 0x2F, (byte) 0x6C, (byte) 0x61, (byte) 0x6E, (byte) 0x67,
976
(byte) 0x2F, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69,
977
(byte) 0x6E, (byte) 0x67, (byte) 0x3B, (byte) 0x5B, (byte) 0x00,
978
(byte) 0x09, (byte) 0x69, (byte) 0x70, (byte) 0x61, (byte) 0x64,
979
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
980
(byte) 0x74, (byte) 0x00, (byte) 0x02, (byte) 0x5B, (byte) 0x42,
981
(byte) 0x78, (byte) 0x72, (byte) 0x00, (byte) 0x14, (byte) 0x6A,
982
(byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2E, (byte) 0x6E,
983
(byte) 0x65, (byte) 0x74, (byte) 0x2E, (byte) 0x49, (byte) 0x6E,
984
(byte) 0x65, (byte) 0x74, (byte) 0x41, (byte) 0x64, (byte) 0x64,
985
(byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x2D,
986
(byte) 0x9B, (byte) 0x57, (byte) 0xAF, (byte) 0x9F, (byte) 0xE3,
987
(byte) 0xEB, (byte) 0xDB, (byte) 0x02, (byte) 0x00, (byte) 0x03,
988
(byte) 0x49, (byte) 0x00, (byte) 0x07, (byte) 0x61, (byte) 0x64,
989
(byte) 0x64, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
990
(byte) 0x49, (byte) 0x00, (byte) 0x06, (byte) 0x66, (byte) 0x61,
991
(byte) 0x6D, (byte) 0x69, (byte) 0x6C, (byte) 0x79, (byte) 0x4C,
992
(byte) 0x00, (byte) 0x08, (byte) 0x68, (byte) 0x6F, (byte) 0x73,
993
(byte) 0x74, (byte) 0x4E, (byte) 0x61, (byte) 0x6D, (byte) 0x65,
994
(byte) 0x71, (byte) 0x00, (byte) 0x7E, (byte) 0x00, (byte) 0x01,
995
(byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x00, (byte) 0x00,
996
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02,
997
(byte) 0x74, (byte) 0x00, (byte) 0x09, (byte) 0x6C, (byte) 0x6F,
998
(byte) 0x63, (byte) 0x61, (byte) 0x6C, (byte) 0x68, (byte) 0x6F,
999
(byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1000
(byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x74, (byte) 0x00,
1001
(byte) 0x03, (byte) 0x6C, (byte) 0x6F, (byte) 0x30, (byte) 0x75,
1002
(byte) 0x72, (byte) 0x00, (byte) 0x02, (byte) 0x5B, (byte) 0x42,
1003
(byte) 0xAC, (byte) 0xF3, (byte) 0x17, (byte) 0xF8, (byte) 0x06,
1004
(byte) 0x08, (byte) 0x54, (byte) 0xE0, (byte) 0x02, (byte) 0x00,
1005
(byte) 0x00, (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x00,
1006
(byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1007
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1008
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1009
(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x78 };
1010
1011
}
1012
1013
class MockLo0Inet6Address {
1014
1015
private static final byte[] LOOPBACKIPV6ADDRESS = { (byte) 0x00,
1016
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1017
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1018
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01 };
1019
1020
private static final String LOCALHOSTNAME = "localhost";
1021
1022
private static final String LO0HOSTADDRESS = "0:0:0:0:0:0:0:1%lo0";
1023
1024
private static final String BARE_LO0HOSTADDRESS = "0:0:0:0:0:0:0:1";
1025
1026
private static final String LO0HOSTADDRESS_WITHINDEX = "0:0:0:0:0:0:0:1%1";
1027
1028
private static final int SCOPE_ID_LO0 = 1;
1029
1030
private static final int SCOPE_ID_ZERO = 0;
1031
1032
public static final String NETWORK_IF_LO0 = "lo0";
1033
1034
static String getHostName() {
1035
return LOCALHOSTNAME;
1036
}
1037
1038
static String getHostAddress() {
1039
return LO0HOSTADDRESS;
1040
}
1041
1042
static String getBareHostAddress() {
1043
return BARE_LO0HOSTADDRESS;
1044
}
1045
1046
static String getHostAddressWithIndex() {
1047
return LO0HOSTADDRESS_WITHINDEX;
1048
}
1049
1050
static byte[] getAddress() {
1051
return LOOPBACKIPV6ADDRESS;
1052
}
1053
1054
static int getScopeId() {
1055
return SCOPE_ID_LO0;
1056
}
1057
1058
static int getScopeZero() {
1059
return SCOPE_ID_ZERO;
1060
}
1061
1062
static String getScopeIfName() {
1063
return NETWORK_IF_LO0;
1064
}
1065
1066
}
1067
1068
class MockE1000g0Inet6Address {
1069
1070
// fe80::21b:24ff:febd:f29c
1071
private static final byte[] E1000G0IPV6ADDRESS = { (byte) 0xfe,
1072
(byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
1073
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x1b, (byte) 0x24,
1074
(byte) 0xff, (byte) 0xfe, (byte) 0xbd, (byte) 0xf2, (byte) 0x9c };
1075
1076
private static final String E1000G0HOSTNAME = "fe80:0:0:0:21b:24ff:febd:f29c%e1000g0";
1077
1078
private static final String BARE_E1000G0HOSTADDRESS = "fe80:0:0:0:21b:24ff:febd:f29c";
1079
1080
private static final String E1000G0HOSTADDRESS_WITHINDEX = "fe80:0:0:0:21b:24ff:febd:f29c%2";
1081
1082
private static final String E1000G0HOSTADDRESS = "fe80:0:0:0:21b:24ff:febd:f29c%e1000g0";
1083
1084
private static final String NETWORK_IF_E1000G0 = "e1000g0";
1085
1086
private static final int SCOPE_ID_E1000G0 = 2;
1087
1088
private static final int SCOPE_ID_ZERO = 0;
1089
1090
static String getHostName() {
1091
return E1000G0HOSTNAME;
1092
}
1093
1094
static String getHostAddress() {
1095
return E1000G0HOSTADDRESS;
1096
}
1097
1098
static String getHostAddressWithIndex() {
1099
return E1000G0HOSTADDRESS_WITHINDEX;
1100
}
1101
1102
static String getBareHostAddress() {
1103
return BARE_E1000G0HOSTADDRESS;
1104
}
1105
1106
static byte[] getAddress() {
1107
return E1000G0IPV6ADDRESS;
1108
}
1109
1110
static int getScopeId() {
1111
return SCOPE_ID_E1000G0;
1112
}
1113
1114
static int getScopeZero() {
1115
return SCOPE_ID_ZERO;
1116
}
1117
1118
static String getScopeIfName() {
1119
return NETWORK_IF_E1000G0;
1120
}
1121
1122
}
1123
1124