@@ -62,41 +62,61 @@ func (f Flags) String() string {
62
62
// Addrs returns interface addresses for a specific interface.
63
63
func (ifi * Interface ) Addrs () ([]Addr , error ) {
64
64
if ifi == nil {
65
- return nil , errInvalidInterface
65
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : errInvalidInterface }
66
66
}
67
- return interfaceAddrTable (ifi )
67
+ ifat , err := interfaceAddrTable (ifi )
68
+ if err != nil {
69
+ err = & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
70
+ }
71
+ return ifat , err
68
72
}
69
73
70
74
// MulticastAddrs returns multicast, joined group addresses for
71
75
// a specific interface.
72
76
func (ifi * Interface ) MulticastAddrs () ([]Addr , error ) {
73
77
if ifi == nil {
74
- return nil , errInvalidInterface
78
+ return nil , & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : errInvalidInterface }
79
+ }
80
+ ifat , err := interfaceMulticastAddrTable (ifi )
81
+ if err != nil {
82
+ err = & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
75
83
}
76
- return interfaceMulticastAddrTable ( ifi )
84
+ return ifat , err
77
85
}
78
86
79
87
// Interfaces returns a list of the system's network interfaces.
80
88
func Interfaces () ([]Interface , error ) {
81
- return interfaceTable (0 )
89
+ ift , err := interfaceTable (0 )
90
+ if err != nil {
91
+ err = & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
92
+ }
93
+ return ift , err
82
94
}
83
95
84
96
// InterfaceAddrs returns a list of the system's network interface
85
97
// addresses.
86
98
func InterfaceAddrs () ([]Addr , error ) {
87
- return interfaceAddrTable (nil )
99
+ ifat , err := interfaceAddrTable (nil )
100
+ if err != nil {
101
+ err = & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
102
+ }
103
+ return ifat , err
88
104
}
89
105
90
106
// InterfaceByIndex returns the interface specified by index.
91
107
func InterfaceByIndex (index int ) (* Interface , error ) {
92
108
if index <= 0 {
93
- return nil , errInvalidInterfaceIndex
109
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : errInvalidInterfaceIndex }
94
110
}
95
111
ift , err := interfaceTable (index )
96
112
if err != nil {
97
- return nil , err
113
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
98
114
}
99
- return interfaceByIndex (ift , index )
115
+ ifi , err := interfaceByIndex (ift , index )
116
+ if err != nil {
117
+ err = & OpError {Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
118
+ }
119
+ return ifi , err
100
120
}
101
121
102
122
func interfaceByIndex (ift []Interface , index int ) (* Interface , error ) {
@@ -111,16 +131,16 @@ func interfaceByIndex(ift []Interface, index int) (*Interface, error) {
111
131
// InterfaceByName returns the interface specified by name.
112
132
func InterfaceByName (name string ) (* Interface , error ) {
113
133
if name == "" {
114
- return nil , errInvalidInterfaceName
134
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : errInvalidInterfaceName }
115
135
}
116
136
ift , err := interfaceTable (0 )
117
137
if err != nil {
118
- return nil , err
138
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : err }
119
139
}
120
140
for _ , ifi := range ift {
121
141
if name == ifi .Name {
122
142
return & ifi , nil
123
143
}
124
144
}
125
- return nil , errNoSuchInterface
145
+ return nil , & OpError { Op : "route" , Net : "ip+net" , Addr : nil , Err : errNoSuchInterface }
126
146
}
0 commit comments