@@ -8,7 +8,8 @@ package route
8
8
9
9
import (
10
10
"runtime"
11
- "syscall"
11
+
12
+ "golang.org/x/sys/unix"
12
13
)
13
14
14
15
// An Addr represents an address associated with packet routing.
@@ -25,7 +26,7 @@ type LinkAddr struct {
25
26
}
26
27
27
28
// Family implements the Family method of Addr interface.
28
- func (a * LinkAddr ) Family () int { return syscall .AF_LINK }
29
+ func (a * LinkAddr ) Family () int { return unix .AF_LINK }
29
30
30
31
func (a * LinkAddr ) lenAndSpace () (int , int ) {
31
32
l := 8 + len (a .Name ) + len (a .Addr )
@@ -42,7 +43,7 @@ func (a *LinkAddr) marshal(b []byte) (int, error) {
42
43
return 0 , errInvalidAddr
43
44
}
44
45
b [0 ] = byte (l )
45
- b [1 ] = syscall .AF_LINK
46
+ b [1 ] = unix .AF_LINK
46
47
if a .Index > 0 {
47
48
nativeEndian .PutUint16 (b [2 :4 ], uint16 (a .Index ))
48
49
}
@@ -64,7 +65,7 @@ func parseLinkAddr(b []byte) (Addr, error) {
64
65
if len (b ) < 8 {
65
66
return nil , errInvalidAddr
66
67
}
67
- _ , a , err := parseKernelLinkAddr (syscall .AF_LINK , b [4 :])
68
+ _ , a , err := parseKernelLinkAddr (unix .AF_LINK , b [4 :])
68
69
if err != nil {
69
70
return nil , err
70
71
}
@@ -124,10 +125,10 @@ type Inet4Addr struct {
124
125
}
125
126
126
127
// Family implements the Family method of Addr interface.
127
- func (a * Inet4Addr ) Family () int { return syscall .AF_INET }
128
+ func (a * Inet4Addr ) Family () int { return unix .AF_INET }
128
129
129
130
func (a * Inet4Addr ) lenAndSpace () (int , int ) {
130
- return sizeofSockaddrInet , roundup (sizeofSockaddrInet )
131
+ return unix . SizeofSockaddrInet4 , roundup (unix . SizeofSockaddrInet4 )
131
132
}
132
133
133
134
func (a * Inet4Addr ) marshal (b []byte ) (int , error ) {
@@ -136,7 +137,7 @@ func (a *Inet4Addr) marshal(b []byte) (int, error) {
136
137
return 0 , errShortBuffer
137
138
}
138
139
b [0 ] = byte (l )
139
- b [1 ] = syscall .AF_INET
140
+ b [1 ] = unix .AF_INET
140
141
copy (b [4 :8 ], a .IP [:])
141
142
return ll , nil
142
143
}
@@ -148,10 +149,10 @@ type Inet6Addr struct {
148
149
}
149
150
150
151
// Family implements the Family method of Addr interface.
151
- func (a * Inet6Addr ) Family () int { return syscall .AF_INET6 }
152
+ func (a * Inet6Addr ) Family () int { return unix .AF_INET6 }
152
153
153
154
func (a * Inet6Addr ) lenAndSpace () (int , int ) {
154
- return sizeofSockaddrInet6 , roundup (sizeofSockaddrInet6 )
155
+ return unix . SizeofSockaddrInet6 , roundup (unix . SizeofSockaddrInet6 )
155
156
}
156
157
157
158
func (a * Inet6Addr ) marshal (b []byte ) (int , error ) {
@@ -160,7 +161,7 @@ func (a *Inet6Addr) marshal(b []byte) (int, error) {
160
161
return 0 , errShortBuffer
161
162
}
162
163
b [0 ] = byte (l )
163
- b [1 ] = syscall .AF_INET6
164
+ b [1 ] = unix .AF_INET6
164
165
copy (b [8 :24 ], a .IP [:])
165
166
if a .ZoneID > 0 {
166
167
nativeEndian .PutUint32 (b [24 :28 ], uint32 (a .ZoneID ))
@@ -175,7 +176,7 @@ func parseInetAddr(af int, b []byte) (Addr, error) {
175
176
off6 = 8 // offset of in6_addr
176
177
)
177
178
switch af {
178
- case syscall .AF_INET :
179
+ case unix .AF_INET :
179
180
if len (b ) < (off4 + 1 ) || len (b ) < int (b [0 ]) || b [0 ] == 0 {
180
181
return nil , errInvalidAddr
181
182
}
@@ -187,7 +188,7 @@ func parseInetAddr(af int, b []byte) (Addr, error) {
187
188
}
188
189
copy (a .IP [:], b [off4 :n ])
189
190
return a , nil
190
- case syscall .AF_INET6 :
191
+ case unix .AF_INET6 :
191
192
if len (b ) < (off6 + 1 ) || len (b ) < int (b [0 ]) || b [0 ] == 0 {
192
193
return nil , errInvalidAddr
193
194
}
@@ -197,7 +198,7 @@ func parseInetAddr(af int, b []byte) (Addr, error) {
197
198
n = sockAddrLen
198
199
}
199
200
a := & Inet6Addr {}
200
- if sockAddrLen == sizeofSockaddrInet6 {
201
+ if sockAddrLen == unix . SizeofSockaddrInet6 {
201
202
a .ZoneID = int (nativeEndian .Uint32 (b [24 :28 ]))
202
203
}
203
204
copy (a .IP [:], b [off6 :n ])
@@ -260,19 +261,19 @@ func parseKernelInetAddr(af int, b []byte) (int, Addr, error) {
260
261
off6 = 8 // offset of in6_addr
261
262
)
262
263
switch {
263
- case b [0 ] == sizeofSockaddrInet6 :
264
+ case b [0 ] == unix . SizeofSockaddrInet6 :
264
265
a := & Inet6Addr {}
265
266
copy (a .IP [:], b [off6 :off6 + 16 ])
266
267
return int (b [0 ]), a , nil
267
- case af == syscall .AF_INET6 :
268
+ case af == unix .AF_INET6 :
268
269
a := & Inet6Addr {}
269
270
if l - 1 < off6 {
270
271
copy (a .IP [:], b [1 :l ])
271
272
} else {
272
273
copy (a .IP [:], b [l - off6 :l ])
273
274
}
274
275
return int (b [0 ]), a , nil
275
- case b [0 ] == sizeofSockaddrInet :
276
+ case b [0 ] == unix . SizeofSockaddrInet4 :
276
277
a := & Inet4Addr {}
277
278
copy (a .IP [:], b [off4 :off4 + 4 ])
278
279
return int (b [0 ]), a , nil
@@ -384,15 +385,15 @@ func marshalAddrs(b []byte, as []Addr) (uint, error) {
384
385
}
385
386
386
387
func parseAddrs (attrs uint , fn func (int , []byte ) (int , Addr , error ), b []byte ) ([]Addr , error ) {
387
- var as [syscall .RTAX_MAX ]Addr
388
- af := int (syscall .AF_UNSPEC )
389
- for i := uint (0 ); i < syscall .RTAX_MAX && len (b ) >= roundup (0 ); i ++ {
388
+ var as [unix .RTAX_MAX ]Addr
389
+ af := int (unix .AF_UNSPEC )
390
+ for i := uint (0 ); i < unix .RTAX_MAX && len (b ) >= roundup (0 ); i ++ {
390
391
if attrs & (1 << i ) == 0 {
391
392
continue
392
393
}
393
- if i <= syscall .RTAX_BRD {
394
+ if i <= unix .RTAX_BRD {
394
395
switch b [1 ] {
395
- case syscall .AF_LINK :
396
+ case unix .AF_LINK :
396
397
a , err := parseLinkAddr (b )
397
398
if err != nil {
398
399
return nil , err
@@ -403,7 +404,7 @@ func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) (
403
404
return nil , errMessageTooShort
404
405
}
405
406
b = b [l :]
406
- case syscall .AF_INET , syscall .AF_INET6 :
407
+ case unix .AF_INET , unix .AF_INET6 :
407
408
// #70528: if the sockaddrlen is 0, no address to parse inside,
408
409
// skip over the record.
409
410
if b [0 ] > 0 {
0 commit comments