From b089fd9850e50bb0a75dacfb665ec1e85aaa30b4 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 11 Oct 2004 10:31:33 +0000 Subject: Add timeout option --- tools/l2ping.1 | 9 ++++++++- tools/l2ping.c | 27 +++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/tools/l2ping.1 b/tools/l2ping.1 index 186e5056..0c7da44b 100644 --- a/tools/l2ping.1 +++ b/tools/l2ping.1 @@ -10,6 +10,8 @@ l2ping \- Send L2CAP echo request and receive answer ] [ .I -c count ] [ +.I -t timeout +] [ .I -f ] < .I bd_addr @@ -34,6 +36,11 @@ Send .B count number of packets then exit. .TP +.I -c timeout +Wait +.B timeout +for the response. +.TP .I -f Kind of flood ping. Use with care! It reduces the delay time between packets to 0. @@ -44,6 +51,6 @@ The Bluetooth MAC address to be pinged in dotted hex notation like or .B 01:EF:cd:aB:02:03 .SH AUTHORS -Written by Maxim Krasnyansky +Written by Maxim Krasnyansky and Marcel Holtmann .PP man page by Nils Faerber diff --git a/tools/l2ping.c b/tools/l2ping.c index 1f3f3a41..45ddbe92 100644 --- a/tools/l2ping.c +++ b/tools/l2ping.c @@ -56,10 +56,11 @@ /* Defaults */ bdaddr_t bdaddr; -int size = 20; -int ident = 200; -int delay = 1; -int count = -1; +int size = 20; +int ident = 200; +int delay = 1; +int count = -1; +int timeout = 10; /* Stats */ int sent_pkt = 0, recv_pkt = 0; @@ -120,7 +121,7 @@ static void ping(char *svr) /* Initialize buffer */ for (i = L2CAP_CMD_HDR_SIZE; i < sizeof(buf); i++) - buf[i]=(i%40)+'A'; + buf[i] = (i % 40) + 'A'; id = ident; @@ -148,7 +149,7 @@ static void ping(char *svr) register int err; pf[0].fd = s; pf[0].events = POLLIN; - if ((err = poll(pf, 1, 10*1000)) < 0) { + if ((err = poll(pf, 1, timeout * 1000)) < 0) { perror("Poll failed"); exit(1); } @@ -193,12 +194,14 @@ static void ping(char *svr) printf("%d bytes from %s id %d time %.2fms\n", cmd->len, svr, id - ident, tv2fl(tv_diff)); - if (delay) sleep(delay); + if (delay) + sleep(delay); } else { printf("no response from %s: id %d\n", svr, id); } - if (++id > 254) id = ident; + if (++id > 254) + id = ident; } stat(0); } @@ -207,7 +210,7 @@ static void usage(void) { printf("l2ping - L2CAP ping\n"); printf("Usage:\n"); - printf("\tl2ping [-S source addr] [-s size] [-c count] [-f] \n"); + printf("\tl2ping [-S source addr] [-s size] [-c count] [-t timeout] [-f] \n"); } extern int optind,opterr,optopt; @@ -220,7 +223,7 @@ int main(int argc, char *argv[]) /* Default options */ bacpy(&bdaddr, BDADDR_ANY); - while ((opt=getopt(argc,argv,"s:c:fS:")) != EOF) { + while ((opt=getopt(argc,argv,"s:c:t:fS:")) != EOF) { switch(opt) { case 'f': /* Kinda flood ping */ @@ -231,6 +234,10 @@ int main(int argc, char *argv[]) count = atoi(optarg); break; + case 't': + timeout = atoi(optarg); + break; + case 's': size = atoi(optarg); break; -- cgit