Annotation of embedaddon/coova-chilli/src/net.h, revision 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>