diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 09:54:52 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 13:18:55 +0100 |
commit | bcd6e1b9d17e15f10b3a3ef88d2089b5805eb49c (patch) | |
tree | 7cffc9093a8babb0a9149ad672d0b590e2acde0f /freebsd/sys/netinet6 | |
parent | sys/netinet6/in6.c: Restore FreeBSD version (diff) | |
download | rtems-libbsd-bcd6e1b9d17e15f10b3a3ef88d2089b5805eb49c.tar.bz2 |
sys/netinet6/ip6_input.c: Restore FreeBSD version
Diffstat (limited to 'freebsd/sys/netinet6')
-rw-r--r-- | freebsd/sys/netinet6/ip6_input.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/freebsd/sys/netinet6/ip6_input.c b/freebsd/sys/netinet6/ip6_input.c index 425ed2f0..568ec167 100644 --- a/freebsd/sys/netinet6/ip6_input.c +++ b/freebsd/sys/netinet6/ip6_input.c @@ -736,19 +736,23 @@ passin: * as our interface address (e.g. multicast addresses, addresses * within FAITH prefixes and such). */ - if (deliverifp && !ip6_getdstifaddr(m)) { + if (deliverifp) { struct in6_ifaddr *ia6; - ia6 = in6_ifawithifp(deliverifp, &ip6->ip6_dst); - if (ia6) { - if (!ip6_setdstifaddr(m, ia6)) { - /* - * XXX maybe we should drop the packet here, - * as we could not provide enough information - * to the upper layers. - */ - } + if ((ia6 = ip6_getdstifaddr(m)) != NULL) { ifa_free(&ia6->ia_ifa); + } else { + ia6 = in6_ifawithifp(deliverifp, &ip6->ip6_dst); + if (ia6) { + if (!ip6_setdstifaddr(m, ia6)) { + /* + * XXX maybe we should drop the packet here, + * as we could not provide enough information + * to the upper layers. + */ + } + ifa_free(&ia6->ia_ifa); + } } } |