Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(3434)

Delta Between Two Patch Sets: ipv4/sockopt_unix.go

Issue 97800043: code review 97800043: go.net/ipv4: add support for dragonfly (Closed)
Left Patch Set: diff -r 424a15ce8b2f https://code.google.com/p/go.net Created 9 years, 11 months ago
Right Patch Set: diff -r 9c33002573cb https://code.google.com/p/go.net Created 9 years, 10 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « ipv4/sockopt_stub.go ('k') | ipv4/sockopt_windows.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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 dragonfly freebsd linux netbsd openbsd 5 // +build darwin dragonfly freebsd linux netbsd openbsd
6 6
7 package ipv4 7 package ipv4
8 8
9 import ( 9 import (
10 "os" 10 "os"
11 » "unsafe" 11 » "syscall"
12 ) 12 )
13 13
14 func ipv4TOS(fd int) (int, error) { 14 func ipv4TOS(fd int) (int, error) {
15 » var v int32 15 » v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptTOS)
16 » l := sysSockoptLen(4) 16 » if err != nil {
17 » if err := getsockopt(fd, ianaProtocolIP, sysSockoptTOS, unsafe.Pointer(& v), &l); err != nil {
18 return 0, os.NewSyscallError("getsockopt", err) 17 return 0, os.NewSyscallError("getsockopt", err)
19 } 18 }
20 » return int(v), nil 19 » return v, nil
21 } 20 }
22 21
23 func setIPv4TOS(fd int, v int) error { 22 func setIPv4TOS(fd int, v int) error {
24 » vv := int32(v) 23 » return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaPr otocolIP, sysSockoptTOS, v))
25 » return os.NewSyscallError("setsockopt", setsockopt(fd, ianaProtocolIP, s ysSockoptTOS, unsafe.Pointer(&vv), 4))
26 } 24 }
27 25
28 func ipv4TTL(fd int) (int, error) { 26 func ipv4TTL(fd int) (int, error) {
29 » var v int32 27 » v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptTTL)
30 » l := sysSockoptLen(4) 28 » if err != nil {
31 » if err := getsockopt(fd, ianaProtocolIP, sysSockoptTTL, unsafe.Pointer(& v), &l); err != nil {
32 return 0, os.NewSyscallError("getsockopt", err) 29 return 0, os.NewSyscallError("getsockopt", err)
33 } 30 }
34 » return int(v), nil 31 » return v, nil
35 } 32 }
36 33
37 func setIPv4TTL(fd int, v int) error { 34 func setIPv4TTL(fd int, v int) error {
38 » vv := int32(v) 35 » return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaPr otocolIP, sysSockoptTTL, v))
39 » return os.NewSyscallError("setsockopt", setsockopt(fd, ianaProtocolIP, s ysSockoptTTL, unsafe.Pointer(&vv), 4))
40 } 36 }
41 37
42 func ipv4ReceiveTTL(fd int) (bool, error) { 38 func ipv4ReceiveTTL(fd int) (bool, error) {
43 » var v int32 39 » v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptReceiveTTL )
44 » l := sysSockoptLen(4) 40 » if err != nil {
45 » if err := getsockopt(fd, ianaProtocolIP, sysSockoptReceiveTTL, unsafe.Po inter(&v), &l); err != nil {
46 return false, os.NewSyscallError("getsockopt", err) 41 return false, os.NewSyscallError("getsockopt", err)
47 } 42 }
48 return v == 1, nil 43 return v == 1, nil
49 } 44 }
50 45
51 func setIPv4ReceiveTTL(fd int, v bool) error { 46 func setIPv4ReceiveTTL(fd int, v bool) error {
52 » vv := int32(boolint(v)) 47 » return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaPr otocolIP, sysSockoptReceiveTTL, boolint(v)))
53 » return os.NewSyscallError("setsockopt", setsockopt(fd, ianaProtocolIP, s ysSockoptReceiveTTL, unsafe.Pointer(&vv), 4))
54 } 48 }
55 49
56 func ipv4HeaderPrepend(fd int) (bool, error) { 50 func ipv4HeaderPrepend(fd int) (bool, error) {
57 » var v int32 51 » v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptHeaderPrep end)
58 » l := sysSockoptLen(4) 52 » if err != nil {
59 » if err := getsockopt(fd, ianaProtocolIP, sysSockoptHeaderPrepend, unsafe .Pointer(&v), &l); err != nil {
60 return false, os.NewSyscallError("getsockopt", err) 53 return false, os.NewSyscallError("getsockopt", err)
61 } 54 }
62 return v == 1, nil 55 return v == 1, nil
63 } 56 }
64 57
65 func setIPv4HeaderPrepend(fd int, v bool) error { 58 func setIPv4HeaderPrepend(fd int, v bool) error {
66 » vv := int32(boolint(v)) 59 » return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaPr otocolIP, sysSockoptHeaderPrepend, boolint(v)))
67 » return os.NewSyscallError("setsockopt", setsockopt(fd, ianaProtocolIP, s ysSockoptHeaderPrepend, unsafe.Pointer(&vv), 4))
68 } 60 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b