--- libaitio/inc/aitio.h 2013/06/24 11:09:55 1.31.2.1 +++ libaitio/inc/aitio.h 2013/06/25 08:18:57 1.31.2.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.31.2.1 2013/06/24 11:09:55 misho Exp $ +* $Id: aitio.h,v 1.31.2.4 2013/06/25 08:18:57 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -400,16 +400,42 @@ int io_get1stiface(char *szIface, int iflen); * * @csIface = interface name * @flags = open flags + * @whdr = with complete headers + * @buflen = buffer length + * @zcbuf = zero copy buffer, if BPF supports it and isn't NULL * return: -1 error or >-1 bpf handle */ -int io_etherOpen(const char *csIface, int flags); +int io_etherOpen(const char *csIface, int flags, int whdr, + unsigned int *buflen, void **zcbuf); /* * io_etherClose() - Close BPF interface * * @eth = bpf handle + * @zcbuf = zero copy buffer, if BPF supports it and isn't NULL * return: none */ -void io_etherClose(int eth); +void io_etherClose(int eth, void **zcbuf); + +/* + * io_etherSend() - Send packet to bpf + * + * @eth = bpf handle + * @buf = buffer + * @buflen = buffer length + * return: -1 error or !=-1 written bytes + */ +ssize_t io_etherSend(int eth, const void *buf, size_t buflen); +/* + * io_etherRecv() - Receive packet from bpf + * + * @eth = bpf handle + * @buf = buffer + * @buflen = buffer length + * @zcbuf = zero copy buffer, if BPF supports it and isn't NULL + * return: -1 error or !=-1 readed bytes + */ +ssize_t io_etherRecv(int eth, void * __restrict buf, + size_t buflen, void * __restrict zcbuf); #endif