Skip to content

Commit a803d4b

Browse files
committed
1. added darwin mpath context implementation
1 parent 8543d6f commit a803d4b

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/core/link_mpath_darwin.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//go:build darwin
2+
// +build darwin
3+
4+
package core
5+
6+
import (
7+
"syscall"
8+
9+
"golang.org/x/sys/unix"
10+
)
11+
12+
// WARNING: This context is used both by net.Dialer and net.Listen in tcp.go
13+
14+
func (t *linkMPATH) tcpContext(network, address string, c syscall.RawConn) error {
15+
var control error
16+
var recvanyif error
17+
18+
control = c.Control(func(fd uintptr) {
19+
// sys/socket.h: #define SO_RECV_ANYIF 0x1104
20+
recvanyif = unix.SetsockoptInt(int(fd), syscall.SOL_SOCKET, 0x1104, 1)
21+
})
22+
23+
switch {
24+
case recvanyif != nil:
25+
return recvanyif
26+
default:
27+
return control
28+
}
29+
}
30+
31+
func (t *linkMPATH) getControl(sintf string) func(string, string, syscall.RawConn) error {
32+
return t.tcpContext
33+
}

0 commit comments

Comments
 (0)