Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion udpbench.1
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,15 @@ Use
.Xr write 2
instead of
.Xr send 2
system call.
for the
.Cm send
action or
.Xr read 2
instead of
.Xr recv 2
for the
.Cm recv
action.
They may have different throughput on some systems.
.El
.Sh EXAMPLES
Expand Down
12 changes: 7 additions & 5 deletions udpbench.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
sig_atomic_t alarm_signaled;

const char *progname, *hostname, *service = "12345", *remotessh;
int divert, hopbyhop, sendmode, mcastloop = -1, mcastttl = -1, dowrite;
int divert, hopbyhop, sendmode, mcastloop = -1, mcastttl = -1, readwrite;
#if defined(__linux__) && (defined(UDP_GRO) || defined(UDP_SEGMENT))
int segment;
#endif
Expand Down Expand Up @@ -120,7 +120,7 @@ usage(void)
" -r remotessh ssh host to start udpbench on remote side\n"
" -T ttl set TTL or hop count for multicast packets\n"
" -t timeout send duration or receive timeout, default 1\n"
" -w use write instead of send system call\n"
" -w use read and write instead of recv and send\n"
" send|recv send or receive mode for local side\n"
" hostname address of receiving side\n"
);
Expand Down Expand Up @@ -236,7 +236,7 @@ main(int argc, char *argv[])
errstr, optarg);
break;
case 'w':
dowrite = 1;
readwrite = 1;
break;
default:
usage();
Expand Down Expand Up @@ -265,7 +265,7 @@ main(int argc, char *argv[])

if (bitrate && packetrate)
errx(1, "either bitrate or packetrate may be given");
if (mmsglen && dowrite)
if (mmsglen && readwrite)
errx(1, "either mmsglen or write may be used");
#if defined(__linux__) && (defined(UDP_GRO) || defined(UDP_SEGMENT))
if (udplength == 0 && segment)
Expand Down Expand Up @@ -1020,7 +1020,7 @@ udp_send(int udp_socket, int udp_family, unsigned long sendrate)
syscall++;
if (mmsglen)
pkts = sendmmsg(udp_socket, mmsg, mmsglen, 0);
else if(dowrite)
else if(readwrite)
sndlen = write(udp_socket, payload, udplen);
else
sndlen = send(udp_socket, payload, udplen, 0);
Expand Down Expand Up @@ -1151,6 +1151,8 @@ udp_receive(int udp_socket, int udp_family, struct timeval *final)
syscall++;
if (mmsglen)
pkts = recvmmsg(udp_socket, mmsg, mmsglen, 0, NULL);
else if(readwrite)
rcvlen = read(udp_socket, payload, udplen + 1);
else
rcvlen = recv(udp_socket, payload, udplen + 1, 0);
if (pkts == -1 || rcvlen == -1) {
Expand Down