]> Chaos Git - corbenik/ctrulib.git/commitdiff
add network headers, remove libnds dependencies
authorDave Murphy <davem@devkitpro.org>
Wed, 7 May 2014 16:17:36 +0000 (17:17 +0100)
committerDave Murphy <davem@devkitpro.org>
Wed, 4 Jun 2014 12:23:50 +0000 (13:23 +0100)
libctru/Makefile
libctru/include/netdb.h [new file with mode: 0644]
libctru/include/netinet/in.h [new file with mode: 0644]
libctru/include/netinet/tcp.h [new file with mode: 0644]
libctru/include/sys/socket.h [new file with mode: 0644]

index 7279fec0389b67844cef7477f0cc207acf703201..92c78e4dfab22243cbbf3aaa35e3532532c9083a 100644 (file)
@@ -1,6 +1,6 @@
 CC = arm-none-eabi-gcc
 AR = arm-none-eabi-ar
-CFLAGS += -Wall -std=c99 -march=armv6 -O0 -I"$(CURDIR)/include/" -I$(DEVKITPRO)/libnds/include
+CFLAGS += -Wall -std=c99 -march=armv6 -O0 -I"$(CURDIR)/include/"
 
 CFILES = $(wildcard source/*.c)
 OFILES = $(CFILES:source/%.c=build/%.o)
diff --git a/libctru/include/netdb.h b/libctru/include/netdb.h
new file mode 100644 (file)
index 0000000..e24c8ca
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef NETDB_H
+#define NETDB_H
+
+struct hostent {
+   char * h_name;
+   char ** h_aliases;
+   int h_addrtype;
+   int h_length;
+   char ** h_addr_list;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+       struct hostent * gethostbyname(const char * name);
+
+#ifdef __cplusplus
+};
+#endif
+
+
+#endif // NETDB_H
diff --git a/libctru/include/netinet/in.h b/libctru/include/netinet/in.h
new file mode 100644 (file)
index 0000000..5e3acd3
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef NETINET_IN_H
+#define NETINET_IN_H
+
+#include "sys/socket.h"
+
+#define INADDR_ANY             0x00000000
+#define INADDR_BROADCAST       0xFFFFFFFF
+#define INADDR_NONE            0xFFFFFFFF
+
+struct in_addr {
+       unsigned long s_addr;
+};
+
+struct sockaddr_in {
+       unsigned short          sin_family;
+       unsigned short          sin_port;
+       struct in_addr          sin_addr;
+       unsigned char           sin_zero[8];
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+       // actually from arpa/inet.h - but is included through netinet/in.h
+       unsigned long inet_addr(const char *cp);
+       int inet_aton(const char *cp, struct in_addr *inp);
+       char *inet_ntoa(struct in_addr in);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif // NETINET_IN_H
diff --git a/libctru/include/netinet/tcp.h b/libctru/include/netinet/tcp.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/libctru/include/sys/socket.h b/libctru/include/sys/socket.h
new file mode 100644 (file)
index 0000000..1ee3502
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef SYS_SOCKET_H
+#define SYS_SOCKET_H
+
+#include <sys/time.h>
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define  SOL_SOCKET  0xfff    /* options for socket level */
+# define SOL_TCP                6       /* TCP level */
+
+#define PF_UNSPEC              0
+#define PF_INET                        2
+#define PF_INET6               10
+
+#define AF_UNSPEC              PF_UNSPEC
+#define AF_INET                        PF_INET
+#define AF_INET6               PF_INET6
+
+#define SOCK_STREAM            1
+#define SOCK_DGRAM             2
+
+// need to sync FIO* values with commonly accepted ones sometime
+#define FIONBIO                        1
+#define FIONREAD               2
+
+#define SOCKET_ERROR   -1
+
+// send()/recv()/etc flags
+// at present, only MSG_PEEK is implemented though.
+#define MSG_WAITALL            0x40000000
+#define MSG_TRUNC              0x20000000
+#define MSG_PEEK               0x10000000
+#define MSG_OOB                        0x08000000
+#define MSG_EOR                        0x04000000
+#define MSG_DONTROUTE  0x02000000
+#define MSG_CTRUNC             0x01000000
+
+// shutdown() flags:
+#define SHUT_RD                        1
+#define SHUT_WR                        2
+#define SHUT_RDWR              3
+
+/*
+ * Option flags per-socket.
+ */
+#define  SO_DEBUG  0x0001    /* turn on debugging info recording */
+#define  SO_ACCEPTCONN  0x0002    /* socket has had listen() */
+#define  SO_REUSEADDR  0x0004    /* allow local address reuse */
+#define  SO_KEEPALIVE  0x0008    /* keep connections alive */
+#define  SO_DONTROUTE  0x0010    /* just use interface addresses */
+#define  SO_BROADCAST  0x0020    /* permit sending of broadcast msgs */
+#define  SO_USELOOPBACK  0x0040    /* bypass hardware when possible */
+#define  SO_LINGER  0x0080    /* linger on close if data present */
+#define  SO_OOBINLINE  0x0100    /* leave received OOB data in line */
+#define  SO_REUSEPORT   0x0200      /* allow local address & port reuse */
+
+#define SO_DONTLINGER   (int)(~SO_LINGER)
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#define SO_SNDBUF  0x1001    /* send buffer size */
+#define SO_RCVBUF  0x1002    /* receive buffer size */
+#define SO_SNDLOWAT  0x1003    /* send low-water mark */
+#define SO_RCVLOWAT  0x1004    /* receive low-water mark */
+#define SO_SNDTIMEO  0x1005    /* send timeout */
+#define SO_RCVTIMEO  0x1006    /* receive timeout */
+#define  SO_ERROR  0x1007    /* get error status and clear */
+#define  SO_TYPE    0x1008    /* get socket type */
+
+struct sockaddr {
+       unsigned short  sa_family;
+       char            sa_data[14];
+};
+
+#ifndef ntohs
+#define ntohs(num) htons(num)
+#define ntohl(num) htonl(num)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+       int socket(int domain, int type, int protocol);
+       int bind(int socket, const struct sockaddr * addr, int addr_len);
+       int connect(int socket, const struct sockaddr * addr, int addr_len);
+       int send(int socket, const void * data, int sendlength, int flags);
+       int recv(int socket, void * data, int recvlength, int flags);
+       int sendto(int socket, const void * data, int sendlength, int flags, const struct sockaddr * addr, int addr_len);
+       int recvfrom(int socket, void * data, int recvlength, int flags, struct sockaddr * addr, int * addr_len);
+       int listen(int socket, int max_connections);
+       int accept(int socket, struct sockaddr * addr, int * addr_len);
+       int shutdown(int socket, int shutdown_type);
+       int closesocket(int socket);
+
+       int ioctl(int socket, long cmd, void * arg);
+
+       int setsockopt(int socket, int level, int option_name, const void * data, int data_len);
+       int getsockopt(int socket, int level, int option_name, void * data, int * data_len);
+
+       int getpeername(int socket, struct sockaddr *addr, int * addr_len);
+       int getsockname(int socket, struct sockaddr *addr, int * addr_len);
+
+       int gethostname(char *name, size_t len);
+       int sethostname(const char *name, size_t len);
+
+       unsigned short htons(unsigned short num);
+       unsigned long htonl(unsigned long num);
+
+       extern int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
+
+#ifdef __cplusplus
+};
+#endif
+
+
+#endif // SYS_SOCKET_H