Add getpeername(2) and getsockname(2).

This commit is contained in:
Jonas 'Sortie' Termansen 2014-06-27 23:26:59 +02:00
parent 3760420fbb
commit a8a8154adc
4 changed files with 37 additions and 13 deletions

View File

@ -169,6 +169,8 @@
#define SYSCALL_SETSOCKOPT 141
#define SYSCALL_TCGETBLOB 142
#define SYSCALL_TCSETBLOB 143
#define SYSCALL_MAX_NUM 144 /* index of highest constant + 1 */
#define SYSCALL_GETPEERNAME 144
#define SYSCALL_GETSOCKNAME 145
#define SYSCALL_MAX_NUM 146 /* index of highest constant + 1 */
#endif

View File

@ -1064,6 +1064,22 @@ static ssize_t sys_tcsetblob(int fd, const char* name, const void* buffer, size_
return result;
}
static int sys_getpeername(int fd, struct sockaddr* addr, socklen_t* addrsize)
{
(void) fd;
(void) addr;
(void) addrsize;
return errno = ENOSYS, -1;
}
static int sys_getsockname(int fd, struct sockaddr* addr, socklen_t* addrsize)
{
(void) fd;
(void) addr;
(void) addrsize;
return errno = ENOSYS, -1;
}
void Init()
{
Syscall::Register(SYSCALL_ACCEPT4, (void*) sys_accept4);
@ -1090,6 +1106,8 @@ void Init()
Syscall::Register(SYSCALL_FSYNC, (void*) sys_fsync);
Syscall::Register(SYSCALL_FTRUNCATE, (void*) sys_ftruncate);
Syscall::Register(SYSCALL_FUTIMENS, (void*) sys_futimens);
Syscall::Register(SYSCALL_GETPEERNAME, (void*) sys_getpeername);
Syscall::Register(SYSCALL_GETSOCKNAME, (void*) sys_getsockname);
Syscall::Register(SYSCALL_GETSOCKOPT, (void*) sys_getsockopt);
Syscall::Register(SYSCALL_GETTERMMODE, (void*) sys_gettermmode);
Syscall::Register(SYSCALL_IOCTL, (void*) sys_ioctl);

View File

@ -1,6 +1,6 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2013.
Copyright(C) Jonas 'Sortie' Termansen 2013, 2014.
This file is part of the Sortix C Library.
@ -23,12 +23,14 @@
*******************************************************************************/
#include <sys/socket.h>
#include <sys/syscall.h>
#include <errno.h>
#include <stdio.h>
DEFN_SYSCALL3(int, sys_getpeername, SYSCALL_GETPEERNAME, int, struct sockaddr*, socklen_t*);
extern "C" int getpeername(int, struct sockaddr* restrict, socklen_t* restrict)
extern "C"
int getpeername(int fd,
struct sockaddr* restrict addr,
socklen_t* restrict addrsize)
{
fprintf(stderr, "%s is not implemented yet.\n", __func__);
return errno = ENOSYS, -1;
return sys_getpeername(fd, addr, addrsize);
}

View File

@ -1,6 +1,6 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2013.
Copyright(C) Jonas 'Sortie' Termansen 2013, 2014.
This file is part of the Sortix C Library.
@ -23,12 +23,14 @@
*******************************************************************************/
#include <sys/socket.h>
#include <sys/syscall.h>
#include <errno.h>
#include <stdio.h>
DEFN_SYSCALL3(int, sys_getsockname, SYSCALL_GETSOCKNAME, int, struct sockaddr*, socklen_t*);
extern "C" int getsockname(int, struct sockaddr* restrict, socklen_t* restrict)
extern "C"
int getsockname(int fd,
struct sockaddr* restrict addr,
socklen_t* restrict addrsize)
{
fprintf(stderr, "%s is not implemented yet.\n", __func__);
return errno = ENOSYS, -1;
return sys_getsockname(fd, addr, addrsize);
}