@@ -20,22 +20,6 @@ import (
20
20
"github.com/google/gopacket/routing"
21
21
)
22
22
23
- // Pulled from http://man7.org/linux/man-pages/man7/rtnetlink.7.html
24
- // See the section on RTM_NEWROUTE, specifically 'struct rtmsg'.
25
- type routeInfoInMemory struct {
26
- Family byte
27
- DstLen byte
28
- SrcLen byte
29
- TOS byte
30
-
31
- Table byte
32
- Protocol byte
33
- Scope byte
34
- Type byte
35
-
36
- Flags uint32
37
- }
38
-
39
23
func New () (routing.Router , error ) {
40
24
rtr := & router {}
41
25
rtr .ifaces = make (map [int ]net.Interface )
54
38
case syscall .NLMSG_DONE :
55
39
break loop
56
40
case syscall .RTM_NEWROUTE :
57
- rt := (* routeInfoInMemory )(unsafe .Pointer (& m .Data [0 ]))
41
+ rt := (* syscall . RtMsg )(unsafe .Pointer (& m .Data [0 ]))
58
42
routeInfo := rtInfo {}
59
43
attrs , err := syscall .ParseNetlinkRouteAttr (& m )
60
44
if err != nil {
@@ -68,12 +52,12 @@ loop:
68
52
case syscall .RTA_DST :
69
53
routeInfo .Dst = & net.IPNet {
70
54
IP : net .IP (attr .Value ),
71
- Mask : net .CIDRMask (int (rt .DstLen ), len (attr .Value )* 8 ),
55
+ Mask : net .CIDRMask (int (rt .Dst_len ), len (attr .Value )* 8 ),
72
56
}
73
57
case syscall .RTA_SRC :
74
58
routeInfo .Src = & net.IPNet {
75
59
IP : net .IP (attr .Value ),
76
- Mask : net .CIDRMask (int (rt .SrcLen ), len (attr .Value )* 8 ),
60
+ Mask : net .CIDRMask (int (rt .Src_len ), len (attr .Value )* 8 ),
77
61
}
78
62
case syscall .RTA_GATEWAY :
79
63
routeInfo .Gateway = net .IP (attr .Value )
0 commit comments