mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2024-11-15 21:51:23 +08:00
29 lines
655 B
Go
29 lines
655 B
Go
package dhcp
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"runtime"
|
|
|
|
"github.com/metacubex/mihomo/component/dialer"
|
|
)
|
|
|
|
func ListenDHCPClient(ctx context.Context, ifaceName string) (net.PacketConn, error) {
|
|
listenAddr := "0.0.0.0:68"
|
|
if runtime.GOOS == "linux" || runtime.GOOS == "android" {
|
|
listenAddr = "255.255.255.255:68"
|
|
}
|
|
|
|
options := []dialer.Option{
|
|
dialer.WithInterface(ifaceName),
|
|
dialer.WithAddrReuse(true),
|
|
}
|
|
|
|
// fallback bind on windows, because syscall bind can not receive broadcast
|
|
if runtime.GOOS == "windows" {
|
|
options = append(options, dialer.WithFallbackBind(true))
|
|
}
|
|
|
|
return dialer.ListenPacket(ctx, "udp4", listenAddr, options...)
|
|
}
|