libs: missed a header.
authorBrett Gordon <beretta42@gmail.com>
Sat, 25 Feb 2017 21:20:34 +0000 (16:20 -0500)
committerBrett Gordon <beretta42@gmail.com>
Sat, 25 Feb 2017 21:20:34 +0000 (16:20 -0500)
Library/include/sys/netdev.h [new file with mode: 0644]

diff --git a/Library/include/sys/netdev.h b/Library/include/sys/netdev.h
new file mode 100644 (file)
index 0000000..ba95dd9
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef _DEV_NET_NETDEV_H
+#define _DEV_NET_NETDEV_H
+
+#define AF_INET                1
+
+#define SOCK_RAW       1
+#define SOCK_DGRAM     2
+#define SOCK_STREAM    3
+
+#define IPPROTO_ICMP   1
+#define IPPROTO_TCP    6
+#define IPPROTO_UDP    17
+#define IPPROTO_RAW    255
+
+#include <netinet/in.h>
+
+
+/* This one is used internally to deal with many argumented net
+   functions */
+struct sockio {
+  uint16_t sio_flags;          /* Keep the order so we can use partial */
+  uint16_t sio_addr_len;       /* structs for simple cases */
+  struct sockaddr_in sio_addr;
+};
+
+#define INADDR_ANY             0L
+#define INADDR_BROADCAST       0xFFFFFFFFUL
+#define INADDR_LOOPBACK                0x7F000001UL
+#define IN_LOOPBACK(a)         (((a) >> 24) == 0x7F)
+
+
+#ifndef NSOCKET
+#define NSOCKET 8
+#endif
+
+
+struct sockaddrs {
+       uint32_t addr;
+       uint16_t port;
+};
+
+struct socket
+{
+       uint8_t s_type;
+       uint8_t s_state;
+#define SS_UNUSED              0       /* Free slot */
+#define SS_INIT                        1       /* Initializing state (for IP offloaders) */
+#define SS_UNCONNECTED         2       /* Created */
+#define SS_BOUND               3       /* Bind or autobind */
+#define SS_LISTENING           4       /* Listen called */
+#define SS_ACCEPTING           5       /* Accepting in progress */
+#define SS_ACCEPTWAIT          6       /* Waiting for accept to harvest */
+#define SS_CONNECTING          7       /* Connect initiated */
+#define SS_CONNECTED           8       /* Connect has completed */
+#define SS_CLOSEWAIT           9       /* Remote has closed */
+#define SS_CLOSING             10      /* Protocol close in progress */
+#define SS_CLOSED              11      /* Protocol layers done, not close()d */
+       /* FIXME: need state for shutdown handling */
+       uint8_t s_data;                 /* Socket we are an accept() for */
+       uint8_t s_error;
+       uint8_t s_num;                  /* To save expensive maths */
+       struct sockaddrs s_addr[3];
+#define SADDR_SRC      0
+#define SADDR_DST      1
+#define SADDR_TMP      2
+       uint8_t s_flag;
+#define SFLAG_ATMP     1               /* Use SADDR_TMP */
+       uint8_t s_iflag;                /* Flags touched in IRQ handlers */
+#define SI_SHUTR       1
+#define SI_SHUTW       2
+#define SI_DATA                4               /* Data is ready */
+#define SI_EOF         8               /* At EOF */
+#define SI_THROTTLE    16              /* Transmit is throttled */
+       void *s_priv;                   /* Private pointer for lower layers */
+};
+
+#define NSOCKTYPE 3
+#define SOCKTYPE_TCP   0
+#define SOCKTYPE_UDP   1
+#define SOCKTYPE_RAW   2
+
+struct netdevice
+{
+       uint8_t mac_len;
+       const char *name;
+       uint16_t flags;
+#define IFF_POINTOPOINT                1
+};
+
+/* Not applicable in userspace ? */
+
+
+/* extern struct socket sockets[NSOCKET]; */
+/* extern uint32_t our_address; */
+
+/* /\* Network layer syscalls *\/ */
+/* extern arg_t _socket(void); */
+/* extern arg_t _listen(void); */
+/* extern arg_t _bind(void); */
+/* extern arg_t _connect(void); */
+/* extern arg_t _accept(void); */
+/* extern arg_t _getsockaddrs(void); */
+/* extern arg_t _sendto(void); */
+/* extern arg_t _recvfrom(void); */
+/* extern arg_t _shutdown(void); */
+
+/* /\* Hooks for inode.c into the networking *\/ */
+/* extern void sock_close(inoptr ino); */
+/* extern int sock_read(inoptr ino, uint8_t flag); */
+/* extern int sock_write(inoptr ino, uint8_t flag); */
+/* extern bool issocket(inoptr ino); */
+
+/* /\* Hooks between the network implementation and the socket layer *\/ */
+/* extern int net_init(struct socket *s); */
+/* extern int net_bind(struct socket *s); */
+/* extern int net_connect(struct socket *s); */
+/* extern void net_close(struct socket *s); */
+/* extern int net_listen(struct socket *s); */
+/* extern arg_t net_read(struct socket *s, uint8_t flag); */
+/* extern arg_t net_write(struct socket *s, uint8_t flag); */
+/* extern arg_t net_ioctl(uint8_t op, void *p); */
+/* extern arg_t net_shutdown(struct socket *s, uint8_t how); /\* bit 0 rd, bit 1 wr *\/ */
+/* extern void netdev_init(void); */
+/* extern struct socket *sock_find(uint8_t type, uint8_t sv, struct sockaddrs *sa); */
+/* extern void sock_init(void); */
+
+/* extern struct netdevice net_dev; */
+/* Socket IOCTLS */
+
+#define SIOCGIFADDR      0x4401
+#define SIOCSIFADDR      0x4402
+#define SIOCGIFMASK      0x4403
+#define SIOCSIFMASK      0x4404
+#define SIOCGIFHWADDR    0x4405
+#define SIOCSIFHWADDR    0x4406
+#define SIOCGIFGW        0x4407
+#define SIOCSIFGW        0x4408
+
+#define IFNAMSIZ 5
+
+struct ifreq {
+       char ifr_name[IFNAMSIZ]; /* Interface name */
+       union {
+               struct sockaddr ifr_addr;
+               struct sockaddr ifr_dstaddr;
+               struct sockaddr ifr_broadaddr;
+               struct sockaddr ifr_netmask;
+               struct sockaddr ifr_hwaddr;
+               struct sockaddr ifr_gwaddr; /* belongs in router.h ?*/
+               uint8_t         ifr_flags;
+               uint16_t        ifr_ifindex;
+               uint16_t        ifr_metric;
+               uint16_t        ifr_mtu;
+       };
+};
+#endif