Diff for /libaitio/inc/aitio.h between versions 1.29 and 1.36

version 1.29, 2013/03/13 14:54:39 version 1.36, 2013/10/21 21:12:41
Line 59  SUCH DAMAGE. Line 59  SUCH DAMAGE.
 #include <sys/un.h>  #include <sys/un.h>
 #include <sys/uio.h>  #include <sys/uio.h>
 #include <net/if_dl.h>  #include <net/if_dl.h>
   #include <net/bpf.h>
 #include <netinet/in.h>  #include <netinet/in.h>
   #include <elwix.h>
   
   
 #ifndef STRSIZ  #ifndef STRSIZ
#define STRSIZ          256#define STRSIZ                  256
 #endif  #endif
   
   #define IO_SOCK_ROLE_CLIENT     0
   #define IO_SOCK_ROLE_SERVER     1
   
   #define IO_ETHER_FILTER_PROMISC 0
   #define IO_ETHER_FILTER_NOTREAD -1
   #define IO_ETHER_FILTER_READ    1
   #define IO_ETHER_FILTER_WRITE   2
   
   
   typedef struct tagCliSock sock_cli_t;
   typedef void *(*sock_cb_t)(sock_cli_t*);
   struct tagCliSock {
           void                            *cli_parent;
           pthread_t                       cli_tid;
           int                             cli_fd;
           int                             cli_pty;
           sockaddr_t                      cli_addr;
           char                            cli_name[64];
   
           sock_cb_t                       cli_func;
           void                            *cli_arg;
   
           ait_val_t                       cli_buf;
   
           TAILQ_ENTRY(tagCliSock)         cli_node;
   };
   typedef struct {
           int                             sock_role;
           int                             sock_backq;
           int                             sock_type;
           int                             sock_proto;
           int                             sock_fd;
           sockaddr_t                      sock_addr;
           sockaddr_t                      sock_peer;
   
           ait_val_t                       sock_buf;
   
           pthread_mutex_t                 sock_mtx;
           TAILQ_HEAD(, tagCliSock)        sock_cli;
   } sock_t;
   
   
 // io_GetErrno() Get error code of last operation  // io_GetErrno() Get error code of last operation
inline int io_GetErrno();int io_GetErrno();
 // io_GetError() Get error text of last operation  // io_GetError() Get error text of last operation
inline const char *io_GetError();const char *io_GetError();
   
   
 /*  /*
    * ioInitSocket() - Init socket and allocate resources
    *
    * @role = Socket role
    * @type = Socket type
    * @proto = Socket protocol
    * @addr = Bind to address
    * @port = Bind to port
    * @buflen = Socket buffer, optional if =0 == BUFSIZ
    * return: NULL error or !=NULL created socket
    */
   sock_t *ioInitSocket(int role, int type, int proto, 
                   const char *addr, unsigned short port, size_t buflen);
   /*
    * ioCloseSocket() - Close socket and free resources
    *
    * @s = Socket
    * return: none
    */
   void ioCloseSocket(sock_t ** __restrict s);
   /*
    * ioUpSocket() - Setup socket for use
    *
    * @s = Socket
    * @arg = Server role = listen backlog queue and Client role = peer address
    * return: -1 error or 0 ok
    */
   int ioUpSocket(sock_t * __restrict s, void *arg);
   /*
    * ioAcceptSocket() - Accept clients
    *
    * @s = Socket
    * @f = callback function for client handling
    * @arg = optional argument for callback function
    * return: -1 error or 0 ok
    */
   int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f, void *arg);
   
   /*
  * ioPromptRead() - Read data from input h[0] with prompt to output h[1]   * ioPromptRead() - Read data from input h[0] with prompt to output h[1]
  *   *
  * @h = file handles h[0] = input, h[1] = output, if NULL use stdin, stdout   * @h = file handles h[0] = input, h[1] = output, if NULL use stdin, stdout
Line 125  int ioWatchDirLoop(const char *csDir, int (*callback)( Line 206  int ioWatchDirLoop(const char *csDir, int (*callback)(
  * @sig = Event for completed operations, may be =NULL   * @sig = Event for completed operations, may be =NULL
  * return: -1 error or 0 ok   * 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);                  struct sigevent *sig);
 #endif  #endif
 /*  /*
Line 162  int io_rwritev(int fd, struct iovec * __restrict bufs, Line 243  int io_rwritev(int fd, struct iovec * __restrict bufs,
  * @update = Update file handle position !0   * @update = Update file handle position !0
  * return: -1 error or !=-1 readed bytes   * 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);                  int update);
 /*  /*
  * io_rwrite() - Raw VFS write function   * io_rwrite() - Raw VFS write function
Line 174  inline int io_rread(int fd, void * __restrict buf, siz Line 255  inline int io_rread(int fd, void * __restrict buf, siz
  * @update = Update file handle position !0   * @update = Update file handle position !0
  * return: -1 error or !=-1 written bytes   * 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);                  int update);
   
 /* Disk I/O helper macros */  /* Disk I/O helper macros */
Line 237  int io_ctr_AES(unsigned char *pInput, int inLen, unsig Line 318  int io_ctr_AES(unsigned char *pInput, int inLen, unsig
  * @winz = winsize for terminal   * @winz = winsize for terminal
  * return: -1 error or 0 ok   * 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);                  struct termios * __restrict term, struct winsize * __restrict winz);
 /*  /*
  * ioFreePTY() - Release PTY and TTY device   * ioFreePTY() - Release PTY and TTY device
Line 246  inline int ioAllocPTY(int *ptyfd, int *ttyfd, char * _ Line 327  inline int ioAllocPTY(int *ptyfd, int *ttyfd, char * _
  * @ttyname = tty filename   * @ttyname = tty filename
  * return: none   * return: none
  */   */
inline void ioFreePTY(int ptyfd, const char *ttyname);void ioFreePTY(int ptyfd, const char *ttyname);
 /*  /*
  * ioChgWinPTY() - Change window size of PTY   * ioChgWinPTY() - Change window size of PTY
  *   *
Line 257  inline void ioFreePTY(int ptyfd, const char *ttyname); Line 338  inline void ioFreePTY(int ptyfd, const char *ttyname);
  * @ypxl = y pixels   * @ypxl = y pixels
  * return: -1 error or 0 ok   * 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);                  unsigned short xpxl, unsigned short ypxl);
 /*  /*
  * ioSetOwnerTTY() - Set owner to TTY   * ioSetOwnerTTY() - Set owner to TTY
Line 283  int ioSetSidTTY(int *ttyfd, const char *ttyname); Line 364  int ioSetSidTTY(int *ttyfd, const char *ttyname);
  * @otio = saved old termios for later restore if !=NULL   * @otio = saved old termios for later restore if !=NULL
  * return: -1 error or 0 ok   * 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   * ioRestoreMode() - Restore termios to tty fd
  *   *
Line 291  inline int ioSetRAWMode(int fd, struct termios *otio); Line 372  inline int ioSetRAWMode(int fd, struct termios *otio);
  * @tio = termios structure for restore   * @tio = termios structure for restore
  * return: -1 error or 0 ok   * 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   * ioForkPTY() - Fork new process with session leader and new TTY
  *   *
Line 313  pid_t ioForkPTY(int *ptyfd, char * __restrict name, in Line 394  pid_t ioForkPTY(int *ptyfd, char * __restrict name, in
  * @ifExists = !=0 if filename exists return error   * @ifExists = !=0 if filename exists return error
  * return: -1 error or 0 ok   * 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   * ioSendFile() - AITNET sendfile() userland implementation, not dependant from OS
Line 338  size_t ioSendFile(int s, const char *csFile, size_t se Line 419  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);  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 */  /* Buffered file access over memory block */
   
Line 368  FILE *io_fmapopen(const char *csFile, int mode, int pe Line 456  FILE *io_fmapopen(const char *csFile, int mode, int pe
  * @mode = Permissions for new buffered file I/O   * @mode = Permissions for new buffered file I/O
  * return: NULL error or open buffered file   * 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   * io_dumbFile() - Create empry or dumb file with fixed size
  *   *
Line 378  inline FILE *io_fd2buf(int fd, const char *mode); Line 466  inline FILE *io_fd2buf(int fd, const char *mode);
  * return: -1 error or open file handle   * return: -1 error or open file handle
  */   */
 int io_dumbFile(const char *csFile, int mode, off_t size);  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
    * @wdlt = with data link type
    * @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, int wdlt, 
                   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_etherFilter() - BPF filter routine
    *
    * @eth = bpf handle
    * @io = filter direction 
    *  (IO_ETHER_FILTER_PROMISC|IO_ETHER_FILTER_NOTREAD|IO_ETHER_FILTER_READ|IO_ETHER_FILTER_WRITE)
    * @insn = BPF filter instruction array
    * @insnlen = Length of BPF filter instruction array
    * return: -1 error or 0 ok
    */
   int io_etherFilter(int eth, int io, struct bpf_insn * __restrict insn, size_t insnlen);
   
   /*
    * 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  #endif

Removed from v.1.29  
changed lines
  Added in v.1.36


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