version 1.16, 2009/12/11 17:20:50 |
version 1.17, 2010/07/03 04:44:51 |
|
|
sig_atomic_t done = 0; |
sig_atomic_t done = 0; |
sig_atomic_t proc_slice = 0; |
sig_atomic_t proc_slice = 0; |
|
|
static u_int rdomain; |
static u_int rtableid; |
static char **kflag; |
static char **kflag; |
static size_t Bflag; |
static size_t Bflag; |
static int Sflag; |
static int Sflag; |
|
|
fprintf(stderr, |
fprintf(stderr, |
"usage: tcpbench -l\n" |
"usage: tcpbench -l\n" |
" tcpbench [-v] [-B buf] [-k kvars] [-n connections] [-p port]\n" |
" tcpbench [-v] [-B buf] [-k kvars] [-n connections] [-p port]\n" |
" [-r rate] [-S space] [-V rdomain] hostname\n" |
" [-r rate] [-S space] [-V rtable] hostname\n" |
" tcpbench -s [-v] [-B buf] [-k kvars] [-p port]\n" |
" tcpbench -s [-v] [-B buf] [-k kvars] [-p port]\n" |
" [-r rate] [-S space] [-V rdomain]\n"); |
" [-r rate] [-S space] [-V rtable]\n"); |
exit(1); |
exit(1); |
} |
} |
|
|
|
|
warn("socket"); |
warn("socket"); |
continue; |
continue; |
} |
} |
if (rdomain && ai->ai_family == AF_INET) { |
if (rtableid && ai->ai_family == AF_INET) { |
if (setsockopt(sock, IPPROTO_IP, SO_RDOMAIN, |
if (setsockopt(sock, IPPROTO_IP, SO_RTABLE, |
&rdomain, sizeof(rdomain)) == -1) |
&rtableid, sizeof(rtableid)) == -1) |
err(1, "setsockopt SO_RDOMAIN"); |
err(1, "setsockopt SO_RTABLE"); |
} else if (rdomain) |
} else if (rtableid) |
warnx("rdomain only supported on AF_INET"); |
warnx("rtable only supported on AF_INET"); |
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, |
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, |
&on, sizeof(on)) == -1) |
&on, sizeof(on)) == -1) |
warn("reuse port"); |
warn("reuse port"); |
|
|
warn("socket"); |
warn("socket"); |
continue; |
continue; |
} |
} |
if (rdomain && ai->ai_family == AF_INET) { |
if (rtableid && ai->ai_family == AF_INET) { |
if (setsockopt(sock, IPPROTO_IP, SO_RDOMAIN, |
if (setsockopt(sock, IPPROTO_IP, SO_RTABLE, |
&rdomain, sizeof(rdomain)) == -1) |
&rtableid, sizeof(rtableid)) == -1) |
err(1, "setsockopt SO_RDOMAIN"); |
err(1, "setsockopt SO_RTABLE"); |
} else if (rdomain) |
} else if (rtableid) |
warnx("rdomain only supported on AF_INET"); |
warnx("rtable only supported on AF_INET"); |
if (Sflag) { |
if (Sflag) { |
if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, |
if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, |
&Sflag, sizeof(Sflag)) == -1) |
&Sflag, sizeof(Sflag)) == -1) |
|
|
int nconn = 1; |
int nconn = 1; |
|
|
Bflag = DEFAULT_BUF; |
Bflag = DEFAULT_BUF; |
Sflag = sflag = vflag = rdomain = 0; |
Sflag = sflag = vflag = rtableid = 0; |
kflag = NULL; |
kflag = NULL; |
rflag = DEFAULT_STATS_INTERVAL; |
rflag = DEFAULT_STATS_INTERVAL; |
|
|
|
|
vflag++; |
vflag++; |
break; |
break; |
case 'V': |
case 'V': |
rdomain = (unsigned int)strtonum(optarg, 0, |
rtableid = (unsigned int)strtonum(optarg, 0, |
RT_TABLEID_MAX, &errstr); |
RT_TABLEID_MAX, &errstr); |
if (errstr) |
if (errstr) |
errx(1, "rdomain value is %s: %s", |
errx(1, "rtable value is %s: %s", |
errstr, optarg); |
errstr, optarg); |
break; |
break; |
case 'n': |
case 'n': |