LEFT | RIGHT |
1 // Copyright 2012 The Go Authors. All rights reserved. | 1 // Copyright 2012 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 // +build darwin freebsd linux openbsd | 5 // +build darwin freebsd linux netbsd openbsd windows |
6 | 6 |
7 package ipv4_test | 7 package ipv4_test |
8 | 8 |
9 import ( | 9 import ( |
10 "code.google.com/p/go.net/ipv4" | 10 "code.google.com/p/go.net/ipv4" |
11 "errors" | 11 "errors" |
12 "net" | 12 "net" |
13 "os" | 13 "os" |
| 14 "runtime" |
14 "testing" | 15 "testing" |
15 ) | 16 ) |
16 | 17 |
17 type testUnicastConn interface { | 18 type testUnicastConn interface { |
18 TOS() (int, error) | 19 TOS() (int, error) |
19 SetTOS(int) error | 20 SetTOS(int) error |
20 TTL() (int, error) | 21 TTL() (int, error) |
21 SetTTL(int) error | 22 SetTTL(int) error |
22 } | 23 } |
23 | 24 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 t.Errorf("ipv4.NewRawConn failed: %v", err) | 105 t.Errorf("ipv4.NewRawConn failed: %v", err) |
105 return | 106 return |
106 } | 107 } |
107 if err := testUnicastSockopt(t, tt, r); err != nil { | 108 if err := testUnicastSockopt(t, tt, r); err != nil { |
108 break | 109 break |
109 } | 110 } |
110 } | 111 } |
111 } | 112 } |
112 | 113 |
113 func testUnicastSockopt(t *testing.T, tt unicastSockoptTest, c testUnicastConn)
error { | 114 func testUnicastSockopt(t *testing.T, tt unicastSockoptTest, c testUnicastConn)
error { |
114 » if err := c.SetTOS(tt.tos); err != nil { | 115 » switch runtime.GOOS { |
115 » » t.Errorf("ipv4.Conn.SetTOS failed: %v", err) | 116 » case "windows": |
116 » » return err | 117 » » // IP_TOS option is supported on Windows 8 and beyond. |
| 118 » » t.Logf("skipping IP_TOS test on %q", runtime.GOOS) |
| 119 » default: |
| 120 » » if err := c.SetTOS(tt.tos); err != nil { |
| 121 » » » t.Errorf("ipv4.Conn.SetTOS failed: %v", err) |
| 122 » » » return err |
| 123 » » } |
| 124 » » if v, err := c.TOS(); err != nil { |
| 125 » » » t.Errorf("ipv4.Conn.TOS failed: %v", err) |
| 126 » » » return err |
| 127 » » } else if v != tt.tos { |
| 128 » » » t.Errorf("Got unexpected TOS value %v; expected %v", v,
tt.tos) |
| 129 » » » return errors.New("Got unexpected TOS value") |
| 130 » » } |
117 } | 131 } |
| 132 |
118 if err := c.SetTTL(tt.ttl); err != nil { | 133 if err := c.SetTTL(tt.ttl); err != nil { |
119 t.Errorf("ipv4.Conn.SetTTL failed: %v", err) | 134 t.Errorf("ipv4.Conn.SetTTL failed: %v", err) |
120 return err | 135 return err |
121 } | |
122 if v, err := c.TOS(); err != nil { | |
123 t.Errorf("ipv4.Conn.TOS failed: %v", err) | |
124 return err | |
125 } else if v != tt.tos { | |
126 t.Errorf("Got unexpected TOS value %v; expected %v", v, tt.tos) | |
127 return errors.New("Got unexpected TOS value") | |
128 } | 136 } |
129 if v, err := c.TTL(); err != nil { | 137 if v, err := c.TTL(); err != nil { |
130 t.Errorf("ipv4.Conn.TTL failed: %v", err) | 138 t.Errorf("ipv4.Conn.TTL failed: %v", err) |
131 return err | 139 return err |
132 } else if v != tt.ttl { | 140 } else if v != tt.ttl { |
133 t.Errorf("Got unexpected TTL value %v; expected %v", v, tt.ttl) | 141 t.Errorf("Got unexpected TTL value %v; expected %v", v, tt.ttl) |
134 return errors.New("Got unexpected TTL value") | 142 return errors.New("Got unexpected TTL value") |
135 } | 143 } |
| 144 |
136 return nil | 145 return nil |
137 } | 146 } |
LEFT | RIGHT |