diff options
| author | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-21 22:53:47 +0900 |
|---|---|---|
| committer | Mikio Hara <mikioh.mikioh@gmail.com> | 2015-04-29 22:37:30 +0000 |
| commit | afd2d2b6df3ebfe99faf347030f15adfdf422fa0 (patch) | |
| tree | 11d358f251d08cdbd489a6515cffa374167564e2 /src/net/interface.go | |
| parent | 35748919429c23b9ea91099b8d3b481dff5bbae5 (diff) | |
| download | go-afd2d2b6df3ebfe99faf347030f15adfdf422fa0.tar.xz | |
net: add Source field to OpError
Not only by network, transport-layer intermediaries but by
virtualization stuff in a node, it is hard to identify the root cause of
weird faults without information of packet flows after disaster
happened.
This change adds Source field to OpError to be able to represent a
5-tuple of internet transport protocols for helping dealing with
complicated systems.
Also clarifies the usage of Source and Addr fields.
Updates #4856.
Change-Id: I96a523fe391ed14406bfb21604c461d4aac2fa19
Reviewed-on: https://go-review.googlesource.com/9231
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/net/interface.go')
| -rw-r--r-- | src/net/interface.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/net/interface.go b/src/net/interface.go index e6d874f538..9c7b5da8fe 100644 --- a/src/net/interface.go +++ b/src/net/interface.go @@ -62,11 +62,11 @@ func (f Flags) String() string { // Addrs returns interface addresses for a specific interface. func (ifi *Interface) Addrs() ([]Addr, error) { if ifi == nil { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: errInvalidInterface} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: errInvalidInterface} } ifat, err := interfaceAddrTable(ifi) if err != nil { - err = &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + err = &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } return ifat, err } @@ -75,11 +75,11 @@ func (ifi *Interface) Addrs() ([]Addr, error) { // a specific interface. func (ifi *Interface) MulticastAddrs() ([]Addr, error) { if ifi == nil { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: errInvalidInterface} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: errInvalidInterface} } ifat, err := interfaceMulticastAddrTable(ifi) if err != nil { - err = &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + err = &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } return ifat, err } @@ -88,7 +88,7 @@ func (ifi *Interface) MulticastAddrs() ([]Addr, error) { func Interfaces() ([]Interface, error) { ift, err := interfaceTable(0) if err != nil { - err = &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + err = &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } return ift, err } @@ -98,7 +98,7 @@ func Interfaces() ([]Interface, error) { func InterfaceAddrs() ([]Addr, error) { ifat, err := interfaceAddrTable(nil) if err != nil { - err = &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + err = &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } return ifat, err } @@ -106,15 +106,15 @@ func InterfaceAddrs() ([]Addr, error) { // InterfaceByIndex returns the interface specified by index. func InterfaceByIndex(index int) (*Interface, error) { if index <= 0 { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: errInvalidInterfaceIndex} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: errInvalidInterfaceIndex} } ift, err := interfaceTable(index) if err != nil { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } ifi, err := interfaceByIndex(ift, index) if err != nil { - err = &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + err = &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } return ifi, err } @@ -131,16 +131,16 @@ func interfaceByIndex(ift []Interface, index int) (*Interface, error) { // InterfaceByName returns the interface specified by name. func InterfaceByName(name string) (*Interface, error) { if name == "" { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: errInvalidInterfaceName} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: errInvalidInterfaceName} } ift, err := interfaceTable(0) if err != nil { - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: err} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: err} } for _, ifi := range ift { if name == ifi.Name { return &ifi, nil } } - return nil, &OpError{Op: "route", Net: "ip+net", Addr: nil, Err: errNoSuchInterface} + return nil, &OpError{Op: "route", Net: "ip+net", Source: nil, Addr: nil, Err: errNoSuchInterface} } |
