version 1.36, 2012/06/16 17:18:11 |
version 1.37, 2012/10/02 08:50:15 |
|
|
|
|
/* Our tcpbench globals */ |
/* Our tcpbench globals */ |
struct { |
struct { |
u_int Vflag; /* rtableid */ |
|
int Sflag; /* Socket buffer size (tcp mode) */ |
int Sflag; /* Socket buffer size (tcp mode) */ |
u_int rflag; /* Report rate (ms) */ |
u_int rflag; /* Report rate (ms) */ |
int sflag; /* True if server */ |
int sflag; /* True if server */ |
|
|
warn("socket"); |
warn("socket"); |
continue; |
continue; |
} |
} |
if (ptb->Vflag) { |
|
if (setsockopt(sock, SOL_SOCKET, SO_RTABLE, |
|
&ptb->Vflag, sizeof(ptb->Vflag)) == -1) { |
|
if (errno == ENOPROTOOPT) |
|
warn("set rtable"); |
|
else |
|
err(1, "setsockopt SO_RTABLE"); |
|
} |
|
} |
|
if (ptb->Tflag != -1 && ai->ai_family == AF_INET) { |
if (ptb->Tflag != -1 && ai->ai_family == AF_INET) { |
if (setsockopt(sock, IPPROTO_IP, IP_TOS, |
if (setsockopt(sock, IPPROTO_IP, IP_TOS, |
&ptb->Tflag, sizeof(ptb->Tflag))) |
&ptb->Tflag, sizeof(ptb->Tflag))) |
|
|
&ptb->Tflag, sizeof(ptb->Tflag))) |
&ptb->Tflag, sizeof(ptb->Tflag))) |
err(1, "setsockopt IPV6_TCLASS"); |
err(1, "setsockopt IPV6_TCLASS"); |
} |
} |
if (ptb->Vflag) { |
|
if (setsockopt(sock, SOL_SOCKET, SO_RTABLE, |
|
&ptb->Vflag, sizeof(ptb->Vflag)) == -1) { |
|
if (errno == ENOPROTOOPT) |
|
warn("set rtable"); |
|
else |
|
err(1, "setsockopt SO_RTABLE"); |
|
} |
|
} |
|
if (ptb->Sflag) { |
if (ptb->Sflag) { |
if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, |
if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, |
&ptb->Sflag, sizeof(ptb->Sflag)) == -1) |
&ptb->Sflag, sizeof(ptb->Sflag)) == -1) |
|
|
extern int optind; |
extern int optind; |
extern char *optarg; |
extern char *optarg; |
struct timeval tv; |
struct timeval tv; |
unsigned int secs; |
unsigned int secs, rtable; |
|
|
char kerr[_POSIX2_LINE_MAX], *tmp; |
char kerr[_POSIX2_LINE_MAX], *tmp; |
struct addrinfo *aitop, *aib, hints; |
struct addrinfo *aitop, *aib, hints; |
|
|
setlinebuf(stdout); |
setlinebuf(stdout); |
ptb = &tcpbench; |
ptb = &tcpbench; |
ptb->dummybuf_len = 0; |
ptb->dummybuf_len = 0; |
ptb->Sflag = ptb->sflag = ptb->vflag = ptb->Vflag = 0; |
ptb->Sflag = ptb->sflag = ptb->vflag = 0; |
ptb->kvmh = NULL; |
ptb->kvmh = NULL; |
ptb->kvars = NULL; |
ptb->kvars = NULL; |
ptb->rflag = DEFAULT_STATS_INTERVAL; |
ptb->rflag = DEFAULT_STATS_INTERVAL; |
|
|
ptb->vflag++; |
ptb->vflag++; |
break; |
break; |
case 'V': |
case 'V': |
ptb->Vflag = (unsigned int)strtonum(optarg, 0, |
rtable = (unsigned int)strtonum(optarg, 0, |
RT_TABLEID_MAX, &errstr); |
RT_TABLEID_MAX, &errstr); |
if (errstr) |
if (errstr) |
errx(1, "rtable value is %s: %s", |
errx(1, "rtable value is %s: %s", |
errstr, optarg); |
errstr, optarg); |
|
if (setrtable(rtable) == -1) |
|
err(1, "setrtable"); |
break; |
break; |
case 'n': |
case 'n': |
nconn = strtonum(optarg, 0, 65535, &errstr); |
nconn = strtonum(optarg, 0, 65535, &errstr); |