version 1.36.2.1, 2013/11/21 12:54:21
|
version 1.38.10.15, 2013/12/12 15:23:44
|
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; |
pthread_t cli_tid; |
|
int cli_fd; |
int cli_fd; |
int cli_pty; |
int cli_pty; |
sockaddr_t cli_addr; |
sockaddr_t cli_addr; |
char cli_name[64]; |
char cli_name[64]; |
|
char cli_cmdline[PATH_MAX]; |
|
pid_t cli_pid; |
|
|
sock_cb_t cli_func; | sched_task_func_t cli_func; |
void *cli_arg; | |
|
|
ait_val_t cli_buf; | ait_val_t cli_buf[2]; |
|
|
TAILQ_ENTRY(tagCliSock) cli_node; |
TAILQ_ENTRY(tagCliSock) cli_node; |
}; |
}; |
|
|
typedef struct { |
typedef struct { |
int sock_role; |
int sock_role; |
int sock_backq; |
int sock_backq; |
Line 106 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 122 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: 0 error, >0 executed programs and abs(<0) executed programs with logged error |
|
*/ |
|
int io_progOpen(prog_t * __restrict prg, unsigned int execNum); |
|
/* |
|
* 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_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 |
|
* 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 141 sock_t *ioInitSocket(int role, int type, int proto,
|
Line 248 sock_t *ioInitSocket(int role, int type, int proto,
|
* return: none |
* return: none |
*/ |
*/ |
void ioCloseSocket(sock_t ** __restrict s); |
void ioCloseSocket(sock_t ** __restrict s); |
|
#define ioKillSocket(x) (assert((x)), (x)->sock_kill = 1) |
/* |
/* |
|
* ioCloseClient() - Close client socket |
|
* |
|
* @c = Client socket |
|
* return: 0 ok or !=0 error |
|
*/ |
|
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 151 void ioCloseSocket(sock_t ** __restrict s);
|
Line 274 void ioCloseSocket(sock_t ** __restrict s);
|
*/ |
*/ |
int ioUpSocket(sock_t * __restrict s, void *arg, int timeout); |
int ioUpSocket(sock_t * __restrict s, void *arg, int timeout); |
/* |
/* |
|
* ioUpdTimerSocket() - Update timeout of socket |
|
* |
|
* @c = Client socket |
|
* return: none |
|
*/ |
|
void ioUpdTimerSocket(sock_cli_t * __restrict c); |
|
/* |
* ioLoopSocket() - Start socket scheduler |
* ioLoopSocket() - Start socket scheduler |
* |
* |
* @s = Socket |
* @s = Socket |
|
* @rcb = Read callback |
* return: -1 error or return result from scheduler |
* return: -1 error or return result from scheduler |
*/ |
*/ |
int ioLoopSocket(sock_t * __restrict s); | int ioLoopSocket(sock_t * __restrict s, sched_task_func_t rcb); |
/* |
/* |
* ioAcceptSocket() - Accept clients | * ioBridgeProg2Socket() - Start socket scheduler and bridge program to socket |
* |
* |
* @s = Socket |
* @s = Socket |
* @f = callback function for client handling | * @prgname = Program name |
* @arg = optional argument for callback function | * return: 0 ok or !=0 error |
* return: -1 error or 0 ok | |
*/ |
*/ |
int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f, void *arg); | 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 176 int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f,
|
Line 307 int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f,
|
* @dataLen = Length of data |
* @dataLen = Length of data |
* return: 0 EOF; -1 error:: can`t read; >0 count of readed chars |
* return: 0 EOF; -1 error:: can`t read; >0 count of readed chars |
*/ |
*/ |
int ioPromptRead(int *h, const char *csPrompt, char * __restrict psData, int dataLen); | int ioPromptRead(int *h, const char *csPrompt, |
| char * __restrict psData, int dataLen); |
/* |
/* |
* ioPromptPassword() - Read password from input h[0] with prompt to output h[1] |
* ioPromptPassword() - Read password from input h[0] with prompt to output h[1] |
* |
* |
Line 187 int ioPromptRead(int *h, const char *csPrompt, char *
|
Line 319 int ioPromptRead(int *h, const char *csPrompt, char *
|
* @confirm = Confirm password, 0 - get password, !=0 Ask for confirmation |
* @confirm = Confirm password, 0 - get password, !=0 Ask for confirmation |
* return: 0 EOF; -1 error:: can`t read; >0 count of readed chars |
* return: 0 EOF; -1 error:: can`t read; >0 count of readed chars |
*/ |
*/ |
int ioPromptPassword(int *h, const char *csPrompt, char * __restrict psPass, int passLen, int confirm); | int ioPromptPassword(int *h, const char *csPrompt, |
| char * __restrict psPass, int passLen, int confirm); |
|
|
|
|
/* |
/* |
Line 489 int io_dumbFile(const char *csFile, int mode, off_t si
|
Line 622 int io_dumbFile(const char *csFile, int mode, off_t si
|
* return: -1 error or 0 ok |
* return: -1 error or 0 ok |
*/ |
*/ |
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 |
* |
* |