libc: more net stubs
This commit is contained in:
parent
487d0f3a6e
commit
020c3cdb3c
|
@ -0,0 +1,11 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <_cheader.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
_Begin_C_Header
|
||||||
|
|
||||||
|
#define INADDR_ANY (unsigned long int)0x0
|
||||||
|
|
||||||
|
_End_C_Header
|
|
@ -0,0 +1,23 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <_cheader.h>
|
||||||
|
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
_Begin_C_Header
|
||||||
|
|
||||||
|
extern int getnameinfo(const struct sockaddr *addr, socklen_t addrlen,
|
||||||
|
char *host, socklen_t hostlen,
|
||||||
|
char *serv, socklen_t servlen, int flags);
|
||||||
|
|
||||||
|
extern int getaddrinfo(const char *node, const char *service,
|
||||||
|
const struct addrinfo *hints,
|
||||||
|
struct addrinfo **res);
|
||||||
|
|
||||||
|
extern void freeaddrinfo(struct addrinfo *res);
|
||||||
|
|
||||||
|
#define NI_NUMERICHOST 1
|
||||||
|
#define NI_MAXHOST 255
|
||||||
|
|
||||||
|
|
||||||
|
_End_C_Header
|
|
@ -18,6 +18,7 @@ _Begin_C_Header
|
||||||
#define SOL_SOCKET 0
|
#define SOL_SOCKET 0
|
||||||
|
|
||||||
#define SO_KEEPALIVE 1
|
#define SO_KEEPALIVE 1
|
||||||
|
#define SO_REUSEADDR 2
|
||||||
|
|
||||||
struct hostent {
|
struct hostent {
|
||||||
char *h_name; /* official name of host */
|
char *h_name; /* official name of host */
|
||||||
|
@ -73,6 +74,10 @@ struct msghdr {
|
||||||
int msg_flags; /* flags on received message */
|
int msg_flags; /* flags on received message */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct sockaddr_storage {
|
||||||
|
unsigned short ss_family;
|
||||||
|
char _ss_pad[128];
|
||||||
|
};
|
||||||
|
|
||||||
typedef uint32_t in_addr_t;
|
typedef uint32_t in_addr_t;
|
||||||
typedef uint16_t in_port_t;
|
typedef uint16_t in_port_t;
|
||||||
|
@ -100,6 +105,9 @@ extern int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
|
||||||
extern int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
|
extern int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
|
||||||
extern int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
|
extern int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
|
||||||
|
|
||||||
|
extern int connect(int sockfd, const struct sockaddr * addr, socklen_t addrlen);
|
||||||
|
extern int shutdown(int sockfd, int how);
|
||||||
|
|
||||||
_End_C_Header
|
_End_C_Header
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,4 +37,16 @@ typedef int clock_t;
|
||||||
extern clock_t clock(void);
|
extern clock_t clock(void);
|
||||||
#define CLOCKS_PER_SEC 1
|
#define CLOCKS_PER_SEC 1
|
||||||
|
|
||||||
|
struct timespec {
|
||||||
|
time_t tv_sec;
|
||||||
|
long tv_nsec;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef int clockid_t;
|
||||||
|
|
||||||
|
#define CLOCK_REALTIME 0
|
||||||
|
#define CLOCK_MONOTONIC 1
|
||||||
|
|
||||||
|
extern int clock_gettime(clockid_t clk_id, struct timespec *tp);
|
||||||
|
|
||||||
_End_C_Header
|
_End_C_Header
|
||||||
|
|
|
@ -123,4 +123,7 @@ int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int shutdown(int sockfd, int how) {
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#include <time.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
int clock_gettime(clockid_t clk_id, struct timespec *tp) {
|
||||||
|
if (clk_id < 0 || clk_id > 1) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
struct timeval t;
|
||||||
|
gettimeofday(&t, NULL);
|
||||||
|
|
||||||
|
tp->tv_sec = t.tv_sec;
|
||||||
|
tp->tv_nsec = t.tv_usec * 1000;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue