Lines Matching refs:TT
61 if (!FLAG(q) && TT.sent && TT.sa) {
62 printf("\n--- %s ping statistics ---\n", ntop(TT.sa));
64 TT.sent, TT.recv, ((TT.sent-TT.recv)*100)/(TT.sent?TT.sent:1));
65 if (TT.recv)
67 TT.min, TT.fugit/TT.recv, TT.max);
69 TT.sa = 0;
125 if (!FLAG(i)) TT.i = FLAG(f) ? 200 : 1000;
126 else if (TT.i<200 && geteuid()) error_exit("need root for -i <200");
127 if (!FLAG(s)) TT.s = 56; // 64-PHDR_LEN
128 if (FLAG(f) && !FLAG(c)) TT.c = 15;
137 if (TT.I) {
138 if (!FLAG(6) && inet_pton(AF_INET, TT.I, (void *)&srcaddr.in.sin_addr))
140 else if (!FLAG(4) && inet_pton(AF_INET6, TT.I, (void *)&srcaddr.in6.sin6_addr))
155 if (!TT.I || !ifa2) break;
158 || strcmp(ifa->ifa_name, TT.I)) continue;
167 error_exit("no v%d addr for -I %s", 4+2*(family==AF_INET6), TT.I);
168 TT.sa = ai->ai_addr;
172 TT.sock = socket(ai->ai_family, SOCK_DGRAM,
174 if (TT.sock == -1) {
182 if (TT.I) xbind(TT.sock, sa, sizeof(srcaddr));
185 xsetsockopt(TT.sock, SOL_IP, IP_RECVTTL, &len, sizeof(len));
188 len = TT.m;
189 xsetsockopt(TT.sock, SOL_SOCKET, SO_MARK, &len, sizeof(len));
192 if (TT.t) {
193 len = TT.t;
195 xsetsockopt(TT.sock, IPPROTO_IP, IP_TTL, &len, 4);
196 else xsetsockopt(TT.sock, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &len, sizeof(len));
200 printf("Ping %s (%s)", *toys.optargs, ntop(TT.sa));
201 if (TT.I) {
203 printf(" from %s (%s)", TT.I, ntop(sa));
206 printf(": %ld(%ld) bytes.\n", TT.s, TT.s+28);
209 TT.min = ULONG_MAX;
214 if (TT.w) tw = TT.w*1000+tnext;
236 if (0>=(waitms = tW-tnow) || !(TT.sent-TT.recv)) break;
246 tnext += TT.i;
252 if (TT.s >= 4) *(unsigned *)(ih+1) = tnow;
254 ih->checksum = pingchksum((void *)toybuf, TT.s+sizeof(*ih));
255 xsendto(TT.sock, toybuf, TT.s+sizeof(*ih), TT.sa);
256 TT.sent++;
260 if (TT.c) if (!--TT.c) {
261 tW = tnow + TT.W*1000;
272 if (!(len = xrecvmsgwait(TT.sock, &msg, 0, &srcaddr2, waitms)))
275 TT.recv++;
276 TT.fugit += (pkttime = millitime()-*(unsigned *)(ih+1));
277 if (pkttime < TT.min) TT.min = pkttime;
278 if (pkttime > TT.max) TT.max = pkttime;