Use mkall to generate types

This commit is contained in:
Christian Svensson
2020-08-17 00:09:02 +02:00
parent 8b24ad83a8
commit b964d186b4
4 changed files with 60 additions and 8 deletions

View File

@@ -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__)

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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