version 1.26.2.10, 2015/06/30 14:11:55
|
version 1.27, 2015/07/02 22:28:15
|
Line 82 static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4]
|
Line 82 static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4]
|
|
|
static volatile uintptr_t _glSigArg = 0; |
static volatile uintptr_t _glSigArg = 0; |
|
|
|
|
void |
void |
rpc_freeCli(rpc_cli_t * __restrict c) |
rpc_freeCli(rpc_cli_t * __restrict c) |
{ |
{ |
Line 197 txPacket(sched_task_t *task)
|
Line 196 txPacket(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
rpc_SetErr(EMSGSIZE, "Message too long"); |
rpc_SetErr(EMSGSIZE, "Message too long"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
Line 214 txPacket(sched_task_t *task)
|
Line 213 txPacket(sched_task_t *task)
|
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else |
} else |
wlen += ret; |
wlen += ret; |
} |
} |
Line 263 execCall(sched_task_t *task)
|
Line 262 execCall(sched_task_t *task)
|
rpc_SetErr(ERPCMISMATCH, "#%d - %s", elwix_GetErrno(), elwix_GetError()); |
rpc_SetErr(ERPCMISMATCH, "#%d - %s", elwix_GetErrno(), elwix_GetError()); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
taskExit(task, NULL); |
taskExit(task, NULL); |
} |
} |
} else |
} else |
Line 274 execCall(sched_task_t *task)
|
Line 273 execCall(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
/* if client doesn't want reply */ |
/* if client doesn't want reply */ |
rpc->call_rep.ret = RPC_ERROR(rpc_srv_execCall(c, rpc, f->func_name, arr)); | RPC_SET_RETURN(rpc, rpc_srv_execCall(c, rpc, f->func_name, arr)); |
if (rpc->call_rep.ret == htonl(-1)) { |
if (rpc->call_rep.ret == htonl(-1)) { |
if (!rpc->call_rep.eno) { |
if (!rpc->call_rep.eno) { |
LOGERR; |
LOGERR; |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} |
} |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
ait_freeVars(&c->cli_vars); |
ait_freeVars(&c->cli_vars); |
Line 339 rxPacket(sched_task_t *task)
|
Line 338 rxPacket(sched_task_t *task)
|
rpc_SetErr(ERPCMISMATCH, "Short RPC packet"); |
rpc_SetErr(ERPCMISMATCH, "Short RPC packet"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
goto err; |
goto err; |
} else |
} else |
len = ntohl(rpc->call_len); |
len = ntohl(rpc->call_len); |
Line 348 rxPacket(sched_task_t *task)
|
Line 347 rxPacket(sched_task_t *task)
|
rpc_SetErr(ERPCMISMATCH, "Short RPC packet"); |
rpc_SetErr(ERPCMISMATCH, "Short RPC packet"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
goto err; |
goto err; |
} |
} |
|
|
Line 367 rxPacket(sched_task_t *task)
|
Line 366 rxPacket(sched_task_t *task)
|
rpc_SetErr(ERPCMISMATCH, "Bad CRC RPC packet"); |
rpc_SetErr(ERPCMISMATCH, "Bad CRC RPC packet"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
goto err; |
goto err; |
} |
} |
#endif |
#endif |
Line 378 rxPacket(sched_task_t *task)
|
Line 377 rxPacket(sched_task_t *task)
|
rpc_SetErr(ERPCMISMATCH, "Get invalid RPC session"); |
rpc_SetErr(ERPCMISMATCH, "Get invalid RPC session"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
goto err; |
goto err; |
} |
} |
|
|
Line 464 txUDPPacket(sched_task_t *task)
|
Line 463 txUDPPacket(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
rpc_SetErr(EMSGSIZE, "Message too long"); |
rpc_SetErr(EMSGSIZE, "Message too long"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
Line 481 txUDPPacket(sched_task_t *task)
|
Line 480 txUDPPacket(sched_task_t *task)
|
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else |
} else |
wlen += ret; |
wlen += ret; |
} |
} |
Line 604 txRAWPacket(sched_task_t *task)
|
Line 603 txRAWPacket(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
rpc_SetErr(EMSGSIZE, "Message too long"); |
rpc_SetErr(EMSGSIZE, "Message too long"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
Line 621 txRAWPacket(sched_task_t *task)
|
Line 620 txRAWPacket(sched_task_t *task)
|
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else |
} else |
wlen += ret; |
wlen += ret; |
} |
} |
Line 765 txBPFPacket(sched_task_t *task)
|
Line 764 txBPFPacket(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
rpc_SetErr(EMSGSIZE, "Message too long"); |
rpc_SetErr(EMSGSIZE, "Message too long"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
Line 782 txBPFPacket(sched_task_t *task)
|
Line 781 txBPFPacket(sched_task_t *task)
|
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else |
} else |
wlen += ret; |
wlen += ret; |
} |
} |
Line 928 txEXTPacket(sched_task_t *task)
|
Line 927 txEXTPacket(sched_task_t *task)
|
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
rpc_SetErr(EPROGUNAVAIL, "Function not found at RPC server"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
} else if (rpc_pktFreeSpace(c) > s->srv_netbuf) { |
rpc_SetErr(EMSGSIZE, "Message too long"); |
rpc_SetErr(EMSGSIZE, "Message too long"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else { |
} else { |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
Line 945 txEXTPacket(sched_task_t *task)
|
Line 944 txEXTPacket(sched_task_t *task)
|
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
rpc_SetErr(EBADRPC, "Prepare RPC packet failed"); |
|
|
rpc->call_argc ^= rpc->call_argc; |
rpc->call_argc ^= rpc->call_argc; |
rpc->call_rep.ret = RPC_ERROR(-1); | RPC_SET_RETURN(rpc, -1); |
rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | RPC_SET_ERRNO(rpc, rpc_Errno); |
} else |
} else |
wlen += ret; |
wlen += ret; |
} |
} |
Line 1118 rxBLOB(sched_task_t *task)
|
Line 1117 rxBLOB(sched_task_t *task)
|
if (!(b = rpc_srv_getBLOB(s, ntohl(blob.hdr_var)))) { |
if (!(b = rpc_srv_getBLOB(s, ntohl(blob.hdr_var)))) { |
rpc_SetErr(EINVAL, "Var=%x not found", ntohl(blob.hdr_var)); |
rpc_SetErr(EINVAL, "Var=%x not found", ntohl(blob.hdr_var)); |
blob.hdr_cmd = no; |
blob.hdr_cmd = no; |
blob.hdr_ret = RPC_ERROR(-1); | RPC_SET_BLOB_RET(&blob, -1); |
break; |
break; |
} else |
} else |
blob.hdr_len = htonl(b->blob_len); |
blob.hdr_len = htonl(b->blob_len); |
Line 1129 rxBLOB(sched_task_t *task)
|
Line 1128 rxBLOB(sched_task_t *task)
|
rpc_srv_blobUnmap(b); |
rpc_srv_blobUnmap(b); |
} else { |
} else { |
blob.hdr_cmd = error; |
blob.hdr_cmd = error; |
blob.hdr_ret = RPC_ERROR(-1); | RPC_SET_BLOB_RET(&blob, -1); |
} |
} |
break; |
break; |
case set: |
case set: |
Line 1143 rxBLOB(sched_task_t *task)
|
Line 1142 rxBLOB(sched_task_t *task)
|
rpc_srv_blobUnmap(b); |
rpc_srv_blobUnmap(b); |
} else { |
} else { |
blob.hdr_cmd = error; |
blob.hdr_cmd = error; |
blob.hdr_ret = RPC_ERROR(-1); | RPC_SET_BLOB_RET(&blob, -1); |
} |
} |
break; |
break; |
case unset: |
case unset: |
if (rpc_srv_unregisterBLOB(s, ntohl(blob.hdr_var)) == -1) { |
if (rpc_srv_unregisterBLOB(s, ntohl(blob.hdr_var)) == -1) { |
blob.hdr_cmd = error; |
blob.hdr_cmd = error; |
blob.hdr_ret = RPC_ERROR(-1); | RPC_SET_BLOB_RET(&blob, -1); |
} |
} |
break; |
break; |
default: |
default: |
rpc_SetErr(EPROCUNAVAIL, "Unsupported BLOB command %d", blob.hdr_cmd); |
rpc_SetErr(EPROCUNAVAIL, "Unsupported BLOB command %d", blob.hdr_cmd); |
blob.hdr_cmd = error; |
blob.hdr_cmd = error; |
blob.hdr_ret = RPC_ERROR(-1); | RPC_SET_BLOB_RET(&blob, -1); |
} |
} |
|
|
end: |
end: |