+ icmpgw.sin_addr = ip->ip_src;
+ icmpdst.sin_addr = icp->icmp_gwaddr;
+#ifdef ICMPPRINTFS
+ if (icmpprintfs)
+ printf("redirect dst %x to %x\n", icp->icmp_ip.ip_dst,
+ icp->icmp_gwaddr);
+#endif
+ if (code == ICMP_REDIRECT_NET || code == ICMP_REDIRECT_TOSNET) {
+ icmpsrc.sin_addr =
+ in_makeaddr(in_netof(icp->icmp_ip.ip_dst), INADDR_ANY);
+ rtredirect((struct sockaddr *)&icmpsrc,
+ (struct sockaddr *)&icmpdst, RTF_GATEWAY,
+ (struct sockaddr *)&icmpgw);
+ icmpsrc.sin_addr = icp->icmp_ip.ip_dst;
+ pfctlinput(PRC_REDIRECT_NET,
+ (struct sockaddr *)&icmpsrc);
+ } else {