github.com/EagleQL/Xray-core@v1.4.3/transport/internet/domainsocket/config.go (about)

     1  package domainsocket
     2  
     3  import (
     4  	"github.com/xtls/xray-core/common"
     5  	"github.com/xtls/xray-core/common/net"
     6  	"github.com/xtls/xray-core/transport/internet"
     7  )
     8  
     9  const protocolName = "domainsocket"
    10  const sizeofSunPath = 108
    11  
    12  func (c *Config) GetUnixAddr() (*net.UnixAddr, error) {
    13  	path := c.Path
    14  	if path == "" {
    15  		return nil, newError("empty domain socket path")
    16  	}
    17  	if c.Abstract && path[0] != '@' {
    18  		path = "@" + path
    19  	}
    20  	if c.Abstract && c.Padding {
    21  		raw := []byte(path)
    22  		addr := make([]byte, sizeofSunPath)
    23  		copy(addr, raw)
    24  		path = string(addr)
    25  	}
    26  	return &net.UnixAddr{
    27  		Name: path,
    28  		Net:  "unix",
    29  	}, nil
    30  }
    31  
    32  func init() {
    33  	common.Must(internet.RegisterProtocolConfigCreator(protocolName, func() interface{} {
    34  		return new(Config)
    35  	}))
    36  }