Annotation of embedaddon/coova-chilli/src/net.h, revision 1.1.1.1

1.1       misho       1: /* 
                      2:  * net library functions
                      3:  * Copyright (c) 2008 David Bird <david@coova.com>
                      4:  *
                      5:  * The contents of this file may be used under the terms of the GNU
                      6:  * General Public License Version 2, provided that the above copyright
                      7:  * notice and this permission notice is included in all copies or
                      8:  * substantial portions of the software.
                      9:  * 
                     10:  */
                     11: 
                     12: 
                     13: #ifndef _NET_H
                     14: #define _NET_H
                     15: 
                     16: #include "system.h"
                     17: #include "pkt.h"
                     18: 
                     19: typedef struct _net_interface {
                     20:   uint8_t idx;
                     21: 
                     22:   /* hardware/link */
                     23:   uint16_t protocol;
                     24:   uint8_t hwaddr[PKT_ETH_ALEN];
                     25:   char devname[IFNAMSIZ+1];
                     26:   int devflags;
                     27:   int ifindex;
                     28:   int mtu;
                     29: 
                     30:   /* network/address */
                     31:   struct in_addr address;
                     32:   struct in_addr gateway;
                     33:   struct in_addr netmask;
                     34:   struct in_addr broadcast;
                     35: 
                     36:   /* socket/descriptor */
                     37:   int fd;
                     38: 
                     39:   uint8_t flags;
                     40: #define NET_PROMISC (1<<0)
                     41: #define NET_USEMAC  (1<<1)
                     42: #define NET_ETHHDR  (1<<2)
                     43: } net_interface;
                     44: 
                     45: 
                     46: #define net_sflags(n,f) dev_set_flags((n)->devname, (f))
                     47: #define net_gflags(n) dev_get_flags((n)->devname, &(n)->devflags)
                     48: 
                     49: int net_open(net_interface *netif);
                     50: int net_open_eth(net_interface *netif);
                     51: int net_reopen(net_interface *netif);
                     52: int net_init(net_interface *netif, char *ifname, uint16_t protocol, int promisc, uint8_t *mac);
                     53: int net_route(struct in_addr *dst, struct in_addr *gateway, struct in_addr *mask, int delete);
                     54: 
                     55: ssize_t net_read(net_interface *netif, void *d, size_t slen);
                     56: ssize_t net_write(net_interface *netif, void *d, size_t slen);
                     57: 
                     58: #define fd_zero(fds)        FD_ZERO((fds));
                     59: #define fd_set(fd,fds)      if ((fd) > 0) FD_SET((fd), (fds))
                     60: #define fd_isset(fd,fds)    ((fd) > 0) && FD_ISSET((fd), (fds))
                     61: #define fd_max(fd,max)      (max) = (max) > (fd) ? (max) : (fd)
                     62: 
                     63: #define net_maxfd(this,max) (max) = (max) > (this)->fd ? (max) : (this)->fd
                     64: #define net_fdset(this,fds) if ((this)->fd > 0) FD_SET((this)->fd, (fds))
                     65: #define net_isset(this,fds) ((this)->fd > 0) && FD_ISSET((this)->fd, (fds))
                     66: #define net_close(this)     if ((this)->fd > 0) close((this)->fd); (this)->fd=0
                     67: #define net_add_route(dst,gw,mask) net_route(dst,gw,mask,0)
                     68: #define net_del_route(dst,gw,mask) net_route(dst,gw,mask,1)
                     69: 
                     70: int dev_set_flags(char const *dev, int flags);
                     71: int dev_get_flags(char const *dev, int *flags);
                     72: int dev_set_addr(char const *devname, struct in_addr *addr, 
                     73:                 struct in_addr *gateway, struct in_addr *netmask);
                     74: 
                     75: int net_set_address(net_interface *netif, struct in_addr *address, 
                     76:                    struct in_addr *gateway, struct in_addr *netmask);
                     77: 
                     78: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>