From 99fd96656f003745e4d1ee59ec590789b8ec9fbd Mon Sep 17 00:00:00 2001 From: Michael Tuexen Date: Sun, 9 Dec 2018 14:55:34 +0100 Subject: sys/freebsd: fix socketpair usage --- sys/freebsd/gen/amd64.go | 8 ++++++-- sys/freebsd/socket.txt | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'sys') diff --git a/sys/freebsd/gen/amd64.go b/sys/freebsd/gen/amd64.go index 419f89796..4fae36493 100644 --- a/sys/freebsd/gen/amd64.go +++ b/sys/freebsd/gen/amd64.go @@ -421,6 +421,10 @@ var structDescs_amd64 = []*KeyedStruct{ {Key: StructKey{Name: "sigset"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sigset", TypeSize: 8}, Fields: []Type{ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int64", FldName: "mask", TypeSize: 8}}}, }}}, + {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_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sockaddr_in", TypeSize: 16}, Fields: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "family", TypeSize: 2}}, Val: 2}, &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "port", TypeSize: 2}, ArgFormat: 1}, ValuesStart: 20000, ValuesPerProc: 4}, @@ -1862,7 +1866,7 @@ var syscalls_amd64 = []*Syscall{ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_domain", FldName: "domain", TypeSize: 8}}, Vals: []uint64{1, 2, 16, 23, 28}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "socket_type", FldName: "type", TypeSize: 8}}, Vals: []uint64{1, 2, 3, 4, 5, 536870912, 268435456}}, &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: 135, Name: "socketpair$unix", CallName: "socketpair", Args: []Type{ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "domain", TypeSize: 8}}, Val: 1}, @@ -2406,4 +2410,4 @@ var consts_amd64 = []ConstValue{ {Name: "WUNTRACED", Value: 2}, } -const revision_amd64 = "22112dfc79f66bcb8c6e3f8f1cf5f7e0d005927f" +const revision_amd64 = "d990a6df2ded440a9df7303f0bfb0cddcc0d448f" diff --git a/sys/freebsd/socket.txt b/sys/freebsd/socket.txt index bbe312989..18a35c3eb 100644 --- a/sys/freebsd/socket.txt +++ b/sys/freebsd/socket.txt @@ -15,7 +15,7 @@ type sock_port proc[20000, 4, int16be] # 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 @@ -43,6 +43,11 @@ recv_flags = MSG_OOB, MSG_PEEK, MSG_WAITALL, MSG_DONTWAIT, MSG_CMSG_CLOEXEC cmsg_levels = SOL_SOCKET, IPPROTO_IP, IPPROTO_IPV6, IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_UDP, IPPROTO_UDPLITE +sock_pair { + fd0 sock + fd1 sock +} + # This sockaddr type corresponds to the sockaddr_storage type and is 128 bytes size. sockaddr_storage [ un sockaddr_un -- cgit mrf-deployment