|
version 1.33.2.2, 2013/08/12 23:25:35
|
version 1.36.2.5, 2013/11/21 18:26:40
|
|
Line 62 SUCH DAMAGE.
|
Line 62 SUCH DAMAGE.
|
| #include <net/bpf.h> |
#include <net/bpf.h> |
| #include <netinet/in.h> |
#include <netinet/in.h> |
| #include <elwix.h> |
#include <elwix.h> |
| |
#include <aitsched.h> |
| |
|
| |
|
| #ifndef STRSIZ |
#ifndef STRSIZ |
|
Line 71 SUCH DAMAGE.
|
Line 72 SUCH DAMAGE.
|
| #define IO_SOCK_ROLE_CLIENT 0 |
#define IO_SOCK_ROLE_CLIENT 0 |
| #define IO_SOCK_ROLE_SERVER 1 |
#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; |
| |
int cli_fd; |
| |
int cli_pty; |
| |
sockaddr_t cli_addr; |
| |
char cli_name[64]; |
| |
|
| |
sched_task_func_t cli_func; |
| |
|
| |
ait_val_t cli_buf[2]; |
| |
|
| |
TAILQ_ENTRY(tagCliSock) cli_node; |
| |
}; |
| |
|
| typedef struct { |
typedef struct { |
| int sock_role; | int sock_role; |
| int sock_backq; | int sock_backq; |
| int sock_type; | int sock_type; |
| int sock_proto; | int sock_proto; |
| int sock_fd; | int sock_fd; |
| sockaddr_t sock_addr; | struct timespec sock_timeout; |
| | sockaddr_t sock_addr; |
| | sockaddr_t sock_peer; |
| |
|
| sockaddr_t sock_peer; | ait_val_t sock_buf; |
| |
|
| ait_val_t sock_buf; | volatile intptr_t sock_kill; |
| | sched_root_task_t *sock_root; |
| | |
| | pthread_mutex_t sock_mtx; |
| | TAILQ_HEAD(, tagCliSock) sock_cli; |
| } sock_t; |
} sock_t; |
| |
|
| |
|
|
Line 112 sock_t *ioInitSocket(int role, int type, int proto,
|
Line 140 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); |
| |
/* |
| * ioUpSocket() - Setup socket for use |
* ioUpSocket() - Setup socket for use |
| * |
* |
| * @s = Socket |
* @s = Socket |
| * @arg = Server role = listen backlog queue and Client role = peer address |
* @arg = Server role = listen backlog queue and Client role = peer address |
| |
* @timeout = Socket timeout in ms (default -1 infinit) |
| * return: -1 error or 0 ok |
* return: -1 error or 0 ok |
| */ |
*/ |
| int ioUpSocket(sock_t * __restrict s, void *arg); | 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 |
| | * |
| | * @s = Socket |
| | * @rcb = Read callback |
| | * return: -1 error or return result from scheduler |
| | */ |
| | int ioLoopSocket(sock_t * __restrict s, sched_task_func_t rcb); |
| |
|
| /* |
/* |
| * 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 464 int io_etherOpen(const char *csIface, int flags, int w
|
Line 516 int io_etherOpen(const char *csIface, int flags, int w
|
| * return: none |
* return: none |
| */ |
*/ |
| void io_etherClose(int eth, void **zcbuf); |
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 |
* io_etherSend() - Send packet to bpf |