package sockopt

import (
	"net"
	"syscall"
)

// https://github.com/v2fly/v2ray-core/blob/4e247840821f3dd326722d4db02ee3c237074fc2/transport/internet/config.pb.go#L420-L426

func BindDialer(d *net.Dialer, intf *net.Interface) {
	d.Control = func(network, address string, c syscall.RawConn) error {
		return bindRawConn(network, c, intf)
	}
}

func BindUDPConn(network string, conn *net.UDPConn, intf *net.Interface) error {
	c, err := conn.SyscallConn()
	if err != nil {
		return err
	}

	return bindRawConn(network, c, intf)
}