Lines Matching refs:dst

404  * route; dst typically comes from rt_key(rt) but may be coming from
408 rt_primary_default(struct rtentry *rt, struct sockaddr *dst)
410 return (SA_DEFAULT(dst) && !(rt->rt_flags & RTF_IFSCOPE));
502 * Copy a sockaddr_{in,in6} src to a dst storage and set scope ID into dst.
511 sa_copy(struct sockaddr *src, struct sockaddr_storage *dst,
519 bzero(dst, sizeof (*dst));
522 bcopy(src, dst, sizeof (struct sockaddr_in));
524 sin_set_ifscope(SA(dst), ifscope);
526 bcopy(src, dst, sizeof (struct sockaddr_in6));
528 IN6_IS_SCOPE_EMBED(&SIN6(dst)->sin6_addr)) {
536 eifscope = sin6_get_embedded_ifscope(SA(dst));
539 sin6_set_ifscope(SA(dst), ifscope);
545 sin6_set_embedded_ifscope(SA(dst), ifscope);
547 sin6_set_ifscope(SA(dst), ifscope);
552 *pifscope = (af == AF_INET) ? sin_get_ifscope(SA(dst)) :
553 sin6_get_ifscope(SA(dst));
556 return (SA(dst));
560 * Copy a mask from src to a dst storage and set scope ID into dst.
563 ma_copy(int af, struct sockaddr *src, struct sockaddr_storage *dst,
568 bzero(dst, sizeof (*dst));
569 rt_maskedcopy(src, SA(dst), src);
581 SINIFSCOPE(dst)->sin_scope_id = ifscope;
582 SINIFSCOPE(dst)->sin_len =
584 sizeof (SINIFSCOPE(dst)->sin_scope_id);
586 SIN6IFSCOPE(dst)->sin6_scope_id = ifscope;
587 SIN6IFSCOPE(dst)->sin6_len =
589 sizeof (SIN6IFSCOPE(dst)->sin6_scope_id);
592 return (SA(dst));
843 rtalloc1_locked(struct sockaddr *dst, int report, uint32_t ignflags)
845 return (rtalloc1_common_locked(dst, report, ignflags, IFSCOPE_NONE));
849 rtalloc1_scoped_locked(struct sockaddr *dst, int report, uint32_t ignflags,
852 return (rtalloc1_common_locked(dst, report, ignflags, ifscope));
860 rtalloc1_common_locked(struct sockaddr *dst, int report, uint32_t ignflags,
863 struct radix_node_head *rnh = rt_tables[dst->sa_family];
876 rt = rt_lookup(FALSE, dst, NULL, rnh, ifscope);
890 err = rtrequest_locked(RTM_RESOLVE, dst, NULL, NULL, 0, &newrt);
933 info.rti_info[RTAX_DST] = dst;
941 rtalloc1(struct sockaddr *dst, int report, uint32_t ignflags)
946 entry = rtalloc1_locked(dst, report, ignflags);
952 rtalloc1_scoped(struct sockaddr *dst, int report, uint32_t ignflags,
958 entry = rtalloc1_scoped_locked(dst, report, ignflags, ifscope);
1229 rtredirect(struct ifnet *ifp, struct sockaddr *dst, struct sockaddr *gateway,
1267 rt = rtalloc1_scoped_locked(dst, 0, RTF_CLONING|RTF_PRCLONING, ifscope);
1272 * If the redirect isn't from our current router for this dst,
1328 error = rtrequest_scoped_locked(RTM_ADD, dst,
1368 info.rti_info[RTAX_DST] = dst;
1394 const struct sockaddr *dst,
1400 ifa = ifa_ifwithroute_locked(flags, dst, gateway);
1407 ifa_ifwithroute_locked(int flags, const struct sockaddr *dst,
1410 return (ifa_ifwithroute_common_locked((flags & ~RTF_IFSCOPE), dst,
1415 ifa_ifwithroute_scoped_locked(int flags, const struct sockaddr *dst,
1423 return (ifa_ifwithroute_common_locked(flags, dst, gateway, ifscope));
1427 ifa_ifwithroute_common_locked(int flags, const struct sockaddr *dst,
1442 if (dst != NULL &&
1443 ((dst->sa_family == AF_INET && ip_doscopedroute) ||
1444 (dst->sa_family == AF_INET6 && ip6_doscopedroute)))
1446 if (dst != NULL && dst->sa_family == AF_INET && ip_doscopedroute)
1448 dst = sa_copy(SA((uintptr_t)dst), &dst_ss, NULL);
1468 ifa = ifa_ifwithdstaddr(dst);
1484 rt = rtalloc1_scoped_locked((struct sockaddr *)(size_t)dst,
1504 if (ifa != NULL && ifa->ifa_addr->sa_family != dst->sa_family) {
1507 newifa = ifaof_ifpforaddr(dst, ifa->ifa_ifp);
1560 rtrequest_locked(int req, struct sockaddr *dst, struct sockaddr *gateway,
1563 return (rtrequest_common_locked(req, dst, gateway, netmask,
1568 rtrequest_scoped_locked(int req, struct sockaddr *dst,
1577 return (rtrequest_common_locked(req, dst, gateway, netmask,
1606 struct sockaddr *ndst, *dst = dst0;
1609 int af = dst->sa_family;
1647 /* Transform dst into the internal routing table form */
1648 dst = sa_copy(dst, &ss, &ifscope);
1679 if ((rn = rnh->rnh_deladdr(dst, netmask, rnh)) == NULL)
1718 rnh->rnh_walktree_from(rnh, dst, rt_mask(rt),
1827 IN_LINKLOCAL(ntohl(SIN(dst)->sin_addr.s_addr))) ||
1844 * Transform dst into the internal routing table form,
1847 dst = sa_copy(dst, &ss, (ifscope == IFSCOPE_NONE) ?
1883 if ((error = rt_setgate(rt, dst, gateway)) != 0) {
1901 rt_maskedcopy(dst, ndst, netmask);
1903 Bcopy(dst, ndst, dst->sa_len);
1930 rt2 = rtalloc1_locked(dst, 0,
2066 rtrequest(int req, struct sockaddr *dst, struct sockaddr *gateway,
2072 error = rtrequest_locked(req, dst, gateway, netmask, flags, ret_nrt);
2078 rtrequest_scoped(int req, struct sockaddr *dst, struct sockaddr *gateway,
2085 error = rtrequest_scoped_locked(req, dst, gateway, netmask, flags,
2228 rt_setgate(struct rtentry *rt, struct sockaddr *dst, struct sockaddr *gate)
2230 int dlen = SA_SIZE(dst->sa_len), glen = SA_SIZE(gate->sa_len);
2231 struct radix_node_head *rnh = rt_tables[dst->sa_family];
2248 if ((dst->sa_len == gate->sa_len) &&
2249 (dst->sa_family == AF_INET || dst->sa_family == AF_INET6)) {
2252 (void) sa_copy(dst, &dst_ss, NULL);
2257 loop = (dst->sa_len == gate->sa_len &&
2258 equal(dst, gate));
2308 if (dst->sa_family == AF_INET)
2309 ifscope = sin_get_ifscope(dst);
2310 else if (dst->sa_family == AF_INET6)
2311 ifscope = sin6_get_ifscope(dst);
2319 * check for cloning loop avoidance (dst == gate).
2372 rt_set_gwroute(rt, dst, gwrt);
2380 if (rt_primary_default(rt, dst) && rt->rt_ifp != NULL) {
2381 set_primary_ifscope(dst->sa_family,
2393 if ((dst->sa_family == AF_INET) &&
2407 * Prepare to store the gateway in rt_gateway. Both dst and gateway
2411 * the 'dst' address and point rt_gateway to the right place.
2420 rt_set_gwroute(rt, dst, NULL);
2427 * Copy from 'dst' and not rt_key(rt) because we can get
2432 Bcopy(dst, new, dst->sa_len);
2482 rt_set_gwroute(struct rtentry *rt, struct sockaddr *dst, struct rtentry *gwrt)
2520 gwrt_isrouter = (SA_DEFAULT(dst) && !RT_HOST(rt));
2536 rt_maskedcopy(struct sockaddr *src, struct sockaddr *dst,
2540 u_char *cp2 = (u_char *)dst;
2560 node_lookup(struct sockaddr *dst, struct sockaddr *netmask,
2566 int af = dst->sa_family;
2577 * Transform dst into the internal routing table form,
2580 dst = sa_copy(dst, &ss, (ifscope == IFSCOPE_NONE) ? NULL : &ifscope);
2589 rn = rnh->rnh_lookup_args(dst, netmask, rnh, f, w);
2635 rt_lookup(boolean_t lookup_only, struct sockaddr *dst, struct sockaddr *netmask,
2640 int af = dst->sa_family;
2658 rn = rnh->rnh_matchaddr(dst, rnh);
2680 /* Transform dst/netmask into the internal routing table form */
2681 dst = sa_copy(dst, &dst_ss, &ifscope);
2694 rn0 = rn = node_lookup(dst, netmask, IFSCOPE_NONE);
2753 rn = node_lookup(dst, netmask, ifscope);
2838 struct sockaddr *dst;
2848 * ifa_{dst}addr (here and down below) without locking.
2850 dst = flags & RTF_HOST ? ifa->ifa_dstaddr : ifa->ifa_addr;
2868 rt_maskedcopy(dst, deldst, ifa->ifa_netmask);
2869 dst = deldst;
2877 rt = rtalloc1_locked(dst, 0, 0);
2924 error = rtrequest_locked(cmd, dst, ifa->ifa_addr, ifa->ifa_netmask,
3272 struct route *dst,
3276 /* Copy everything (rt, dst, flags) from ifnet */
3277 bcopy(src, dst, length);
3280 if (dst->ro_rt != NULL)
3281 RT_ADDREF(dst->ro_rt);
3287 struct route *dst,
3291 if (dst->ro_rt == NULL) {
3293 * Copy everything (rt, dst, flags) from ip_forward();
3297 bcopy(src, dst, length);
3304 if (dst->ro_rt == src->ro_rt) {
3305 dst->ro_flags = src->ro_flags;
3308 rtfree(dst->ro_rt);
3309 bcopy(src, dst, length);