*/
#include "defs.h"
-#include "msghdr.h"
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/uio.h>
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
if (fetch_socklen(tcp, &ulen, tcp->u_arg[1], tcp->u_arg[2])) {
- /* abuse of auxstr to retain state */
- tcp->auxstr = (void *) (long) ulen;
+ set_tcb_priv_ulong(tcp, ulen);
return 0;
} else {
printaddr(tcp->u_arg[1]);
}
}
- ulen = (long) tcp->auxstr;
- tcp->auxstr = NULL;
+ ulen = get_tcb_priv_ulong(tcp);
if (syserror(tcp) || umove(tcp, tcp->u_arg[2], &rlen) < 0) {
printaddr(tcp->u_arg[1]);
return RVAL_DECODED;
}
-SYS_FUNC(sendmsg)
-{
- printfd(tcp, tcp->u_arg[0]);
- tprints(", ");
- decode_msghdr(tcp, 0, tcp->u_arg[1], (unsigned long) -1L);
- /* flags */
- tprints(", ");
- printflags(msg_flags, tcp->u_arg[2], "MSG_???");
-
- return RVAL_DECODED;
-}
-
-SYS_FUNC(sendmmsg)
-{
- if (entering(tcp)) {
- /* sockfd */
- printfd(tcp, tcp->u_arg[0]);
- tprints(", ");
- if (!verbose(tcp)) {
- printaddr(tcp->u_arg[1]);
- /* vlen */
- tprintf(", %u, ", (unsigned int) tcp->u_arg[2]);
- /* flags */
- printflags(msg_flags, tcp->u_arg[3], "MSG_???");
- return RVAL_DECODED;
- }
- } else {
- decode_mmsgvec(tcp, tcp->u_arg[1], tcp->u_rval, false);
- /* vlen */
- tprintf(", %u, ", (unsigned int) tcp->u_arg[2]);
- /* flags */
- printflags(msg_flags, tcp->u_arg[3], "MSG_???");
- }
- return 0;
-}
-
SYS_FUNC(recv)
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
if (fetch_socklen(tcp, &ulen, tcp->u_arg[4], tcp->u_arg[5])) {
- /* abuse of auxstr to retain state */
- tcp->auxstr = (void *) (long) ulen;
+ set_tcb_priv_ulong(tcp, ulen);
}
} else {
/* buf */
printflags(msg_flags, tcp->u_arg[3], "MSG_???");
tprints(", ");
- ulen = (long) tcp->auxstr;
- tcp->auxstr = NULL;
+ ulen = get_tcb_priv_ulong(tcp);
if (!fetch_socklen(tcp, &rlen, tcp->u_arg[4], tcp->u_arg[5])) {
/* from address */
return 0;
}
-SYS_FUNC(recvmsg)
-{
- int msg_namelen;
-
- if (entering(tcp)) {
- printfd(tcp, tcp->u_arg[0]);
- tprints(", ");
- if (fetch_msghdr_namelen(tcp, tcp->u_arg[1], &msg_namelen)) {
- /* abuse of auxstr to retain state */
- tcp->auxstr = (void *) (long) msg_namelen;
- return 0;
- }
- printaddr(tcp->u_arg[1]);
- } else {
- msg_namelen = (long) tcp->auxstr;
- tcp->auxstr = NULL;
-
- if (syserror(tcp))
- tprintf("{msg_namelen=%d}", msg_namelen);
- else
- decode_msghdr(tcp, &msg_namelen, tcp->u_arg[1],
- tcp->u_rval);
- }
-
- /* flags */
- tprints(", ");
- printflags(msg_flags, tcp->u_arg[2], "MSG_???");
-
- return RVAL_DECODED;
-}
-
-SYS_FUNC(recvmmsg)
-{
- static char str[sizeof("left") + TIMESPEC_TEXT_BUFSIZE];
-
- if (entering(tcp)) {
- printfd(tcp, tcp->u_arg[0]);
- tprints(", ");
- if (verbose(tcp)) {
- /* Abusing tcp->auxstr as temp storage.
- * Will be used and cleared on syscall exit.
- */
- tcp->auxstr = sprint_timespec(tcp, tcp->u_arg[4]);
- } else {
- printaddr(tcp->u_arg[1]);
- /* vlen */
- tprintf(", %u, ", (unsigned int) tcp->u_arg[2]);
- /* flags */
- printflags(msg_flags, tcp->u_arg[3], "MSG_???");
- tprints(", ");
- print_timespec(tcp, tcp->u_arg[4]);
- }
- return 0;
- } else {
- if (verbose(tcp)) {
- decode_mmsgvec(tcp, tcp->u_arg[1], tcp->u_rval, true);
- /* vlen */
- tprintf(", %u, ", (unsigned int) tcp->u_arg[2]);
- /* flags */
- printflags(msg_flags, tcp->u_arg[3], "MSG_???");
- tprints(", ");
- /* timeout on entrance */
- tprints(tcp->auxstr);
- tcp->auxstr = NULL;
- }
- if (syserror(tcp))
- return 0;
- if (tcp->u_rval == 0) {
- tcp->auxstr = "Timeout";
- return RVAL_STR;
- }
- if (!verbose(tcp))
- return 0;
- /* timeout on exit */
- snprintf(str, sizeof(str), "left %s",
- sprint_timespec(tcp, tcp->u_arg[4]));
- tcp->auxstr = str;
- return RVAL_STR;
- }
-}
-
#include "xlat/shutdown_modes.h"
SYS_FUNC(shutdown)
tprintf("{gr_interface=%u, gr_group=", greq.gr_interface);
print_sockaddr(tcp, &greq.gr_group, sizeof(greq.gr_group));
- tprintf("}");
+ tprints("}");
}
#endif /* MCAST_JOIN_GROUP */