pf.c (ab238f14544b2415561c4fed674ee360aa8b5860) pf.c (c8ee75f2315e8267ad814dc5b4645ef205f0e0e1)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2001 Daniel Hartmeier
5 * Copyright (c) 2002 - 2008 Henning Brauer
6 * Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
7 * All rights reserved.
8 *

--- 1579 unchanged lines hidden (view full) ---

1588}
1589
1590static bool
1591pf_isforlocal(struct mbuf *m, int af)
1592{
1593 switch (af) {
1594#ifdef INET
1595 case AF_INET: {
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2001 Daniel Hartmeier
5 * Copyright (c) 2002 - 2008 Henning Brauer
6 * Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
7 * All rights reserved.
8 *

--- 1579 unchanged lines hidden (view full) ---

1588}
1589
1590static bool
1591pf_isforlocal(struct mbuf *m, int af)
1592{
1593 switch (af) {
1594#ifdef INET
1595 case AF_INET: {
1596 struct rm_priotracker in_ifa_tracker;
1597 struct ip *ip;
1598 struct in_ifaddr *ia = NULL;
1596 struct ip *ip = mtod(m, struct ip *);
1599
1597
1600 ip = mtod(m, struct ip *);
1601 IN_IFADDR_RLOCK(&in_ifa_tracker);
1602 LIST_FOREACH(ia, INADDR_HASH(ip->ip_dst.s_addr), ia_hash) {
1603 if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr) {
1604 IN_IFADDR_RUNLOCK(&in_ifa_tracker);
1605 return (true);
1606 }
1607 }
1608 IN_IFADDR_RUNLOCK(&in_ifa_tracker);
1609 break;
1598 return (in_localip(ip->ip_dst));
1610 }
1611#endif
1612#ifdef INET6
1613 case AF_INET6: {
1614 struct ip6_hdr *ip6;
1615 struct in6_ifaddr *ia;
1616 ip6 = mtod(m, struct ip6_hdr *);
1617 ia = in6ifa_ifwithaddr(&ip6->ip6_dst, 0 /* XXX */, false);

--- 5761 unchanged lines hidden ---
1599 }
1600#endif
1601#ifdef INET6
1602 case AF_INET6: {
1603 struct ip6_hdr *ip6;
1604 struct in6_ifaddr *ia;
1605 ip6 = mtod(m, struct ip6_hdr *);
1606 ia = in6ifa_ifwithaddr(&ip6->ip6_dst, 0 /* XXX */, false);

--- 5761 unchanged lines hidden ---