1 // Copyright 2016 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 5 //go:build ignore 6 7 package route 8 9 /* 10 #include <sys/socket.h> 11 #include <sys/sysctl.h> 12 13 #include <net/if.h> 14 #include <net/if_dl.h> 15 #include <net/route.h> 16 17 #include <netinet/in.h> 18 19 struct if_data_freebsd7 { 20 u_char ifi_type; 21 u_char ifi_physical; 22 u_char ifi_addrlen; 23 u_char ifi_hdrlen; 24 u_char ifi_link_state; 25 u_char ifi_spare_char1; 26 u_char ifi_spare_char2; 27 u_char ifi_datalen; 28 u_long ifi_mtu; 29 u_long ifi_metric; 30 u_long ifi_baudrate; 31 u_long ifi_ipackets; 32 u_long ifi_ierrors; 33 u_long ifi_opackets; 34 u_long ifi_oerrors; 35 u_long ifi_collisions; 36 u_long ifi_ibytes; 37 u_long ifi_obytes; 38 u_long ifi_imcasts; 39 u_long ifi_omcasts; 40 u_long ifi_iqdrops; 41 u_long ifi_noproto; 42 u_long ifi_hwassist; 43 time_t __ifi_epoch; 44 struct timeval __ifi_lastchange; 45 }; 46 47 struct if_data_freebsd8 { 48 u_char ifi_type; 49 u_char ifi_physical; 50 u_char ifi_addrlen; 51 u_char ifi_hdrlen; 52 u_char ifi_link_state; 53 u_char ifi_spare_char1; 54 u_char ifi_spare_char2; 55 u_char ifi_datalen; 56 u_long ifi_mtu; 57 u_long ifi_metric; 58 u_long ifi_baudrate; 59 u_long ifi_ipackets; 60 u_long ifi_ierrors; 61 u_long ifi_opackets; 62 u_long ifi_oerrors; 63 u_long ifi_collisions; 64 u_long ifi_ibytes; 65 u_long ifi_obytes; 66 u_long ifi_imcasts; 67 u_long ifi_omcasts; 68 u_long ifi_iqdrops; 69 u_long ifi_noproto; 70 u_long ifi_hwassist; 71 time_t __ifi_epoch; 72 struct timeval __ifi_lastchange; 73 }; 74 75 struct if_data_freebsd9 { 76 u_char ifi_type; 77 u_char ifi_physical; 78 u_char ifi_addrlen; 79 u_char ifi_hdrlen; 80 u_char ifi_link_state; 81 u_char ifi_spare_char1; 82 u_char ifi_spare_char2; 83 u_char ifi_datalen; 84 u_long ifi_mtu; 85 u_long ifi_metric; 86 u_long ifi_baudrate; 87 u_long ifi_ipackets; 88 u_long ifi_ierrors; 89 u_long ifi_opackets; 90 u_long ifi_oerrors; 91 u_long ifi_collisions; 92 u_long ifi_ibytes; 93 u_long ifi_obytes; 94 u_long ifi_imcasts; 95 u_long ifi_omcasts; 96 u_long ifi_iqdrops; 97 u_long ifi_noproto; 98 u_long ifi_hwassist; 99 time_t __ifi_epoch; 100 struct timeval __ifi_lastchange; 101 }; 102 103 struct if_data_freebsd10 { 104 u_char ifi_type; 105 u_char ifi_physical; 106 u_char ifi_addrlen; 107 u_char ifi_hdrlen; 108 u_char ifi_link_state; 109 u_char ifi_vhid; 110 u_char ifi_baudrate_pf; 111 u_char ifi_datalen; 112 u_long ifi_mtu; 113 u_long ifi_metric; 114 u_long ifi_baudrate; 115 u_long ifi_ipackets; 116 u_long ifi_ierrors; 117 u_long ifi_opackets; 118 u_long ifi_oerrors; 119 u_long ifi_collisions; 120 u_long ifi_ibytes; 121 u_long ifi_obytes; 122 u_long ifi_imcasts; 123 u_long ifi_omcasts; 124 u_long ifi_iqdrops; 125 u_long ifi_noproto; 126 uint64_t ifi_hwassist; 127 time_t __ifi_epoch; 128 struct timeval __ifi_lastchange; 129 }; 130 131 struct if_data_freebsd11 { 132 uint8_t ifi_type; 133 uint8_t ifi_physical; 134 uint8_t ifi_addrlen; 135 uint8_t ifi_hdrlen; 136 uint8_t ifi_link_state; 137 uint8_t ifi_vhid; 138 uint16_t ifi_datalen; 139 uint32_t ifi_mtu; 140 uint32_t ifi_metric; 141 uint64_t ifi_baudrate; 142 uint64_t ifi_ipackets; 143 uint64_t ifi_ierrors; 144 uint64_t ifi_opackets; 145 uint64_t ifi_oerrors; 146 uint64_t ifi_collisions; 147 uint64_t ifi_ibytes; 148 uint64_t ifi_obytes; 149 uint64_t ifi_imcasts; 150 uint64_t ifi_omcasts; 151 uint64_t ifi_iqdrops; 152 uint64_t ifi_oqdrops; 153 uint64_t ifi_noproto; 154 uint64_t ifi_hwassist; 155 union { 156 time_t tt; 157 uint64_t ph; 158 } __ifi_epoch; 159 union { 160 struct timeval tv; 161 struct { 162 uint64_t ph1; 163 uint64_t ph2; 164 } ph; 165 } __ifi_lastchange; 166 }; 167 168 struct if_msghdr_freebsd7 { 169 u_short ifm_msglen; 170 u_char ifm_version; 171 u_char ifm_type; 172 int ifm_addrs; 173 int ifm_flags; 174 u_short ifm_index; 175 struct if_data_freebsd7 ifm_data; 176 }; 177 178 struct if_msghdr_freebsd8 { 179 u_short ifm_msglen; 180 u_char ifm_version; 181 u_char ifm_type; 182 int ifm_addrs; 183 int ifm_flags; 184 u_short ifm_index; 185 struct if_data_freebsd8 ifm_data; 186 }; 187 188 struct if_msghdr_freebsd9 { 189 u_short ifm_msglen; 190 u_char ifm_version; 191 u_char ifm_type; 192 int ifm_addrs; 193 int ifm_flags; 194 u_short ifm_index; 195 struct if_data_freebsd9 ifm_data; 196 }; 197 198 struct if_msghdr_freebsd10 { 199 u_short ifm_msglen; 200 u_char ifm_version; 201 u_char ifm_type; 202 int ifm_addrs; 203 int ifm_flags; 204 u_short ifm_index; 205 struct if_data_freebsd10 ifm_data; 206 }; 207 208 struct if_msghdr_freebsd11 { 209 u_short ifm_msglen; 210 u_char ifm_version; 211 u_char ifm_type; 212 int ifm_addrs; 213 int ifm_flags; 214 u_short ifm_index; 215 struct if_data_freebsd11 ifm_data; 216 }; 217 */ 218 import "C" 219 220 const ( 221 sizeofIfMsghdrlFreeBSD10 = C.sizeof_struct_if_msghdrl 222 sizeofIfaMsghdrFreeBSD10 = C.sizeof_struct_ifa_msghdr 223 sizeofIfmaMsghdrFreeBSD10 = C.sizeof_struct_ifma_msghdr 224 sizeofIfAnnouncemsghdrFreeBSD10 = C.sizeof_struct_if_announcemsghdr 225 226 sizeofRtMsghdrFreeBSD10 = C.sizeof_struct_rt_msghdr 227 sizeofRtMetricsFreeBSD10 = C.sizeof_struct_rt_metrics 228 229 sizeofIfMsghdrFreeBSD7 = C.sizeof_struct_if_msghdr_freebsd7 230 sizeofIfMsghdrFreeBSD8 = C.sizeof_struct_if_msghdr_freebsd8 231 sizeofIfMsghdrFreeBSD9 = C.sizeof_struct_if_msghdr_freebsd9 232 sizeofIfMsghdrFreeBSD10 = C.sizeof_struct_if_msghdr_freebsd10 233 sizeofIfMsghdrFreeBSD11 = C.sizeof_struct_if_msghdr_freebsd11 234 235 sizeofIfaMsghdrFreeBSD10Emu = C.sizeof_struct_ifa_msghdr 236 sizeofIfmaMsghdrFreeBSD10Emu = C.sizeof_struct_ifma_msghdr 237 sizeofIfAnnouncemsghdrFreeBSD10Emu = C.sizeof_struct_if_announcemsghdr 238 239 sizeofRtMsghdrFreeBSD10Emu = C.sizeof_struct_rt_msghdr 240 sizeofRtMetricsFreeBSD10Emu = C.sizeof_struct_rt_metrics 241 242 sizeofIfMsghdrFreeBSD7Emu = C.sizeof_struct_if_msghdr_freebsd7 243 sizeofIfMsghdrFreeBSD8Emu = C.sizeof_struct_if_msghdr_freebsd8 244 sizeofIfMsghdrFreeBSD9Emu = C.sizeof_struct_if_msghdr_freebsd9 245 sizeofIfMsghdrFreeBSD10Emu = C.sizeof_struct_if_msghdr_freebsd10 246 sizeofIfMsghdrFreeBSD11Emu = C.sizeof_struct_if_msghdr_freebsd11 247 248 sizeofSockaddrInet = C.sizeof_struct_sockaddr_in 249 sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 250 ) 251