--- libaitio/inc/aitio.h 2013/03/13 14:54:39 1.29 +++ libaitio/inc/aitio.h 2013/06/26 22:48:53 1.32 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.29 2013/03/13 14:54:39 misho Exp $ +* $Id: aitio.h,v 1.32 2013/06/26 22:48:53 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -68,9 +68,9 @@ SUCH DAMAGE. // io_GetErrno() Get error code of last operation -inline int io_GetErrno(); +int io_GetErrno(); // io_GetError() Get error text of last operation -inline const char *io_GetError(); +const char *io_GetError(); /* @@ -125,7 +125,7 @@ int ioWatchDirLoop(const char *csDir, int (*callback)( * @sig = Event for completed operations, may be =NULL * return: -1 error or 0 ok */ -inline int io_aiobulk(int mode, struct aiocb ** __restrict acbs, int nacb, +int io_aiobulk(int mode, struct aiocb ** __restrict acbs, int nacb, struct sigevent *sig); #endif /* @@ -162,7 +162,7 @@ int io_rwritev(int fd, struct iovec * __restrict bufs, * @update = Update file handle position !0 * return: -1 error or !=-1 readed bytes */ -inline int io_rread(int fd, void * __restrict buf, size_t nbytes, off_t offset, +int io_rread(int fd, void * __restrict buf, size_t nbytes, off_t offset, int update); /* * io_rwrite() - Raw VFS write function @@ -174,7 +174,7 @@ inline int io_rread(int fd, void * __restrict buf, siz * @update = Update file handle position !0 * return: -1 error or !=-1 written bytes */ -inline int io_rwrite(int fd, void * __restrict buf, size_t nbytes, off_t offset, +int io_rwrite(int fd, void * __restrict buf, size_t nbytes, off_t offset, int update); /* Disk I/O helper macros */ @@ -237,7 +237,7 @@ int io_ctr_AES(unsigned char *pInput, int inLen, unsig * @winz = winsize for terminal * return: -1 error or 0 ok */ -inline int ioAllocPTY(int *ptyfd, int *ttyfd, char * __restrict name, int namesiz, +int ioAllocPTY(int *ptyfd, int *ttyfd, char * __restrict name, int namesiz, struct termios * __restrict term, struct winsize * __restrict winz); /* * ioFreePTY() - Release PTY and TTY device @@ -246,7 +246,7 @@ inline int ioAllocPTY(int *ptyfd, int *ttyfd, char * _ * @ttyname = tty filename * return: none */ -inline void ioFreePTY(int ptyfd, const char *ttyname); +void ioFreePTY(int ptyfd, const char *ttyname); /* * ioChgWinPTY() - Change window size of PTY * @@ -257,7 +257,7 @@ inline void ioFreePTY(int ptyfd, const char *ttyname); * @ypxl = y pixels * return: -1 error or 0 ok */ -inline int ioChgWinPTY(int ptyfd, unsigned short row, unsigned short col, +int ioChgWinPTY(int ptyfd, unsigned short row, unsigned short col, unsigned short xpxl, unsigned short ypxl); /* * ioSetOwnerTTY() - Set owner to TTY @@ -283,7 +283,7 @@ int ioSetSidTTY(int *ttyfd, const char *ttyname); * @otio = saved old termios for later restore if !=NULL * return: -1 error or 0 ok */ -inline int ioSetRAWMode(int fd, struct termios *otio); +int ioSetRAWMode(int fd, struct termios *otio); /* * ioRestoreMode() - Restore termios to tty fd * @@ -291,7 +291,7 @@ inline int ioSetRAWMode(int fd, struct termios *otio); * @tio = termios structure for restore * return: -1 error or 0 ok */ -inline int ioRestoreMode(int fd, struct termios tio); +int ioRestoreMode(int fd, struct termios tio); /* * ioForkPTY() - Fork new process with session leader and new TTY * @@ -313,7 +313,7 @@ pid_t ioForkPTY(int *ptyfd, char * __restrict name, in * @ifExists = !=0 if filename exists return error * return: -1 error or 0 ok */ -inline int ioCreatePIDFile(const char *csName, int ifExists); +int ioCreatePIDFile(const char *csName, int ifExists); /* * ioSendFile() - AITNET sendfile() userland implementation, not dependant from OS @@ -338,6 +338,13 @@ size_t ioSendFile(int s, const char *csFile, size_t se */ size_t ioRecvFile(int s, const char *csFile, size_t recvLen, int over, int rcvbuf); +/* + * ioRealFileName() - Get real file name + * + * @fname = filename + * return: =NULL error or !=NULL real filename, should be free with e_free() + */ +char *ioRealFileName(const char *fname); /* Buffered file access over memory block */ @@ -368,7 +375,7 @@ FILE *io_fmapopen(const char *csFile, int mode, int pe * @mode = Permissions for new buffered file I/O * return: NULL error or open buffered file */ -inline FILE *io_fd2buf(int fd, const char *mode); +FILE *io_fd2buf(int fd, const char *mode); /* * io_dumbFile() - Create empry or dumb file with fixed size * @@ -378,6 +385,57 @@ inline FILE *io_fd2buf(int fd, const char *mode); * return: -1 error or open file handle */ int io_dumbFile(const char *csFile, int mode, off_t size); + + +/* + * io_get1stiface() - Get first interface of host + * + * @szIface = interface string buffer + * @iflen = size of interface buffer + * return: -1 error or 0 ok + */ +int io_get1stiface(char *szIface, int iflen); +/* + * io_etherOpen() - Open BPF interface to device + * + * @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 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 **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