=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tcpbench/tcpbench.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/tcpbench/tcpbench.c 2008/09/18 10:23:33 1.8 --- src/usr.bin/tcpbench/tcpbench.c 2009/08/13 14:19:43 1.9 *************** *** 54,59 **** --- 54,61 ---- sig_atomic_t done = 0; sig_atomic_t print_stats = 0; + u_int rdomain; + struct statctx { struct timeval t_start, t_last, t_cur; unsigned long long bytes; *************** *** 113,122 **** fprintf(stderr, "usage: tcpbench -l\n" " tcpbench [-v] [-B buf] [-k kvars] [-n connections]" ! " [-p port] [-r rate]\n" " [-S space] hostname\n" " tcpbench -s [-v] [-B buf] [-k kvars] [-p port] [-r rate]" ! " [-S space]\n"); exit(1); } --- 115,124 ---- fprintf(stderr, "usage: tcpbench -l\n" " tcpbench [-v] [-B buf] [-k kvars] [-n connections]" ! " [-p port] [-r rate] [-V rdomain]\n" " [-S space] hostname\n" " tcpbench -s [-v] [-B buf] [-k kvars] [-p port] [-r rate]" ! " [-S space] [-V rdomain]\n"); exit(1); } *************** *** 500,505 **** --- 502,512 ---- warn("socket"); continue; } + if (rdomain && ai->ai_family == AF_INET) { + if (setsockopt(sock, IPPROTO_IP, SO_RDOMAIN, + &rdomain, sizeof(rdomain)) == -1) + err(1, "setsockopt SO_RDOMAIN"); + } if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) warn("reuse port"); *************** *** 646,651 **** --- 653,663 ---- warn("socket"); continue; } + if (rdomain && ai->ai_family == AF_INET) { + if (setsockopt(sock, IPPROTO_IP, SO_RDOMAIN, + &rdomain, sizeof(rdomain)) == -1) + err(1, "setsockopt SO_RDOMAIN"); + } if (Sflag) { if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &Sflag, sizeof(Sflag)) == -1) *************** *** 757,763 **** struct nlist nl[] = { { "_tcbtable" }, { "" } }; ! while ((ch = getopt(argc, argv, "B:hlk:n:p:r:sS:v")) != -1) { switch (ch) { case 'l': list_kvars(); --- 769,775 ---- struct nlist nl[] = { { "_tcbtable" }, { "" } }; ! while ((ch = getopt(argc, argv, "B:hlk:n:p:r:sS:vV:")) != -1) { switch (ch) { case 'l': list_kvars(); *************** *** 797,802 **** --- 809,821 ---- break; case 'v': vflag++; + break; + case 'V': + rdomain = (unsigned int)strtonum(optarg, 0, + RT_TABLEID_MAX, &errstr); + if (errstr) + errx(1, "rdomain value is %s: %s", + errstr, optarg); break; case 'n': nconn = strtonum(optarg, 0, 65535, &errstr);