aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if_llatbl.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net/if_llatbl.c')
-rw-r--r--sys/net/if_llatbl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c
index b66d6e154b27..fb94f735062a 100644
--- a/sys/net/if_llatbl.c
+++ b/sys/net/if_llatbl.c
@@ -263,6 +263,15 @@ lla_rt_output(struct rt_msghdr *rtm, struct rt_addrinfo *info)
__func__, dl->sdl_index);
return EINVAL;
}
+ if (ifp->if_flags & IFF_LOOPBACK) {
+ struct ifaddr *ia;
+ ia = ifa_ifwithaddr(dst);
+ if (ia != NULL) {
+ ifp = ia->ifa_ifp;
+ ifa_free(ia);
+ } else
+ return EINVAL;
+ }
switch (rtm->rtm_type) {
case RTM_ADD: