Lines Matching refs:pr

759 calc_packetlen(int plen_input, struct pr_set *pr)  in calc_packetlen()  argument
785 optlen = 8 + gw_count * pr->addr_len; in calc_packetlen()
791 minpacket = pr->ip_hdr_len + sizeof (struct outdata) + optlen; in calc_packetlen()
793 minpacket += pr->icmp_minlen; /* minimum ICMP header size */ in calc_packetlen()
801 prog, pr->name, minpacket, IP_MAXPACKET); in calc_packetlen()
816 set_src_addr(struct pr_set *pr, struct ifaddrlist **alp) in set_src_addr() argument
823 struct sockaddr_in *sin_from = (struct sockaddr_in *)pr->from; in set_src_addr()
825 struct sockaddr_in6 *sin6_from = (struct sockaddr_in6 *)pr->from; in set_src_addr()
840 num_ifs = ifaddrlist(&al, pr->family, ifaddrflags, errbuf); in set_src_addr()
854 prog, pr->name); in set_src_addr()
864 " interface\n", prog, device, if_index, pr->name); in set_src_addr()
872 get_hostinfo(source, pr->family, &aip); in set_src_addr()
876 prog, source, pr->name); in set_src_addr()
884 if (pr->family == AF_INET) in set_src_addr()
896 tmp2_al = find_ifaddr(al, num_ifs, ap, pr->family); in set_src_addr()
898 (void) inet_ntop(pr->family, ap, abuf, sizeof (abuf)); in set_src_addr()
900 prog, abuf, pr->name); in set_src_addr()
918 if (pr->family == AF_INET) in set_src_addr()
919 set_sin(pr->from, &(tmp1_al->addr), pr->family); in set_src_addr()
925 set_sin(pr->from, ap, pr->family); in set_src_addr()
928 (void) inet_ntop(pr->family, pr->from_sin_addr, in set_src_addr()
940 if (pr->family == AF_INET) { in set_src_addr()
954 set_sin(pr->from, ap, pr->family); in set_src_addr()
969 if (pr->family == AF_INET && !raw_req) { in set_src_addr()
972 if (bind(sndsock4, (struct sockaddr *)pr->from, in set_src_addr()
978 } else if (pr->family == AF_INET6) { in set_src_addr()
981 if (bind(sndsock6, (struct sockaddr *)pr->from, in set_src_addr()
1161 setup_protocol(struct pr_set *pr, int family) in setup_protocol() argument
1167 pr->family = family; in setup_protocol()
1174 (void) strcpy(pr->name, "IPv4"); in setup_protocol()
1175 (void) strcpy(pr->icmp, "icmp"); in setup_protocol()
1176 pr->icmp_minlen = ICMP_MINLEN; in setup_protocol()
1177 pr->addr_len = sizeof (struct in_addr); in setup_protocol()
1178 pr->ip_hdr_len = sizeof (struct ip); in setup_protocol()
1179 pr->sock_size = sizeof (struct sockaddr_in); in setup_protocol()
1180 pr->to = (struct sockaddr *)&whereto; in setup_protocol()
1181 pr->from = (struct sockaddr *)&wherefrom; in setup_protocol()
1182 pr->from_sin_addr = (void *)&wherefrom.sin_addr; in setup_protocol()
1183 pr->gwIPlist = gwIPlist; in setup_protocol()
1184 pr->set_buffers_fn = set_buffers; in setup_protocol()
1185 pr->check_reply_fn = check_reply; in setup_protocol()
1186 pr->print_icmp_other_fn = print_icmp_other; in setup_protocol()
1187 pr->print_addr_fn = print_addr; in setup_protocol()
1188 pr->packlen = calc_packetlen(packlen_input, pr); in setup_protocol()
1190 (void) strcpy(pr->name, "IPv6"); in setup_protocol()
1191 (void) strcpy(pr->icmp, "ipv6-icmp"); in setup_protocol()
1192 pr->icmp_minlen = ICMP6_MINLEN; in setup_protocol()
1193 pr->addr_len = sizeof (struct in6_addr); in setup_protocol()
1194 pr->ip_hdr_len = sizeof (struct ip6_hdr); in setup_protocol()
1195 pr->sock_size = sizeof (struct sockaddr_in6); in setup_protocol()
1196 pr->to = (struct sockaddr *)&whereto6; in setup_protocol()
1197 pr->from = (struct sockaddr *)&wherefrom6; in setup_protocol()
1198 pr->from_sin_addr = (void *)&wherefrom6.sin6_addr; in setup_protocol()
1199 pr->gwIPlist = gwIP6list; in setup_protocol()
1200 pr->set_buffers_fn = set_buffers6; in setup_protocol()
1201 pr->check_reply_fn = check_reply6; in setup_protocol()
1202 pr->print_icmp_other_fn = print_icmp_other6; in setup_protocol()
1203 pr->print_addr_fn = print_addr6; in setup_protocol()
1204 pr->packlen = calc_packetlen(packlen_input, pr); in setup_protocol()
1206 if (pr->packlen == 0) in setup_protocol()
1214 setup_socket(struct pr_set *pr, int packet_len) in setup_socket() argument
1224 if ((pe = getprotobyname(pr->icmp)) == NULL) { in setup_socket()
1225 Fprintf(stderr, "%s: unknown protocol %s\n", prog, pr->icmp); in setup_socket()
1232 if ((rsock = socket(pr->family, SOCK_RAW, pe->p_proto)) < 0) { in setup_socket()
1254 if (pr->family == AF_INET6) { in setup_socket()
1290 if (pr->family == AF_INET && raw_req) { in setup_socket()
1295 if (pr->family == AF_INET) in setup_socket()
1303 ssock = socket(pr->family, type, proto); in setup_socket()
1325 if (pr->family == AF_INET && raw_req) { in setup_socket()
1368 if (pr->family == AF_INET) { in setup_socket()
1384 if (pr->family == AF_INET) { in setup_socket()
1471 struct pr_set *pr) in device_name() argument
1479 if (memcmp(&tmp_al->addr, ip_addr, pr->addr_len) == 0) { in device_name()
1491 traceroute(union any_in_addr *ip_addr, struct msghdr *msg6, struct pr_set *pr, in traceroute() argument
1514 msg6->msg_name = pr->to; in traceroute()
1516 sndsock = (pr->family == AF_INET) ? sndsock4 : sndsock6; in traceroute()
1517 rcvsock = (pr->family == AF_INET) ? rcvsock4 : rcvsock6; in traceroute()
1531 (void) select_src_addr(pr->gwIPlist, &src_addr, in traceroute()
1532 pr->family); in traceroute()
1534 (void) select_src_addr(ip_addr, &src_addr, pr->family); in traceroute()
1536 set_sin(pr->from, &src_addr, pr->family); in traceroute()
1547 dev_name = device_name(al, num_ifs, &src_addr, pr); in traceroute()
1551 (void) inet_ntop(pr->family, pr->from_sin_addr, abuf, in traceroute()
1559 if (pr->family == AF_INET) { in traceroute()
1560 outip4->ip_src = *(struct in_addr *)pr->from_sin_addr; in traceroute()
1567 if (pr->family == AF_INET6 && in traceroute()
1572 inet_ntop(pr->family, ip_addr, abuf, sizeof (abuf))); in traceroute()
1578 pr->packlen); in traceroute()
1586 if (pr->family == AF_INET && gw_count > 0) in traceroute()
1587 set_IPv4opt_sourcerouting(sndsock, ip_addr, pr->gwIPlist); in traceroute()
1654 if (pr->family == AF_INET) { in traceroute()
1655 send_probe(sndsock, pr->to, outip4, seq, ttl, in traceroute()
1656 &t1, pr->packlen); in traceroute()
1659 &t1, pr->packlen); in traceroute()
1663 in_msg.msg_name = pr->from; in traceroute()
1664 in_msg.msg_namelen = pr->sock_size; in traceroute()
1679 reply = (*pr->check_reply_fn) (&in_msg, cc, seq, in traceroute()
1695 if (memcmp(pr->from_sin_addr, &lastaddr, in traceroute()
1696 pr->addr_len) != 0) { in traceroute()
1697 (*pr->print_addr_fn) ((uchar_t *)packet, in traceroute()
1698 cc, pr->from); in traceroute()
1701 pr->from_sin_addr, pr->addr_len); in traceroute()
1712 if (pr->family == AF_INET6) { in traceroute()
1728 if (((pr->family == AF_INET) && in traceroute()
1730 ((pr->family == AF_INET6) && in traceroute()
1736 if (pr->family == AF_INET) { in traceroute()
1746 if ((*pr->print_icmp_other_fn) in traceroute()
1753 if (pr->family == AF_INET && in traceroute()