mirror of
https://github.com/golang/sys.git
synced 2026-02-08 03:36:03 +03:00
Use mkall to generate types
This commit is contained in:
@@ -257,6 +257,16 @@ struct my_sockaddr_un {
|
||||
#endif
|
||||
};
|
||||
|
||||
// copied from /usr/include/netiucv/iucv.h modified with explicit signed chars.
|
||||
struct sockaddr_iucv {
|
||||
sa_family_t siucv_family;
|
||||
unsigned short siucv_port;
|
||||
unsigned int siucv_addr;
|
||||
signed char siucv_nodeid[8];
|
||||
signed char siucv_user_id[8];
|
||||
signed char siucv_name[8];
|
||||
};
|
||||
|
||||
#ifdef __ARM_EABI__
|
||||
typedef struct user_regs PtraceRegs;
|
||||
#elif defined(__aarch64__)
|
||||
|
||||
@@ -156,6 +156,18 @@ func Test_anyToSockaddr(t *testing.T) {
|
||||
Name: "gopher",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "AF_IUCV",
|
||||
rsa: sockaddrIUCVToAny(RawSockaddrIUCV{
|
||||
Family: AF_IUCV,
|
||||
User_id: [8]int8{'*', 'M', 'S', 'G', ' ', ' ', ' ', ' '},
|
||||
Name: [8]int8{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
|
||||
}),
|
||||
sa: &SockaddrIUCV{
|
||||
UserID: "*MSG ",
|
||||
Name: " ",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "AF_MAX EAFNOSUPPORT",
|
||||
rsa: &RawSockaddrAny{
|
||||
@@ -505,3 +517,12 @@ func sockaddrUnixToAny(in RawSockaddrUnix) *RawSockaddrAny {
|
||||
|
||||
return &out
|
||||
}
|
||||
|
||||
func sockaddrIUCVToAny(in RawSockaddrIUCV) *RawSockaddrAny {
|
||||
var out RawSockaddrAny
|
||||
copy(
|
||||
(*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:],
|
||||
(*(*[SizeofSockaddrUnix]byte)(unsafe.Pointer(&in)))[:],
|
||||
)
|
||||
return &out
|
||||
}
|
||||
|
||||
@@ -902,8 +902,12 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
sa.raw.User_id[i] = ' '
|
||||
sa.raw.Name[i] = ' '
|
||||
}
|
||||
copy(sa.raw.User_id[:], []byte(sa.UserID))
|
||||
copy(sa.raw.Name[:], []byte(sa.Name))
|
||||
for i, b := range []byte(sa.UserID[:8]) {
|
||||
sa.raw.User_id[i] = int8(b)
|
||||
}
|
||||
for i, b := range []byte(sa.Name[:8]) {
|
||||
sa.raw.Name[i] = int8(b)
|
||||
}
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil
|
||||
}
|
||||
|
||||
@@ -1087,6 +1091,23 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||
}
|
||||
|
||||
return sa, nil
|
||||
case AF_IUCV:
|
||||
pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))
|
||||
|
||||
var user [8]byte
|
||||
var name [8]byte
|
||||
|
||||
for i := 0; i < 8; i++ {
|
||||
user[i] = byte(pp.User_id[i])
|
||||
name[i] = byte(pp.Name[i])
|
||||
}
|
||||
|
||||
sa := &SockaddrIUCV{
|
||||
UserID: string(user[:]),
|
||||
Name: string(name[:]),
|
||||
}
|
||||
return sa, nil
|
||||
|
||||
}
|
||||
return nil, EAFNOSUPPORT
|
||||
}
|
||||
|
||||
@@ -311,12 +311,12 @@ type RawSockaddrL2TPIP6 struct {
|
||||
}
|
||||
|
||||
type RawSockaddrIUCV struct {
|
||||
Family uint16
|
||||
Port uint16
|
||||
Addr uint32
|
||||
Nodeid [8]byte
|
||||
User_id [8]byte
|
||||
Name [8]byte
|
||||
Family uint16
|
||||
Port uint16
|
||||
Addr uint32
|
||||
Nodeid [8]int8
|
||||
User_id [8]int8
|
||||
Name [8]int8
|
||||
}
|
||||
|
||||
type _Socklen uint32
|
||||
|
||||
Reference in New Issue
Block a user