diff --git a/system/include/net/if.h b/system/include/net/if.h index 9a4badf31..dd7884aa8 100644 --- a/system/include/net/if.h +++ b/system/include/net/if.h @@ -2,6 +2,10 @@ #ifndef _NET_IF_H #define _NET_IF_H +#include +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -11,6 +15,61 @@ struct if_nameindex { char *if_name; }; +#define IFHWADDRLEN 6 +#define IFNAMSIZ 16 + +struct ifmap { + unsigned long int mem_start; + unsigned long int mem_end; + unsigned short int base_addr; + unsigned char irq; + unsigned char dma; + unsigned char port; +}; + +struct ifreq { + union { + char ifrn_name[IFNAMSIZ]; + } ifr_ifrn; + union { + struct sockaddr ifru_addr; + struct sockaddr ifru_destaddr; + struct sockaddr ifru_broadaddr; + struct sockaddr ifru_netmask; + struct sockaddr ifru_hwaddr; + short int ifru_flags; + int ifru_ivalue; + int ifru_mtu; + struct ifmap ifru_map; + char ifru_slave[IFNAMSIZ]; + char ifru_newname[IFNAMSIZ]; + caddr_t ifru_data; + } ifr_ifru; +}; +#define ifr_name ifr_ifrn.ifrn_name +#define ifr_addr ifr_ifru.ifru_addr +#define ifr_destaddr ifr_ifru.ifru_destaddr +#define ifr_broadaddr ifr_ifru.ifru_broadaddr +#define ifr_netmask ifr_ifru.ifru_netmask +#define ifr_hwaddr ifr_ifru.ifru_hwaddr +#define ifr_flags ifr_ifru.ifru_flags +#define ifr_ivalue ifr_ifru.ifru_ivalue +#define ifr_mtu ifr_ifru.ifru_mtu +#define ifr_map ifr_ifru.ifru_map +#define ifr_slave ifr_ifru.ifru_slave +#define ifr_newname ifr_ifru.ifru_newname +#define ifr_data ifr_ifru.ifru_data + +struct ifconf { + int ifc_len; + union { + caddr_t ifcu_buf; + struct ifreq* ifcu_req; + } ifc_ifcu; +}; +#define ifc_buf ifc_ifcu.ifcu_buf +#define ifc_req ifc_ifcu.ifcu_req + #define IF_NAMESIZE abort(0); unsigned if_nametoindex(const char *a); @@ -18,6 +77,8 @@ char *if_indextoname(unsigned int a, char *b); struct if_nameindex *if_nameindex(); void if_freenameindex(struct if_nameindex *a); + + #ifdef __cplusplus } #endif diff --git a/system/include/netdb.h b/system/include/netdb.h new file mode 100644 index 000000000..20f876dff --- /dev/null +++ b/system/include/netdb.h @@ -0,0 +1,55 @@ +#ifndef _NETDB_H +#define _NETDB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define HOST_NOT_FOUND 1 +#define TRY_AGAIN 2 +#define NO_RECOVERY 3 +#define NO_DATA 4 + +#define IP_TOS 1 +#define IP_TTL 2 +#define IP_HDRINCL 3 +#define IP_OPTIONS 4 +#define IP_ROUTER_ALERT 5 +#define IP_RECVOPTS 6 +#define IP_RETOPTS 7 +#define IP_PKTINFO 8 +#define IP_PKTOPTIONS 9 +#define IP_MTU_DISCOVER 10 +#define IP_RECVERR 11 +#define IP_RECVTTL 12 +#define IP_RECVTOS 13 +#define IP_MTU 14 +#define IP_FREEBIND 15 +#define IP_IPSEC_POLICY 16 +#define IP_XFRM_POLICY 17 +#define IP_PASSSEC 18 +#define IP_TRANSPARENT 19 + +typedef int socklen_t; + +struct hostent { + char* h_name; + char** h_aliases; + int h_addrtype; + int h_length; + char** h_addr_list; +}; +#define h_addr h_addr_list[0] + +struct hostent* gethostbyaddr(const void* addr, socklen_t len, int type); +struct hostent* gethostbyname(const char* name); +void sethostent(int stayopen); +void endhostent(void); +void herror(const char* s); +const char* hstrerror(int err); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/system/include/sys/ioctl.h b/system/include/sys/ioctl.h index 061ba9256..4d2c52972 100644 --- a/system/include/sys/ioctl.h +++ b/system/include/sys/ioctl.h @@ -1,7 +1,17 @@ +#ifndef _IOCTL_H +#define _IOCTL_H -/* ioctl.h */ +#ifdef __cplusplus +extern "C" { +#endif -#define SO_RCVTIMEO 1000 -#define SO_SNDTIMEO 2000 +#define SIOCGIFCONF 1 // bogus value +#define SIOCGIFNETMASK 2 // bogus value +int ioctl(int d, int request, ...); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/system/include/sys/socket.h b/system/include/sys/socket.h index 2c23ddb7c..33c10932f 100644 --- a/system/include/sys/socket.h +++ b/system/include/sys/socket.h @@ -1,10 +1,14 @@ #ifndef _SYS_SOCKET_H #define _SYS_SOCKET_H +#include +#include + #ifdef __cplusplus extern "C" { #endif +// Note that the values of these constants are mostly arbitrary numbers. #define SOMAXCONN 128 #define PF_INET 2 #define SO_BROADCAST 6 @@ -17,8 +21,10 @@ extern "C" { #define SO_REUSEADDR 30 #define SO_SNDBUF 40 #define SO_RCVBUF 60 +#define SO_LINGER 70 +#define SO_NOSIGPIPE 80 -typedef int socklen_t; +#define SHUT_RDWR 1 typedef unsigned int sa_family_t; #define AF_INET 1 @@ -41,6 +47,7 @@ int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen); int listen(int sockfd, int backlog); int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); +int shutdown(int sockfd, int how); int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); ssize_t recv(int s, void *buf, size_t len, int flags); ssize_t send(int s, const void *buf, size_t len, int flags);