version 1.20, 2015/07/22 20:01:46
|
version 1.20.2.2, 2016/08/02 10:26:58
|
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 - 2015 | Copyright 2004 - 2016 |
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 138 rpc_Read(int sock, int type, int flags, sockaddr_t * _
|
Line 138 rpc_Read(int sock, int type, int flags, sockaddr_t * _
|
sockaddr_t sa2; |
sockaddr_t sa2; |
socklen_t salen; |
socklen_t salen; |
int ret = 0, hlen, cx = 0; |
int ret = 0, hlen, cx = 0; |
struct ether_header *eh; |
|
struct bpf_hdr *h; |
|
ether_addr_t bcst = {{ [0 ... sizeof bcst - 1] = 0xff }}; |
ether_addr_t bcst = {{ [0 ... sizeof bcst - 1] = 0xff }}; |
u_char *buf = AIT_GET_BUF(pkt); |
u_char *buf = AIT_GET_BUF(pkt); |
size_t blen = AIT_LEN(pkt); |
size_t blen = AIT_LEN(pkt); |
struct tagRPCCall *rpc = (struct tagRPCCall *) buf; |
struct tagRPCCall *rpc = (struct tagRPCCall *) buf; |
|
#ifndef __linux__ |
|
struct ether_header *eh; |
|
struct bpf_hdr *h; |
ait_val_t v = AIT_VAL_INIT; |
ait_val_t v = AIT_VAL_INIT; |
|
#endif |
|
|
try2read: |
try2read: |
pfd.fd = sock; |
pfd.fd = sock; |
pfd.events = POLLIN | POLLPRI; |
pfd.events = POLLIN | POLLPRI; |
memset(buf, 0, blen); |
memset(buf, 0, blen); |
memset(&sa2, 0, sizeof sa2); |
memset(&sa2, 0, sizeof sa2); |
salen = sa2.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff); | salen = (u_char) MIN(sizeof(sockaddr_t), 0xff); |
| #ifndef __linux__ |
| sa2.ss.ss_len = salen; |
| #endif |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { |
if (ret) |
if (ret) |
Line 168 try2read:
|
Line 173 try2read:
|
case SOCK_EXT: |
case SOCK_EXT: |
ret = read(sock, buf, blen); |
ret = read(sock, buf, blen); |
break; |
break; |
|
#ifndef __linux__ |
case SOCK_BPF: |
case SOCK_BPF: |
if (!sa) { |
if (!sa) { |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
Line 217 try2read:
|
Line 223 try2read:
|
AIT_FREE_VAL(&v); |
AIT_FREE_VAL(&v); |
} |
} |
break; |
break; |
|
#endif |
case SOCK_RAW: |
case SOCK_RAW: |
case SOCK_DGRAM: |
case SOCK_DGRAM: |
if (!sa) { |
if (!sa) { |
Line 292 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 299 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
struct pollfd pfd; |
struct pollfd pfd; |
int ret = 0; |
int ret = 0; |
u_char *buf = AIT_GET_BUF(pkt); |
u_char *buf = AIT_GET_BUF(pkt); |
|
#ifndef __linux__ |
ait_val_t v = AIT_VAL_INIT; |
ait_val_t v = AIT_VAL_INIT; |
struct ether_header *eh; |
struct ether_header *eh; |
|
#endif |
|
|
|
|
pfd.fd = sock; |
pfd.fd = sock; |
Line 314 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 323 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
case SOCK_EXT: |
case SOCK_EXT: |
ret = write(sock, buf, blen); |
ret = write(sock, buf, blen); |
break; |
break; |
|
#ifndef __linux__ |
case SOCK_BPF: |
case SOCK_BPF: |
if (!sa) { |
if (!sa) { |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
Line 331 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 341 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
|
|
AIT_FREE_VAL(&v); |
AIT_FREE_VAL(&v); |
break; |
break; |
|
#endif |
case SOCK_RAW: |
case SOCK_RAW: |
case SOCK_DGRAM: |
case SOCK_DGRAM: |
if (!sa) { |
if (!sa) { |
Line 338 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 349 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
return -1; |
return -1; |
} |
} |
|
|
ret = sendto(sock, buf, blen, flags, &sa->sa, sa->sa.sa_len); | ret = sendto(sock, buf, blen, flags, &sa->sa, sizeof sa->sa); |
break; |
break; |
default: |
default: |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |