aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-04 10:00:24 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-09 12:35:07 +0100
commit72a027681e92ae83bedc1ff8108c7b43c7d71d63 (patch)
treeb36b654be4d7d60e9bdd3a09c17d54ddb344f18e /sys/linux
parent979179d6d60b101ae19b73a8b2f4ac437d06a974 (diff)
sys/linux: socketpair returns sockets not just fd's
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/gen/386.go8
-rw-r--r--sys/linux/gen/amd64.go8
-rw-r--r--sys/linux/gen/arm.go8
-rw-r--r--sys/linux/gen/arm64.go8
-rw-r--r--sys/linux/gen/ppc64le.go8
-rw-r--r--sys/linux/socket.txt7
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