Left: | ||
Right: |
OLD | NEW |
---|---|
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 package net | 5 package net |
6 | 6 |
7 import ( | 7 import ( |
8 "bytes" | 8 "bytes" |
9 "errors" | 9 "errors" |
10 "os" | 10 "os" |
(...skipping 29 matching lines...) Expand all Loading... | |
40 addr, err := ResolveIPAddr(tt.net, tt.litAddr) | 40 addr, err := ResolveIPAddr(tt.net, tt.litAddr) |
41 if err != tt.err { | 41 if err != tt.err { |
42 t.Fatalf("ResolveIPAddr(%v, %v) failed: %v", tt.net, tt. litAddr, err) | 42 t.Fatalf("ResolveIPAddr(%v, %v) failed: %v", tt.net, tt. litAddr, err) |
43 } | 43 } |
44 if !reflect.DeepEqual(addr, tt.addr) { | 44 if !reflect.DeepEqual(addr, tt.addr) { |
45 t.Fatalf("got %#v; expected %#v", addr, tt.addr) | 45 t.Fatalf("got %#v; expected %#v", addr, tt.addr) |
46 } | 46 } |
47 } | 47 } |
48 } | 48 } |
49 | 49 |
50 var ipConnLocalNameTests = []struct { | |
rsc
2013/03/22 14:31:09
It's very disorienting to review code when big blo
mikio
2013/03/23 00:01:22
Done.
| |
51 net string | |
52 laddr *IPAddr | |
53 }{ | |
54 {"ip4:icmp", &IPAddr{IP: IPv4(127, 0, 0, 1)}}, | |
55 {"ip4:icmp", &IPAddr{}}, | |
56 {"ip4:icmp", nil}, | |
57 } | |
58 | |
59 func TestIPConnLocalName(t *testing.T) { | |
60 if os.Getuid() != 0 { | |
61 t.Skip("skipping test; must be root") | |
62 } | |
63 | |
64 for _, tt := range ipConnLocalNameTests { | |
65 c, err := ListenIP(tt.net, tt.laddr) | |
66 if err != nil { | |
67 t.Fatalf("ListenIP failed: %v", err) | |
68 } | |
69 defer c.Close() | |
70 if la := c.LocalAddr(); la == nil { | |
71 t.Fatal("IPConn.LocalAddr failed") | |
72 } | |
73 } | |
74 } | |
75 | |
76 func TestIPConnRemoteName(t *testing.T) { | |
77 if os.Getuid() != 0 { | |
78 t.Skip("skipping test; must be root") | |
79 } | |
80 | |
81 raddr := &IPAddr{IP: IPv4(127, 0, 0, 10).To4()} | |
82 c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr) | |
83 if err != nil { | |
84 t.Fatalf("DialIP failed: %v", err) | |
85 } | |
86 defer c.Close() | |
87 if !reflect.DeepEqual(raddr, c.RemoteAddr()) { | |
88 t.Fatalf("got %#v, expected %#v", c.RemoteAddr(), raddr) | |
89 } | |
90 } | |
91 | |
50 var icmpEchoTests = []struct { | 92 var icmpEchoTests = []struct { |
51 net string | 93 net string |
52 laddr string | 94 laddr string |
53 raddr string | 95 raddr string |
54 }{ | 96 }{ |
55 {"ip4:icmp", "0.0.0.0", "127.0.0.1"}, | 97 {"ip4:icmp", "0.0.0.0", "127.0.0.1"}, |
56 {"ip6:ipv6-icmp", "::", "::1"}, | 98 {"ip6:ipv6-icmp", "::", "::1"}, |
57 } | 99 } |
58 | 100 |
59 func TestConnICMPEcho(t *testing.T) { | 101 func TestConnICMPEcho(t *testing.T) { |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 // body. | 346 // body. |
305 func parseICMPEcho(b []byte) (*icmpEcho, error) { | 347 func parseICMPEcho(b []byte) (*icmpEcho, error) { |
306 bodylen := len(b) | 348 bodylen := len(b) |
307 p := &icmpEcho{ID: int(b[0])<<8 | int(b[1]), Seq: int(b[2])<<8 | int(b[3 ])} | 349 p := &icmpEcho{ID: int(b[0])<<8 | int(b[1]), Seq: int(b[2])<<8 | int(b[3 ])} |
308 if bodylen > 4 { | 350 if bodylen > 4 { |
309 p.Data = make([]byte, bodylen-4) | 351 p.Data = make([]byte, bodylen-4) |
310 copy(p.Data, b[4:]) | 352 copy(p.Data, b[4:]) |
311 } | 353 } |
312 return p, nil | 354 return p, nil |
313 } | 355 } |
314 | |
315 var ipConnLocalNameTests = []struct { | |
316 net string | |
317 laddr *IPAddr | |
318 }{ | |
319 {"ip4:icmp", &IPAddr{IP: IPv4(127, 0, 0, 1)}}, | |
320 {"ip4:icmp", &IPAddr{}}, | |
321 {"ip4:icmp", nil}, | |
322 } | |
323 | |
324 func TestIPConnLocalName(t *testing.T) { | |
325 if os.Getuid() != 0 { | |
326 t.Skip("skipping test; must be root") | |
327 } | |
328 | |
329 for _, tt := range ipConnLocalNameTests { | |
330 c, err := ListenIP(tt.net, tt.laddr) | |
331 if err != nil { | |
332 t.Fatalf("ListenIP failed: %v", err) | |
333 } | |
334 defer c.Close() | |
335 if la := c.LocalAddr(); la == nil { | |
336 t.Fatal("IPConn.LocalAddr failed") | |
337 } | |
338 } | |
339 } | |
340 | |
341 func TestIPConnRemoteName(t *testing.T) { | |
342 if os.Getuid() != 0 { | |
343 t.Skip("skipping test; must be root") | |
344 } | |
345 | |
346 raddr := &IPAddr{IP: IPv4(127, 0, 0, 10).To4()} | |
347 c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr) | |
348 if err != nil { | |
349 t.Fatalf("DialIP failed: %v", err) | |
350 } | |
351 defer c.Close() | |
352 if !reflect.DeepEqual(raddr, c.RemoteAddr()) { | |
353 t.Fatalf("got %#v, expected %#v", c.RemoteAddr(), raddr) | |
354 } | |
355 } | |
OLD | NEW |