OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
vendor
/
golang.org
/
x
/
net
/
route
Server IP: 191.96.63.230
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
address.go
9.85 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
binary.go
2.78 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
empty.s
279 bytes
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface.go
1.92 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface_announce.go
805 bytes
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface_classic.go
1.63 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface_freebsd.go
1.9 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface_multicast.go
864 bytes
12/01/2022 06:13:01 PM
rw-r--r--
📄
interface_openbsd.go
2.13 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
message.go
1.58 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
route.go
4.27 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
route_classic.go
1.9 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
route_openbsd.go
1.7 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys.go
969 bytes
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys_darwin.go
2.67 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys_dragonfly.go
2.67 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys_freebsd.go
4.58 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys_netbsd.go
2.15 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
sys_openbsd.go
2.05 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
syscall.go
446 bytes
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_darwin.go
1.96 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_dragonfly.go
1.95 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_freebsd_386.go
2.8 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_freebsd_amd64.go
2.7 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_freebsd_arm.go
2.7 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_freebsd_arm64.go
2.7 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_netbsd.go
1.89 KB
12/01/2022 06:13:01 PM
rw-r--r--
📄
zsys_openbsd.go
1.95 KB
12/01/2022 06:13:01 PM
rw-r--r--
Editing: sys_freebsd.go
Close
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package route import ( "syscall" "unsafe" ) func (typ RIBType) parseable() bool { return true } // RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } // SysType implements the SysType method of Sys interface. func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } // Sys implements the Sys method of Message interface. func (m *RouteMessage) Sys() []Sys { if kernelAlign == 8 { return []Sys{ &RouteMetrics{ PathMTU: int(nativeEndian.Uint64(m.raw[m.extOff+8 : m.extOff+16])), }, } } return []Sys{ &RouteMetrics{ PathMTU: int(nativeEndian.Uint32(m.raw[m.extOff+4 : m.extOff+8])), }, } } // InterfaceMetrics represents interface metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit } // SysType implements the SysType method of Sys interface. func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } // Sys implements the Sys method of Message interface. func (m *InterfaceMessage) Sys() []Sys { return []Sys{ &InterfaceMetrics{ Type: int(m.raw[m.extOff]), MTU: int(nativeEndian.Uint32(m.raw[m.extOff+8 : m.extOff+12])), }, } } var compatFreeBSD32 bool // 386 emulation on amd64 func probeRoutingStack() (int, map[int]*wireFormat) { var p uintptr wordSize := int(unsafe.Sizeof(p)) align := wordSize // In the case of kern.supported_archs="amd64 i386", we need // to know the underlying kernel's architecture because the // alignment for routing facilities are set at the build time // of the kernel. conf, _ := syscall.Sysctl("kern.conftxt") for i, j := 0, 0; j < len(conf); j++ { if conf[j] != '\n' { continue } s := conf[i:j] i = j + 1 if len(s) > len("machine") && s[:len("machine")] == "machine" { s = s[len("machine"):] for k := 0; k < len(s); k++ { if s[k] == ' ' || s[k] == '\t' { s = s[1:] } break } if s == "amd64" { align = 8 } break } } if align != wordSize { compatFreeBSD32 = true // 386 emulation on amd64 } var rtm, ifm, ifam, ifmam, ifanm *wireFormat if compatFreeBSD32 { rtm = &wireFormat{extOff: sizeofRtMsghdrFreeBSD10Emu - sizeofRtMetricsFreeBSD10Emu, bodyOff: sizeofRtMsghdrFreeBSD10Emu} ifm = &wireFormat{extOff: 16} ifam = &wireFormat{extOff: sizeofIfaMsghdrFreeBSD10Emu, bodyOff: sizeofIfaMsghdrFreeBSD10Emu} ifmam = &wireFormat{extOff: sizeofIfmaMsghdrFreeBSD10Emu, bodyOff: sizeofIfmaMsghdrFreeBSD10Emu} ifanm = &wireFormat{extOff: sizeofIfAnnouncemsghdrFreeBSD10Emu, bodyOff: sizeofIfAnnouncemsghdrFreeBSD10Emu} } else { rtm = &wireFormat{extOff: sizeofRtMsghdrFreeBSD10 - sizeofRtMetricsFreeBSD10, bodyOff: sizeofRtMsghdrFreeBSD10} ifm = &wireFormat{extOff: 16} ifam = &wireFormat{extOff: sizeofIfaMsghdrFreeBSD10, bodyOff: sizeofIfaMsghdrFreeBSD10} ifmam = &wireFormat{extOff: sizeofIfmaMsghdrFreeBSD10, bodyOff: sizeofIfmaMsghdrFreeBSD10} ifanm = &wireFormat{extOff: sizeofIfAnnouncemsghdrFreeBSD10, bodyOff: sizeofIfAnnouncemsghdrFreeBSD10} } rel, _ := syscall.SysctlUint32("kern.osreldate") switch { case rel < 800000: if compatFreeBSD32 { ifm.bodyOff = sizeofIfMsghdrFreeBSD7Emu } else { ifm.bodyOff = sizeofIfMsghdrFreeBSD7 } case 800000 <= rel && rel < 900000: if compatFreeBSD32 { ifm.bodyOff = sizeofIfMsghdrFreeBSD8Emu } else { ifm.bodyOff = sizeofIfMsghdrFreeBSD8 } case 900000 <= rel && rel < 1000000: if compatFreeBSD32 { ifm.bodyOff = sizeofIfMsghdrFreeBSD9Emu } else { ifm.bodyOff = sizeofIfMsghdrFreeBSD9 } case 1000000 <= rel && rel < 1100000: if compatFreeBSD32 { ifm.bodyOff = sizeofIfMsghdrFreeBSD10Emu } else { ifm.bodyOff = sizeofIfMsghdrFreeBSD10 } default: if compatFreeBSD32 { ifm.bodyOff = sizeofIfMsghdrFreeBSD11Emu } else { ifm.bodyOff = sizeofIfMsghdrFreeBSD11 } } rtm.parse = rtm.parseRouteMessage ifm.parse = ifm.parseInterfaceMessage ifam.parse = ifam.parseInterfaceAddrMessage ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage ifanm.parse = ifanm.parseInterfaceAnnounceMessage return align, map[int]*wireFormat{ sysRTM_ADD: rtm, sysRTM_DELETE: rtm, sysRTM_CHANGE: rtm, sysRTM_GET: rtm, sysRTM_LOSING: rtm, sysRTM_REDIRECT: rtm, sysRTM_MISS: rtm, sysRTM_LOCK: rtm, sysRTM_RESOLVE: rtm, sysRTM_NEWADDR: ifam, sysRTM_DELADDR: ifam, sysRTM_IFINFO: ifm, sysRTM_NEWMADDR: ifmam, sysRTM_DELMADDR: ifmam, sysRTM_IFANNOUNCE: ifanm, } }