|
version 1.31.2.4, 2013/06/25 08:18:57
|
version 1.35, 2013/09/02 11:16:27
|
|
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 |
| |
|
| |
|
| |
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 |
| int io_GetErrno(); |
int io_GetErrno(); |
| // io_GetError() Get error text of last operation |
// io_GetError() Get error text of last operation |
|
Line 74 const char *io_GetError();
|
Line 112 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 401 int io_get1stiface(char *szIface, int iflen);
|
Line 477 int io_get1stiface(char *szIface, int iflen);
|
| * @csIface = interface name |
* @csIface = interface name |
| * @flags = open flags |
* @flags = open flags |
| * @whdr = with complete headers |
* @whdr = with complete headers |
| |
* @wdlt = with data link type |
| * @buflen = buffer length |
* @buflen = buffer length |
| * @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 io_etherOpen(const char *csIface, int flags, int whdr, int wdlt, |
| unsigned int *buflen, void **zcbuf); |
unsigned int *buflen, void **zcbuf); |
| /* |
/* |
| * io_etherClose() - Close BPF interface |
* io_etherClose() - Close BPF interface |