Lines Matching refs:pr
783 calc_packetlen(int plen_input, struct pr_set *pr) in calc_packetlen() argument
809 optlen = 8 + gw_count * pr->addr_len; in calc_packetlen()
815 minpacket = pr->ip_hdr_len + sizeof (struct outdata) + optlen; in calc_packetlen()
817 minpacket += pr->icmp_minlen; /* minimum ICMP header size */ in calc_packetlen()
825 prog, pr->name, minpacket, IP_MAXPACKET); in calc_packetlen()
840 set_src_addr(struct pr_set *pr, struct ifaddrlist **alp) in set_src_addr() argument
847 struct sockaddr_in *sin_from = (struct sockaddr_in *)pr->from; in set_src_addr()
849 struct sockaddr_in6 *sin6_from = (struct sockaddr_in6 *)pr->from; in set_src_addr()
864 num_ifs = ifaddrlist(&al, pr->family, ifaddrflags, errbuf); in set_src_addr()
878 prog, pr->name); in set_src_addr()
888 " interface\n", prog, device, if_index, pr->name); in set_src_addr()
896 get_hostinfo(source, pr->family, &aip); in set_src_addr()
900 prog, source, pr->name); in set_src_addr()
908 if (pr->family == AF_INET) in set_src_addr()
920 tmp2_al = find_ifaddr(al, num_ifs, ap, pr->family); in set_src_addr()
922 (void) inet_ntop(pr->family, ap, abuf, sizeof (abuf)); in set_src_addr()
924 prog, abuf, pr->name); in set_src_addr()
942 if (pr->family == AF_INET) in set_src_addr()
943 set_sin(pr->from, &(tmp1_al->addr), pr->family); in set_src_addr()
949 set_sin(pr->from, ap, pr->family); in set_src_addr()
952 (void) inet_ntop(pr->family, pr->from_sin_addr, in set_src_addr()
964 if (pr->family == AF_INET) { in set_src_addr()
978 set_sin(pr->from, ap, pr->family); in set_src_addr()
993 if (pr->family == AF_INET && !raw_req) { in set_src_addr()
996 if (bind(sndsock4, (struct sockaddr *)pr->from, in set_src_addr()
1002 } else if (pr->family == AF_INET6) { in set_src_addr()
1005 if (bind(sndsock6, (struct sockaddr *)pr->from, in set_src_addr()
1185 setup_protocol(struct pr_set *pr, int family) in setup_protocol() argument
1191 pr->family = family; in setup_protocol()
1198 (void) strcpy(pr->name, "IPv4"); in setup_protocol()
1199 (void) strcpy(pr->icmp, "icmp"); in setup_protocol()
1200 pr->icmp_minlen = ICMP_MINLEN; in setup_protocol()
1201 pr->addr_len = sizeof (struct in_addr); in setup_protocol()
1202 pr->ip_hdr_len = sizeof (struct ip); in setup_protocol()
1203 pr->sock_size = sizeof (struct sockaddr_in); in setup_protocol()
1204 pr->to = (struct sockaddr *)&whereto; in setup_protocol()
1205 pr->from = (struct sockaddr *)&wherefrom; in setup_protocol()
1206 pr->from_sin_addr = (void *)&wherefrom.sin_addr; in setup_protocol()
1207 pr->gwIPlist = gwIPlist; in setup_protocol()
1208 pr->set_buffers_fn = set_buffers; in setup_protocol()
1209 pr->check_reply_fn = check_reply; in setup_protocol()
1210 pr->print_icmp_other_fn = print_icmp_other; in setup_protocol()
1211 pr->print_addr_fn = print_addr; in setup_protocol()
1212 pr->packlen = calc_packetlen(packlen_input, pr); in setup_protocol()
1214 (void) strcpy(pr->name, "IPv6"); in setup_protocol()
1215 (void) strcpy(pr->icmp, "ipv6-icmp"); in setup_protocol()
1216 pr->icmp_minlen = ICMP6_MINLEN; in setup_protocol()
1217 pr->addr_len = sizeof (struct in6_addr); in setup_protocol()
1218 pr->ip_hdr_len = sizeof (struct ip6_hdr); in setup_protocol()
1219 pr->sock_size = sizeof (struct sockaddr_in6); in setup_protocol()
1220 pr->to = (struct sockaddr *)&whereto6; in setup_protocol()
1221 pr->from = (struct sockaddr *)&wherefrom6; in setup_protocol()
1222 pr->from_sin_addr = (void *)&wherefrom6.sin6_addr; in setup_protocol()
1223 pr->gwIPlist = gwIP6list; in setup_protocol()
1224 pr->set_buffers_fn = set_buffers6; in setup_protocol()
1225 pr->check_reply_fn = check_reply6; in setup_protocol()
1226 pr->print_icmp_other_fn = print_icmp_other6; in setup_protocol()
1227 pr->print_addr_fn = print_addr6; in setup_protocol()
1228 pr->packlen = calc_packetlen(packlen_input, pr); in setup_protocol()
1230 if (pr->packlen == 0) in setup_protocol()
1238 setup_socket(struct pr_set *pr, int packet_len) in setup_socket() argument
1248 if ((pe = getprotobyname(pr->icmp)) == NULL) { in setup_socket()
1249 Fprintf(stderr, "%s: unknown protocol %s\n", prog, pr->icmp); in setup_socket()
1256 if ((rsock = socket(pr->family, SOCK_RAW, pe->p_proto)) < 0) { in setup_socket()
1278 if (pr->family == AF_INET6) { in setup_socket()
1314 if (pr->family == AF_INET && raw_req) { in setup_socket()
1319 if (pr->family == AF_INET) in setup_socket()
1327 ssock = socket(pr->family, type, proto); in setup_socket()
1349 if (pr->family == AF_INET && raw_req) { in setup_socket()
1392 if (pr->family == AF_INET) { in setup_socket()
1408 if (pr->family == AF_INET) { in setup_socket()
1495 struct pr_set *pr) in device_name() argument
1503 if (memcmp(&tmp_al->addr, ip_addr, pr->addr_len) == 0) { in device_name()
1515 traceroute(union any_in_addr *ip_addr, struct msghdr *msg6, struct pr_set *pr, in traceroute() argument
1538 msg6->msg_name = pr->to; in traceroute()
1540 sndsock = (pr->family == AF_INET) ? sndsock4 : sndsock6; in traceroute()
1541 rcvsock = (pr->family == AF_INET) ? rcvsock4 : rcvsock6; in traceroute()
1555 (void) select_src_addr(pr->gwIPlist, &src_addr, in traceroute()
1556 pr->family); in traceroute()
1558 (void) select_src_addr(ip_addr, &src_addr, pr->family); in traceroute()
1560 set_sin(pr->from, &src_addr, pr->family); in traceroute()
1571 dev_name = device_name(al, num_ifs, &src_addr, pr); in traceroute()
1575 (void) inet_ntop(pr->family, pr->from_sin_addr, abuf, in traceroute()
1583 if (pr->family == AF_INET) { in traceroute()
1584 outip4->ip_src = *(struct in_addr *)pr->from_sin_addr; in traceroute()
1591 if (pr->family == AF_INET6 && in traceroute()
1596 inet_ntop(pr->family, ip_addr, abuf, sizeof (abuf))); in traceroute()
1602 pr->packlen); in traceroute()
1610 if (pr->family == AF_INET && gw_count > 0) in traceroute()
1611 set_IPv4opt_sourcerouting(sndsock, ip_addr, pr->gwIPlist); in traceroute()
1678 if (pr->family == AF_INET) { in traceroute()
1679 send_probe(sndsock, pr->to, outip4, seq, ttl, in traceroute()
1680 &t1, pr->packlen); in traceroute()
1683 &t1, pr->packlen); in traceroute()
1687 in_msg.msg_name = pr->from; in traceroute()
1688 in_msg.msg_namelen = pr->sock_size; in traceroute()
1703 reply = (*pr->check_reply_fn) (&in_msg, cc, seq, in traceroute()
1719 if (memcmp(pr->from_sin_addr, &lastaddr, in traceroute()
1720 pr->addr_len) != 0) { in traceroute()
1721 (*pr->print_addr_fn) ((uchar_t *)packet, in traceroute()
1722 cc, pr->from); in traceroute()
1725 pr->from_sin_addr, pr->addr_len); in traceroute()
1736 if (pr->family == AF_INET6) { in traceroute()
1752 if (((pr->family == AF_INET) && in traceroute()
1754 ((pr->family == AF_INET6) && in traceroute()
1760 if (pr->family == AF_INET) { in traceroute()
1770 if ((*pr->print_icmp_other_fn) in traceroute()
1777 if (pr->family == AF_INET && in traceroute()