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 // TCP socket options for openbsd | |
6 | |
7 package net | 5 package net |
8 | 6 |
9 import ( | 7 import ( |
10 "os" | |
11 "syscall" | 8 "syscall" |
12 "time" | 9 "time" |
13 ) | 10 ) |
14 | 11 |
15 // Set keep alive period. | |
16 func setKeepAlivePeriod(fd *netFD, d time.Duration) error { | 12 func setKeepAlivePeriod(fd *netFD, d time.Duration) error { |
17 » if err := fd.incref(); err != nil { | 13 » // OpenBSD has no user-settable per-socket TCP keepalive |
18 » » return err | 14 » // options. |
19 » } | 15 » return syscall.EPROTONOSUPPORT |
20 » defer fd.decref() | |
21 | |
22 » // The kernel expects seconds so round to next highest second. | |
23 » d += (time.Second - time.Nanosecond) | |
24 » secs := int(d.Seconds()) | |
25 | |
26 » return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd,
syscall.IPPROTO_TCP, syscall.SO_KEEPALIVE, secs)) | |
27 } | 16 } |
OLD | NEW |