Diff for /libaitio/inc/aitio.h between versions 1.37 and 1.40

version 1.37, 2013/11/22 13:49:14 version 1.40, 2014/02/08 22:06:16
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013Copyright 2004 - 2014
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 78  SUCH DAMAGE. Line 78  SUCH DAMAGE.
 #define IO_ETHER_FILTER_WRITE   2  #define IO_ETHER_FILTER_WRITE   2
   
   
   typedef struct {
           unsigned int                    prog_inin;      /* init progs */
           unsigned int                    prog_maxn;      /* max progs */
           unsigned int                    prog_cnum;      /* current progs */
           char                            prog_name[PATH_MAX];
   
           pthread_mutex_t                 prog_mtx;
           array_t                         *prog_fds;
           unsigned int                    *prog_used;
   } prog_t;
   
 typedef struct tagCliSock sock_cli_t;  typedef struct tagCliSock sock_cli_t;
 typedef void *(*sock_cb_t)(sock_cli_t*);  typedef void *(*sock_cb_t)(sock_cli_t*);
 struct tagCliSock {  struct tagCliSock {
         void                            *cli_parent;          void                            *cli_parent;
         int                             cli_fd;          int                             cli_fd;
        int                             cli_pty;        intptr_t                        cli_pty;
         sockaddr_t                      cli_addr;          sockaddr_t                      cli_addr;
         char                            cli_name[64];          char                            cli_name[64];
         char                            cli_cmdline[PATH_MAX];          char                            cli_cmdline[PATH_MAX];
Line 107  typedef struct { Line 118  typedef struct {
         sockaddr_t                      sock_peer;          sockaddr_t                      sock_peer;
   
         ait_val_t                       sock_buf;          ait_val_t                       sock_buf;
           prog_t                          *sock_prog;
   
         volatile intptr_t               sock_kill;          volatile intptr_t               sock_kill;
         sched_root_task_t               *sock_root;          sched_root_task_t               *sock_root;
Line 123  const char *io_GetError(); Line 135  const char *io_GetError();
   
   
 /*  /*
    * io_progInit() - Init program pool
    *
    * @progName = program name for execution
    * @initNum = initial started programs
    * @maxNum = maximum started programs
    * return: NULL error or !=NULL allocated pool (must destroied with io_progDestroy())
    */
   prog_t *io_progInit(const char *progName, 
                   unsigned int initNum, unsigned int maxNum);
   /*
    * io_progOpen() - Execute number of program(s)
    *
    * @prg = program pool
    * @execNum = execute program(s) (0 max)
    * return: -1 error, >0 executed programs
    */
   int io_progOpen(prog_t * __restrict prg, unsigned int execNum);
   /*
    * io_progOpen2() - Start program from pool on first unused slot
    *
    * @prg = program pool
    * return: -1 error, >-1 reside at slot
    */
   int io_progOpen2(prog_t * __restrict prg);
   /*
    * io_progGrow() - Execute to number of programs in pool
    *
    * @prg = program pool
    * @toNum = execute to number of programs (0 max)
    * return: 0 error or nothing to do, 
    *      >0 executed programs and abs(<0) executed programs with logged error
    */
   int io_progGrow(prog_t * __restrict prg, unsigned int toNum);
   /*
    * io_progVacuum() - Vacuum pool to running number of programs
    *
    * @prg = program pool
    * @toNum = vacuum to number of programs (0 to init number)
    * return: 0 error or >0 closed programs
    */
   int io_progVacuum(prog_t * __restrict prg, unsigned int toNum);
   /*
    * io_progCloseAt() - Close program at pool of certain position
    *
    * @prg = program pool
    * @idx = index at pool
    * return: 0 error or !=0 closed program
    */
   int io_progCloseAt(prog_t * __restrict prg, unsigned int idx);
   /*
    * io_progCloseOf() - Close program at pool with certain handle
    *
    * @prg = program pool
    * @h = handle of program
    * return: 0 error, >0 closed programs
    */
   #ifdef POPEN_STREAM
   int io_progCloseOf(prog_t * __restrict prg, FILE *h);
   #else
   int io_progCloseOf(prog_t * __restrict prg, int h);
   #endif
   /*
    * io_progClose() - Close all programs in pool
    *
    * @prg = program pool
    * @closeNum = close program(s) (0 all)
    * return: 0 error, >0 closed programs
    */
   int io_progClose(prog_t * __restrict prg, unsigned int closeNum);
   /*
    * io_progDestroy() - Destroy entire program pool
    *
    * @pprg = program pool
    * return: none
    */
   void io_progDestroy(prog_t ** __restrict pprg);
   
   /*
    * io_progCheck() - Check exit status of program pool
    *
    * @prg = program pool
    * @re = resurrect program to init number
    * return: -1 error or >-1 exited programs
    */
   int io_progCheck(prog_t * __restrict prg, int re);
   
   /*
    * io_progAttach() - Attach to open program
    *
    * @prg = program pool
    * @newOne = Execute new one program after attach
    * return: NULL error or !=NULL attached program handle
    */
   #ifdef POPEN_STREAM
   FILE *io_progAttach(prog_t * __restrict prg, int newOne);
   #else
   int io_progAttach(prog_t * __restrict prg, int newOne);
   #endif
   /*
    * io_progDetach() - Detch from open program
    *
    * @prg= program pool
    * @pfd = attached program handle
    * return: none
    */
   #ifdef POPEN_STREAM
   void io_progDetach(prog_t * __restrict prg, FILE *pfd);
   #else
   void io_progDetach(prog_t * __restrict prg, int pfd);
   #endif
   
   
   /*
  * ioInitSocket() - Init socket and allocate resources   * ioInitSocket() - Init socket and allocate resources
  *   *
  * @role = Socket role   * @role = Socket role
Line 151  void ioCloseSocket(sock_t ** __restrict s); Line 276  void ioCloseSocket(sock_t ** __restrict s);
  */   */
 int ioCloseClient(sock_cli_t * __restrict c);  int ioCloseClient(sock_cli_t * __restrict c);
 /*  /*
    * ioSetupProg2Socket() - Setup program pool to socket server
    *
    * @s = Socket
    * @p = Program pool
    * return: -1 error or 0 ok
    */
   int ioSetupProg2Socket(sock_t * __restrict s, prog_t * __restrict p);
   /*
  * ioUpSocket() - Setup socket for use   * ioUpSocket() - Setup socket for use
  *   *
  * @s = Socket   * @s = Socket
Line 163  int ioUpSocket(sock_t * __restrict s, void *arg, int t Line 296  int ioUpSocket(sock_t * __restrict s, void *arg, int t
  * ioUpdTimerSocket() - Update timeout of socket   * ioUpdTimerSocket() - Update timeout of socket
  *   *
  * @c = Client socket   * @c = Client socket
  * @arg = Optional data argument  
  * return:  none   * return:  none
  */   */
void ioUpdTimerSocket(sock_cli_t * __restrict c, void *arg);void ioUpdTimerSocket(sock_cli_t * __restrict c);
 /*  /*
  * ioLoopSocket() - Start socket scheduler   * ioLoopSocket() - Start socket scheduler
  *   *
Line 184  int ioLoopSocket(sock_t * __restrict s, sched_task_fun Line 316  int ioLoopSocket(sock_t * __restrict s, sched_task_fun
  */   */
 int ioBridgeProg2Socket(sock_t * __restrict s, const char *prgname);  int ioBridgeProg2Socket(sock_t * __restrict s, const char *prgname);
   
   
 /*  /*
  * 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]
  *   *
Line 509  int io_dumbFile(const char *csFile, int mode, off_t si Line 642  int io_dumbFile(const char *csFile, int mode, off_t si
  */   */
 int io_get1stiface(char *szIface, int iflen);  int io_get1stiface(char *szIface, int iflen);
 /*  /*
    * io_getmaciface() - Get MAC address from interface name
    *
    * @csIface = interface name
    * @ea = ethernet address
    * return: -1 error, 0 ok or 1 not found
    */
   int io_getmaciface(const char *csIface, ether_addr_t * __restrict ea);
   /*
  * io_etherOpen() - Open BPF interface to device   * io_etherOpen() - Open BPF interface to device
  *   *
  * @csIface = interface name   * @csIface = interface name
Line 519  int io_get1stiface(char *szIface, int iflen); Line 660  int io_get1stiface(char *szIface, int iflen);
  * @zcbuf = zero copy buffer, if BPF supports it and isn't NULL   * @zcbuf = zero copy buffer, if BPF supports it and isn't NULL
  * return: -1 error or >-1 bpf handle   * return: -1 error or >-1 bpf handle
  */   */
int io_etherOpen(const char *csIface, int flags, int whdr, int wdlt, int io_etherOpen(const char *csIface, int flags, unsigned int whdr, 
                unsigned int *buflen, void **zcbuf);                unsigned int wdlt, unsigned int *buflen, void **zcbuf);
 /*  /*
  * io_etherClose() - Close BPF interface   * io_etherClose() - Close BPF interface
  *   *

Removed from v.1.37  
changed lines
  Added in v.1.40


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