diff options
| -rw-r--r-- | arch/x86_64/bits/signal.h | 2 | ||||
| -rw-r--r-- | include/arpa/inet.h | 1 | ||||
| -rw-r--r-- | include/link.h | 19 | ||||
| -rw-r--r-- | include/sys/socket.h | 2 | ||||
| -rw-r--r-- | src/network/inet_network.c | 11 | 
5 files changed, 34 insertions, 1 deletions
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 <elf.h>  #define __NEED_size_t +#define __NEED_uint32_t  #include <bits/alltypes.h>  #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 <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#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); +}  | 
