diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-12-04 10:00:24 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-12-09 12:35:07 +0100 |
| commit | 72a027681e92ae83bedc1ff8108c7b43c7d71d63 (patch) | |
| tree | b36b654be4d7d60e9bdd3a09c17d54ddb344f18e /sys/linux | |
| parent | 979179d6d60b101ae19b73a8b2f4ac437d06a974 (diff) | |
sys/linux: socketpair returns sockets not just fd's
Diffstat (limited to 'sys/linux')
| -rw-r--r-- | sys/linux/gen/386.go | 8 | ||||
| -rw-r--r-- | sys/linux/gen/amd64.go | 8 | ||||
| -rw-r--r-- | sys/linux/gen/arm.go | 8 | ||||
| -rw-r--r-- | sys/linux/gen/arm64.go | 8 | ||||
| -rw-r--r-- | sys/linux/gen/ppc64le.go | 8 | ||||
| -rw-r--r-- | sys/linux/socket.txt | 7 |
6 files changed, 36 insertions, 11 deletions
diff --git a/sys/linux/gen/386.go b/sys/linux/gen/386.go index 7d3c754e8..e1e242be6 100644 --- a/sys/linux/gen/386.go +++ b/sys/linux/gen/386.go @@ -17425,6 +17425,10 @@ var structDescs_386 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 2}}, IsPad: true}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "filter", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "sock_filter"}}}}, }}}, + {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, + }}}, {Key: StructKey{Name: "sockaddr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr", TypeSize: 16, ArgDir: 2}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in", Dir: 2}, FldName: "in"}, &StructType{Key: StructKey{Name: "sockaddr_ax25", Dir: 2}, FldName: "ax25"}, @@ -34003,7 +34007,7 @@ var syscalls_386 = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 4}}, Vals: []uint64{1, 2, 10, 4, 16, 9, 3, 8, 5, 17}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 4}}, Vals: []uint64{1, 2, 3, 4, 5, 6, 10, 2048, 524288}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}}, - &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}}, }}, {NR: 360, Name: "socketpair$nbd", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 4}}, Val: 1}, @@ -42036,4 +42040,4 @@ var consts_386 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_386 = "e3d1326dc7acd928c5f8127606814f4d7f650211" +const revision_386 = "58d31ec7d3cff87f1ff37394f2e436239d78d18a" diff --git a/sys/linux/gen/amd64.go b/sys/linux/gen/amd64.go index da43f0d79..8925576d3 100644 --- a/sys/linux/gen/amd64.go +++ b/sys/linux/gen/amd64.go @@ -17711,6 +17711,10 @@ var structDescs_amd64 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "filter", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "sock_filter"}}}}, }}}, + {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, + }}}, {Key: StructKey{Name: "sockaddr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr", TypeSize: 16, ArgDir: 2}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in", Dir: 2}, FldName: "in"}, &StructType{Key: StructKey{Name: "sockaddr_ax25", Dir: 2}, FldName: "ax25"}, @@ -34684,7 +34688,7 @@ var syscalls_amd64 = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 8}}, Vals: []uint64{1, 2, 10, 4, 16, 9, 3, 8, 5, 17}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 8}}, Vals: []uint64{1, 2, 3, 4, 5, 6, 10, 2048, 524288}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}}, - &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}}, }}, {NR: 53, Name: "socketpair$nbd", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 8}}, Val: 1}, @@ -42742,4 +42746,4 @@ var consts_amd64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_amd64 = "cac77b41f3efd2cec17bbf4905a49f3a1954c3b2" +const revision_amd64 = "ce651cc104e6954aba93867d825eee9cc029d8eb" diff --git a/sys/linux/gen/arm.go b/sys/linux/gen/arm.go index b3d40a9e7..89bcb630f 100644 --- a/sys/linux/gen/arm.go +++ b/sys/linux/gen/arm.go @@ -17306,6 +17306,10 @@ var structDescs_arm = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 2}}, IsPad: true}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "filter", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "sock_filter"}}}}, }}}, + {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, + }}}, {Key: StructKey{Name: "sockaddr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr", TypeSize: 16, ArgDir: 2}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in", Dir: 2}, FldName: "in"}, &StructType{Key: StructKey{Name: "sockaddr_ax25", Dir: 2}, FldName: "ax25"}, @@ -33917,7 +33921,7 @@ var syscalls_arm = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 4}}, Vals: []uint64{1, 2, 10, 4, 16, 9, 3, 8, 5, 17}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 4}}, Vals: []uint64{1, 2, 3, 4, 5, 6, 10, 2048, 524288}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}}, - &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}}, }}, {NR: 288, Name: "socketpair$nbd", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 4}}, Val: 1}, @@ -41875,4 +41879,4 @@ var consts_arm = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm = "8aca29b16933f7a1580b78382627a56fcf2580ec" +const revision_arm = "999064b4e9dc295245e0b6f514d8d4670be3c0bd" diff --git a/sys/linux/gen/arm64.go b/sys/linux/gen/arm64.go index 3227db269..816226f43 100644 --- a/sys/linux/gen/arm64.go +++ b/sys/linux/gen/arm64.go @@ -17528,6 +17528,10 @@ var structDescs_arm64 = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "filter", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "sock_filter"}}}}, }}}, + {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, + }}}, {Key: StructKey{Name: "sockaddr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr", TypeSize: 16, ArgDir: 2}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in", Dir: 2}, FldName: "in"}, &StructType{Key: StructKey{Name: "sockaddr_ax25", Dir: 2}, FldName: "ax25"}, @@ -34180,7 +34184,7 @@ var syscalls_arm64 = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 8}}, Vals: []uint64{1, 2, 10, 4, 16, 9, 3, 8, 5, 17}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 8}}, Vals: []uint64{1, 2, 3, 4, 5, 6, 10, 2048, 524288}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}}, - &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}}, }}, {NR: 199, Name: "socketpair$nbd", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 8}}, Val: 1}, @@ -42100,4 +42104,4 @@ var consts_arm64 = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_arm64 = "52914b8833c61ec7a5f1d22fd2cc51c8d2af40e8" +const revision_arm64 = "7b7f23000fc51c9dad1f7b00313cdf29d9241b11" diff --git a/sys/linux/gen/ppc64le.go b/sys/linux/gen/ppc64le.go index b903f0ef9..97f4739ae 100644 --- a/sys/linux/gen/ppc64le.go +++ b/sys/linux/gen/ppc64le.go @@ -17410,6 +17410,10 @@ var structDescs_ppc64le = []*KeyedStruct{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 6}}, IsPad: true}, &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "filter", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "sock_filter"}}}}, }}}, + {Key: StructKey{Name: "sock_pair", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sock_pair", TypeSize: 8, ArgDir: 1}, Fields: []Type{ + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd0", TypeSize: 4, ArgDir: 1}}, + &ResourceType{TypeCommon: TypeCommon{TypeName: "sock", FldName: "fd1", TypeSize: 4, ArgDir: 1}}, + }}}, {Key: StructKey{Name: "sockaddr", Dir: 2}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr", TypeSize: 16, ArgDir: 2}, Fields: []Type{ &StructType{Key: StructKey{Name: "sockaddr_in", Dir: 2}, FldName: "in"}, &StructType{Key: StructKey{Name: "sockaddr_ax25", Dir: 2}, FldName: "ax25"}, @@ -32540,7 +32544,7 @@ var syscalls_ppc64le = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 8}}, Vals: []uint64{1, 2, 10, 4, 16, 9, 3, 8, 5, 17}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 8}}, Vals: []uint64{1, 2, 3, 4, 5, 6, 10, 2048, 524288}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "proto", TypeSize: 1}}}, - &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}}, + &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "fds", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "sock_pair", Dir: 1}}}, }}, {NR: 333, Name: "socketpair$nbd", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 8}}, Val: 1}, @@ -39458,4 +39462,4 @@ var consts_ppc64le = []ConstValue{ {Name: "bpf_insn_load_imm_dw", Value: 24}, } -const revision_ppc64le = "1332b67362ce758fb5a9b10c586379e1a0a71665" +const revision_ppc64le = "593afc8abc0bfe571d26ecd978077abef6ec08c0" diff --git a/sys/linux/socket.txt b/sys/linux/socket.txt index 14f723608..b26b1283b 100644 --- a/sys/linux/socket.txt +++ b/sys/linux/socket.txt @@ -18,7 +18,7 @@ type sock_port int16be[20000:20004] # TODO: describe socketcall syscall socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock -socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, pipefd]) +socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, sock_pair]) bind(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr]) connect(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr]) accept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]]) sock @@ -47,6 +47,11 @@ send_flags = MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, MSG_EOR, MSG_MORE, MSG_NO recv_flags = MSG_CMSG_CLOEXEC, MSG_DONTWAIT, MSG_ERRQUEUE, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, MSG_WAITFORONE cmsg_levels = SOL_SOCKET, IPPROTO_ICMP, SOL_IP, SOL_TCP, SOL_UDP, SOL_IPV6, SOL_ICMPV6, SOL_SCTP, SOL_UDPLITE, SOL_RAW, SOL_IPX, SOL_AX25, SOL_ATALK, SOL_NETROM, SOL_ROSE, SOL_DECNET, SOL_PACKET, SOL_ATM, SOL_AAL, SOL_IRDA, SOL_NETBEUI, SOL_LLC, SOL_DCCP, SOL_NETLINK, SOL_TIPC, SOL_RXRPC, SOL_PPPOL2TP, SOL_BLUETOOTH, SOL_PNPIPE, SOL_RDS, SOL_IUCV, SOL_CAIF, SOL_ALG, SOL_NFC, SOL_KCM +sock_pair { + fd0 sock + fd1 sock +} + # This sockaddr type corresponds to the struct sockaddr and is 16 bytes or less. # TODO: add AF_APPLETALK, AF_ATMPVC, AF_X25, AF_ROSE, AF_DECnet, AF_ATMSVC, AF_IRDA, AF_IB, AF_TIPC, AF_IUCV, AF_RXRPC, AF_ISDN, AF_PHONET, AF_IEEE802154, AF_CAIF, AF_QIPCRTR # Note: AF_UNIX, AF_INET6, AF_PACKET, AF_ALG, AF_PPPOX sockaddr is bigger than 16 bytes |
