• Home
  • Raw
  • Download

Lines Matching +full:ipv6 +full:- +full:single +full:- +full:target

56  * measure round-trip-delays and packet loss across network paths.
58 * Author -
63 * Status -
65 * Bugs -
165 int pmtudisc=-1;
176 int ni_query = -1;
180 int ni_subject_type = -1;
210 cmsg->cmsg_len = sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0); in inet6_srcrt_init()
211 cmsg->cmsg_level = SOL_IPV6; in inet6_srcrt_init()
212 cmsg->cmsg_type = IPV6_RTHDR; in inet6_srcrt_init()
223 cmsg->cmsg_len += sizeof(struct in6_addr); in inet6_srcrt_add()
224 hdr->ip6r0_len += sizeof(struct in6_addr) / 8; in inet6_srcrt_add()
226 memcpy(&hdr->ip6r0_addr[hdr->ip6r0_segleft++], addr, in inet6_srcrt_add()
254 .namelen = sizeof(_name) - 1, \
272 NIQUERY_OPTION("ipv6", 0, 0, niquery_option_ipv6_handler),
273 NIQUERY_OPTION("ipv6-all", 0, NI_IPV6ADDR_F_ALL, niquery_option_ipv6_flag_handler),
274 NIQUERY_OPTION("ipv6-compatible", 0, NI_IPV6ADDR_F_COMPAT, niquery_option_ipv6_flag_handler),
275 NIQUERY_OPTION("ipv6-linklocal", 0, NI_IPV6ADDR_F_LINKLOCAL, niquery_option_ipv6_flag_handler),
276 NIQUERY_OPTION("ipv6-sitelocal", 0, NI_IPV6ADDR_F_SITELOCAL, niquery_option_ipv6_flag_handler),
277 NIQUERY_OPTION("ipv6-global", 0, NI_IPV6ADDR_F_GLOBAL, niquery_option_ipv6_flag_handler),
279 NIQUERY_OPTION("ipv4-all", 0, NI_IPV4ADDR_F_ALL, niquery_option_ipv4_flag_handler),
280 NIQUERY_OPTION("subject-ipv6", 1, NI_SUBJ_IPV6, niquery_option_subject_addr_handler),
281 NIQUERY_OPTION("subject-ipv4", 1, NI_SUBJ_IPV4, niquery_option_subject_addr_handler),
282 NIQUERY_OPTION("subject-name", 1, 0, niquery_option_subject_name_handler),
283 NIQUERY_OPTION("subject-fqdn", 1, -1, niquery_option_subject_name_handler),
330 static int seq = -1; in niquery_nonce()
344 memcpy(nonce + sizeof(__u16), digest, NI_NONCE_SIZE - sizeof(__u16)); in niquery_nonce()
347 if (memcmp(nonce + sizeof(__u16), digest, NI_NONCE_SIZE - sizeof(__u16))) in niquery_nonce()
348 return -1; in niquery_nonce()
377 return -1; in niquery_check_nonce()
388 return -1; in niquery_set_qtype()
397 return -1; in niquery_option_name_handler()
404 return -1; in niquery_option_ipv6_handler()
411 return -1; in niquery_option_ipv6_flag_handler()
419 return -1; in niquery_option_ipv4_handler()
426 return -1; in niquery_option_ipv4_flag_handler()
440 return -1; in niquery_set_subject_type()
447 #define OFFSET_OF(type,elem) ((size_t)&((type *)0)->elem)
456 return -1; in niquery_option_subject_addr_handler()
475 offset = -1; in niquery_option_subject_addr_handler()
486 return -1; in niquery_option_subject_addr_handler()
489 for (ai = ai0; ai; ai = ai->ai_next) { in niquery_option_subject_addr_handler()
493 memcpy(p, (__u8 *)ai->ai_addr + offset, ni_subject_len); in niquery_option_subject_addr_handler()
522 return -1; in niquery_option_subject_name_handler()
572 fqdn = dots ? 1 : -1; in niquery_option_subject_name_handler()
576 plus non-fqdn indicator. */ in niquery_option_subject_name_handler()
634 fprintf(stderr, "ping6 -N suboptions\n" in niquery_option_help_handler()
639 "\t\tipv6,ipv6-all,ipv6-compatible,ipv6-linklocal,ipv6-sitelocal,ipv6-global,\n" in niquery_option_help_handler()
640 "\t\tipv4,ipv4-all,\n" in niquery_option_help_handler()
642 "\t\tsubject-ipv6=addr,subject-ipv4=addr,subject-name=name,subject-fqdn=name,\n" in niquery_option_help_handler()
651 int ret = -1; in niquery_option_handler()
652 for (i = 0, p = niquery_options; p->name; i++, p++) { in niquery_option_handler()
653 if (strncmp(p->name, opt_arg, p->namelen)) in niquery_option_handler()
655 if (!p->has_arg) { in niquery_option_handler()
656 if (opt_arg[p->namelen] == '\0') { in niquery_option_handler()
657 ret = p->handler(i, NULL); in niquery_option_handler()
662 if (opt_arg[p->namelen] == '=') { in niquery_option_handler()
663 ret = p->handler(i, &opt_arg[p->namelen] + 1); in niquery_option_handler()
669 if (!p->name) in niquery_option_handler()
684 return -1; in hextoui()
699 char *target; in main() local
765 device = optarg + (p - addr) + 1; in main()
788 fprintf(stderr, "ping: wrong value for -M: do, dont, want are valid ones.\n"); in main()
793 printf("ping6 utility, iputils-%s\n", SNAPSHOT); in main()
797 fprintf(stderr, "ping: -N requires raw socket permissions\n"); in main()
812 argc -= optind; in main()
826 space = inet6_rth_space(IPV6_RTHDR_TYPE_0, argc - 1); in main()
828 space = inet6_srcrt_space(IPV6_SRCRT_TYPE_0, argc - 1); in main()
848 srcrt->cmsg_len = CMSG_LEN(space); in main()
849 srcrt->cmsg_level = IPPROTO_IPV6; in main()
850 srcrt->cmsg_type = IPV6_RTHDR; in main()
851 inet6_rth_init(CMSG_DATA(srcrt), space, IPV6_RTHDR_TYPE_0, argc - 1); in main()
859 target = *argv; in main()
866 gai = getaddrinfo(target, NULL, &hints, &ai); in main()
871 addr = &((struct sockaddr_in6 *)(ai->ai_addr))->sin6_addr; in main()
880 firsthop.sin6_scope_id = ((struct sockaddr_in6 *)(ai->ai_addr))->sin6_scope_id; in main()
893 argc--; in main()
913 target = *argv; in main()
917 target = ni_group; in main()
925 gai = getaddrinfo(target, NULL, &hints, &ai); in main()
931 memcpy(&whereto, ai->ai_addr, sizeof(whereto)); in main()
934 if (memchr(target, ':', strlen(target))) in main()
953 hostname = target; in main()
982 setsockopt(probe_fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof(ipi)) == -1 && in main()
984 setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1) == -1) { in main()
994 if (connect(probe_fd, (struct sockaddr*)&firsthop, sizeof(firsthop)) == -1) { in main()
999 if (getsockname(probe_fd, (struct sockaddr*)&source, &alen) == -1) { in main()
1015 for (ifa = ifa0; ifa; ifa = ifa->ifa_next) { in main()
1016 if (!ifa->ifa_addr || ifa->ifa_addr->sa_family != AF_INET6) in main()
1018 if (!strncmp(ifa->ifa_name, device, sizeof(device) - 1) && in main()
1019 IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr, in main()
1048 cmsg->cmsg_len = CMSG_LEN(sizeof(*ipi)); in main()
1049 cmsg->cmsg_level = SOL_IPV6; in main()
1050 cmsg->cmsg_type = IPV6_PKTINFO; in main()
1054 ipi->ipi6_ifindex = if_name2index(device); in main()
1073 if (setsockopt(icmp_sock, SOL_IPV6, IPV6_MTU_DISCOVER, &pmtudisc, sizeof(pmtudisc)) == -1) { in main()
1080 bind(icmp_sock, (struct sockaddr*)&source, sizeof(source)) == -1) { in main()
1102 /* Estimate memory eaten by single packet. It is rough estimate. in main()
1120 " - try to continue."); in main()
1154 &loop, sizeof(loop)) == -1) { in main()
1161 &ttl, sizeof(ttl)) == -1) { in main()
1166 &ttl, sizeof(ttl)) == -1) { in main()
1177 &on, sizeof(on)) == -1 && in main()
1179 &on, sizeof(on)) == -1 in main()
1182 &on, sizeof(on)) == -1 in main()
1193 &tclass, sizeof(tclass)) == -1) { in main()
1212 freq_len = CMSG_ALIGN(sizeof(*freq)) + srcrt->cmsg_len; in main()
1215 freq->flr_label = htonl(flowlabel & IPV6_FLOWINFO_FLOWLABEL); in main()
1216 freq->flr_action = IPV6_FL_A_GET; in main()
1217 freq->flr_flags = IPV6_FL_F_CREATE; in main()
1218 freq->flr_share = IPV6_FL_S_EXCL; in main()
1219 memcpy(&freq->flr_dst, &whereto.sin6_addr, 16); in main()
1222 memcpy(freq_buf + CMSG_ALIGN(sizeof(*freq)), srcrt, srcrt->cmsg_len); in main()
1225 freq, freq_len) == -1) { in main()
1229 flowlabel = freq->flr_label; in main()
1232 cmsglen = (char*)srcrt - (char*)cmsgbuf; in main()
1244 &on, sizeof(on)) == -1) { in main()
1277 struct sockaddr_in6 target; in receive_error_msg() local
1284 msg.msg_name = (void*)⌖ in receive_error_msg()
1285 msg.msg_namelen = sizeof(target); in receive_error_msg()
1298 if (cmsg->cmsg_level == SOL_IPV6) { in receive_error_msg()
1299 if (cmsg->cmsg_type == IPV6_RECVERR) in receive_error_msg()
1306 if (e->ee_origin == SO_EE_ORIGIN_LOCAL) { in receive_error_msg()
1312 else if (e->ee_errno != EMSGSIZE) in receive_error_msg()
1313 fprintf(stderr, "ping: local error: %s\n", strerror(e->ee_errno)); in receive_error_msg()
1315 fprintf(stderr, "ping: local error: Message too long, mtu=%u\n", e->ee_info); in receive_error_msg()
1317 } else if (e->ee_origin == SO_EE_ORIGIN_ICMP6) { in receive_error_msg()
1321 memcmp(&target.sin6_addr, &whereto.sin6_addr, 16) || in receive_error_msg()
1337 printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_seq)); in receive_error_msg()
1338 pr_icmph(e->ee_type, e->ee_code, e->ee_info); in receive_error_msg()
1346 return net_errors ? : -local_errors; in receive_error_msg()
1350 * pinger --
1355 * byte-order, to compute the round-trip time.
1363 icmph->icmp6_type = ICMP6_ECHO_REQUEST; in build_echo()
1364 icmph->icmp6_code = 0; in build_echo()
1365 icmph->icmp6_cksum = 0; in build_echo()
1366 icmph->icmp6_seq = htons(ntransmitted+1); in build_echo()
1367 icmph->icmp6_id = ident; in build_echo()
1385 nih->ni_cksum = 0; in build_niquery()
1387 nih->ni_type = ICMPV6_NI_QUERY; in build_niquery()
1391 niquery_fill_nonce(ntransmitted + 1, nih->ni_nonce); in build_niquery()
1392 nih->ni_code = ni_subject_type; in build_niquery()
1393 nih->ni_qtype = htons(ni_query); in build_niquery()
1394 nih->ni_flags = ni_flag; in build_niquery()
1441 printf(" icmp_seq=%u", ntohs(icmph->icmp6_seq)); in pr_echo_reply()
1461 len -= sizeof(struct ni_hdr) + 4; in pr_niquery_reply_name()
1507 switch (ntohs(nih->ni_qtype)) { in pr_niquery_reply_addr()
1511 truncated = nih->ni_flags & NI_IPV6ADDR_F_TRUNCATE; in pr_niquery_reply_addr()
1516 truncated = nih->ni_flags & NI_IPV4ADDR_F_TRUNCATE; in pr_niquery_reply_addr()
1553 switch (nih->ni_code) { in pr_niquery_reply()
1555 switch (ntohs(nih->ni_qtype)) { in pr_niquery_reply()
1564 printf(" unknown qtype(0x%02x)", ntohs(nih->ni_qtype)); in pr_niquery_reply()
1574 printf(" unknown code(%02x)", ntohs(nih->ni_code)); in pr_niquery_reply()
1576 printf("; seq=%u;", ntohsp((__u16*)nih->ni_nonce)); in pr_niquery_reply()
1580 * parse_reply --
1590 __u8 *buf = msg->msg_iov->iov_base; in parse_reply()
1593 int hops = -1; in parse_reply()
1596 if (c->cmsg_level != SOL_IPV6) in parse_reply()
1598 switch(c->cmsg_type) { in parse_reply()
1603 if (c->cmsg_len < CMSG_LEN(sizeof(int))) in parse_reply()
1619 if (icmph->icmp6_type == ICMP6_ECHO_REPLY) { in parse_reply()
1620 if (!is_ours(icmph->icmp6_id)) in parse_reply()
1623 ntohs(icmph->icmp6_seq), in parse_reply()
1624 hops, 0, tv, pr_addr(&from->sin6_addr), in parse_reply()
1627 } else if (icmph->icmp6_type == ICMPV6_NI_REPLY) { in parse_reply()
1629 int seq = niquery_check_nonce(nih->ni_nonce); in parse_reply()
1634 hops, 0, tv, pr_addr(&from->sin6_addr), in parse_reply()
1646 * using RECVRERR. :-) in parse_reply()
1652 if (memcmp(&iph1->ip6_dst, &whereto.sin6_addr, 16)) in parse_reply()
1655 nexthdr = iph1->ip6_nxt; in parse_reply()
1662 if (icmph1->icmp6_type != ICMP6_ECHO_REQUEST || in parse_reply()
1663 !is_ours(icmph1->icmp6_id)) in parse_reply()
1665 acknowledge(ntohs(icmph1->icmp6_seq)); in parse_reply()
1674 printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_seq)); in parse_reply()
1680 printf("From %s: ", pr_addr(&from->sin6_addr)); in parse_reply()
1682 pr_icmph(icmph->icmp6_type, icmph->icmp6_code, ntohl(icmph->icmp6_mtu)); in parse_reply()
1804 * pr_addr --
1826 || idna_to_unicode_lzlz(hp->h_name, &s, 0) != IDNA_SUCCESS in pr_addr()
1831 return hp ? (s ? s : hp->h_name) : pr_addr_n(addr); in pr_addr()
1847 " [-" in usage()
1850 " [-c count]" in usage()
1851 " [-i interval]" in usage()
1852 " [-I interface]" in usage()
1854 " [-l preload]" in usage()
1855 " [-m mark]" in usage()
1856 " [-M pmtudisc_option]" in usage()
1858 " [-N nodeinfo_option]" in usage()
1859 " [-p pattern]" in usage()
1860 " [-Q tclass]" in usage()
1861 " [-s packetsize]" in usage()
1863 " [-S sndbuf]" in usage()
1864 " [-t ttl]" in usage()
1865 " [-T timestamp_option]" in usage()
1866 " [-w deadline]" in usage()
1868 " [-W timeout]" in usage()