github.com/jiasir/docker@v1.3.3-0.20170609024000-252e610103e7/pkg/listeners/listeners_solaris.go (about)

     1  package listeners
     2  
     3  import (
     4  	"crypto/tls"
     5  	"fmt"
     6  	"net"
     7  	"os"
     8  
     9  	"github.com/Sirupsen/logrus"
    10  	"github.com/docker/go-connections/sockets"
    11  )
    12  
    13  // Init creates new listeners for the server.
    14  func Init(proto, addr, socketGroup string, tlsConfig *tls.Config) (ls []net.Listener, err error) {
    15  	switch proto {
    16  	case "tcp":
    17  		l, err := sockets.NewTCPSocket(addr, tlsConfig)
    18  		if err != nil {
    19  			return nil, err
    20  		}
    21  		ls = append(ls, l)
    22  	case "unix":
    23  		gid, err := lookupGID(socketGroup)
    24  		if err != nil {
    25  			if socketGroup != "" {
    26  				if socketGroup != defaultSocketGroup {
    27  					return nil, err
    28  				}
    29  				logrus.Warnf("could not change group %s to %s: %v", addr, defaultSocketGroup, err)
    30  			}
    31  			gid = os.Getgid()
    32  		}
    33  		l, err := sockets.NewUnixSocket(addr, gid)
    34  		if err != nil {
    35  			return nil, fmt.Errorf("can't create unix socket %s: %v", addr, err)
    36  		}
    37  		ls = append(ls, l)
    38  	default:
    39  		return nil, fmt.Errorf("Invalid protocol format: %q", proto)
    40  	}
    41  
    42  	return
    43  }