package domainsocket import ( "github.com/v2fly/v2ray-core/v5/common" "github.com/v2fly/v2ray-core/v5/common/net" "github.com/v2fly/v2ray-core/v5/transport/internet" ) const ( protocolName = "domainsocket" sizeofSunPath = 108 ) func (c *Config) GetUnixAddr() (*net.UnixAddr, error) { path := c.Path if path == "" { return nil, newError("empty domain socket path") } if c.Abstract && path[0] != '\x00' { path = "\x00" + path } if c.Abstract && c.Padding { raw := []byte(path) addr := make([]byte, sizeofSunPath) copy(addr, raw) path = string(addr) } return &net.UnixAddr{ Name: path, Net: "unix", }, nil } func init() { common.Must(internet.RegisterProtocolConfigCreator(protocolName, func() interface{} { return new(Config) })) }