diff --git a/arch/x86_64/bits/signal.h b/arch/x86_64/bits/signal.h index b4220fe2..71b656b5 100644 --- a/arch/x86_64/bits/signal.h +++ b/arch/x86_64/bits/signal.h @@ -20,7 +20,7 @@ #define REG_RSP 15 #define REG_RIP 16 #define REG_EFL 17 -#define REG_CSGFS 18 +#define REG_CSGSFS 18 #define REG_ERR 19 #define REG_TRAPNO 20 #define REG_OLDMASK 21 diff --git a/include/arpa/inet.h b/include/arpa/inet.h index 92938403..fdc501aa 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -24,6 +24,7 @@ uint32_t ntohl(uint32_t); uint16_t ntohs(uint16_t); in_addr_t inet_addr (const char *); +in_addr_t inet_network (const char *); char *inet_ntoa (struct in_addr); int inet_pton (int, const char *__restrict, void *__restrict); const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t); diff --git a/include/link.h b/include/link.h index d5160e7e..c30431e9 100644 --- a/include/link.h +++ b/include/link.h @@ -3,6 +3,7 @@ #include #define __NEED_size_t +#define __NEED_uint32_t #include #if UINTPTR_MAX > 0xffffffff @@ -11,6 +12,9 @@ #define ElfW(type) Elf32_ ## type #endif +/* this is the same everywhere except alpha and s390 */ +typedef uint32_t Elf_Symndx; + struct dl_phdr_info { ElfW(Addr) dlpi_addr; const char *dlpi_name; @@ -22,6 +26,21 @@ struct dl_phdr_info { void *dlpi_tls_data; }; +struct link_map { + ElfW(Addr) l_addr; + char *l_name; + ElfW(Dyn) *l_ld; + struct link_map *l_next, *l_prev; +}; + +struct r_debug { + int r_version; + struct link_map *r_map; + ElfW(Addr) r_brk; + enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state; + ElfW(Addr) r_ldbase; +}; + int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *); #endif diff --git a/include/sys/socket.h b/include/sys/socket.h index f1489186..19b2aa55 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -150,6 +150,8 @@ struct linger #define SO_SNDLOWAT 19 #define SO_RCVTIMEO 20 #define SO_SNDTIMEO 21 +#define SO_SNDBUFFORCE 32 +#define SO_RCVBUFFORCE 33 #endif diff --git a/src/network/inet_network.c b/src/network/inet_network.c new file mode 100644 index 00000000..ae60d7f6 --- /dev/null +++ b/src/network/inet_network.c @@ -0,0 +1,11 @@ +#include +#include +#include +#include "__dns.h" + +in_addr_t inet_network(const char *p) +{ + struct sockaddr_in sin; + if (__ipparse(&sin, AF_INET, p)) return -1; + return ntohl(sin.sin_addr.s_addr); +}