...
Source file src/vendor/golang.org/x/net/lif/lif.go
1
2
3
4
5
6
7
8
9
10
11 package lif
12
13 import "syscall"
14
15 type endpoint struct {
16 af int
17 s uintptr
18 }
19
20 func (ep *endpoint) close() error {
21 return syscall.Close(int(ep.s))
22 }
23
24 func newEndpoints(af int) ([]endpoint, error) {
25 var lastErr error
26 var eps []endpoint
27 afs := []int{sysAF_INET, sysAF_INET6}
28 if af != sysAF_UNSPEC {
29 afs = []int{af}
30 }
31 for _, af := range afs {
32 s, err := syscall.Socket(af, sysSOCK_DGRAM, 0)
33 if err != nil {
34 lastErr = err
35 continue
36 }
37 eps = append(eps, endpoint{af: af, s: uintptr(s)})
38 }
39 if len(eps) == 0 {
40 return nil, lastErr
41 }
42 return eps, nil
43 }
44
View as plain text