blob: eb91d0d630970ebee608f7b287f9fb09a347b0a9 [file] [log] [blame]
Russ Cox35ace1d2009-11-01 11:15:34 -08001// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Russ Cox35ace1d2009-11-01 11:15:34 -08005package net
6
Russ Coxc83b8382009-11-02 18:37:30 -08007// UnixAddr represents the address of a Unix domain socket end point.
8type UnixAddr struct {
Albert Strasheim01fad6a2011-01-19 14:21:58 -05009 Name string
10 Net string
Russ Coxc83b8382009-11-02 18:37:30 -080011}
12
Mikio Hara8b6d5012013-03-23 07:39:43 +090013// Network returns the address's network name, "unix", "unixgram" or
14// "unixpacket".
Russ Coxc83b8382009-11-02 18:37:30 -080015func (a *UnixAddr) Network() string {
Albert Strasheim01fad6a2011-01-19 14:21:58 -050016 return a.Net
Russ Coxc83b8382009-11-02 18:37:30 -080017}
18
19func (a *UnixAddr) String() string {
20 if a == nil {
Robert Griesemer40621d52009-11-09 12:07:39 -080021 return "<nil>"
Russ Coxc83b8382009-11-02 18:37:30 -080022 }
Robert Griesemera3d10452009-12-15 15:35:38 -080023 return a.Name
Russ Coxc83b8382009-11-02 18:37:30 -080024}
25
Mikio Hara22829bd2015-05-30 07:33:16 +090026func (a *UnixAddr) isWildcard() bool {
27 return a == nil || a.Name == ""
28}
29
30func (a *UnixAddr) opAddr() Addr {
31 if a == nil {
32 return nil
33 }
34 return a
35}
36
Russ Coxc83b8382009-11-02 18:37:30 -080037// ResolveUnixAddr parses addr as a Unix domain socket address.
Albert Strasheim01fad6a2011-01-19 14:21:58 -050038// The string net gives the network name, "unix", "unixgram" or
39// "unixpacket".
Russ Coxeb692922011-11-01 22:05:34 -040040func ResolveUnixAddr(net, addr string) (*UnixAddr, error) {
Russ Coxc83b8382009-11-02 18:37:30 -080041 switch net {
Mikio Hara8b6d5012013-03-23 07:39:43 +090042 case "unix", "unixgram", "unixpacket":
43 return &UnixAddr{Name: addr, Net: net}, nil
Russ Coxc83b8382009-11-02 18:37:30 -080044 default:
Robert Griesemer40621d52009-11-09 12:07:39 -080045 return nil, UnknownNetworkError(net)
Russ Coxc83b8382009-11-02 18:37:30 -080046 }
Russ Coxc83b8382009-11-02 18:37:30 -080047}