- if (ifpaddr &&
- (ifa = ifa_ifwithnet(ifpaddr)) &&
- (ifp = ifa->ifa_ifp) &&
- (ifa = ifaof_ifpforaddr(gate, ifp))) {
- /* We got it */
- } else {
- ifa = 0; ifp = 0;
- }
- if (gate)
- Bcopy(gate, rt->rt_gateway, len);
- rt_setmetrics(rtm->rtm_inits,
- &rtm->rtm_rmx, &rt->rt_rmx);
- if (ifa == 0)
- ifa = ifa_ifwithroute(rt->rt_flags, rt_key(rt),
- gate);
+ if (ifpaddr && (ifa = ifa_ifwithnet(ifpaddr)) &&
+ (ifp = ifa->ifa_ifp))
+ ifa = ifaof_ifpforaddr(ifaaddr ? ifaaddr : gate,
+ ifp);
+ else if ((ifaaddr && (ifa = ifa_ifwithaddr(ifaaddr))) ||
+ (ifa = ifa_ifwithroute(rt->rt_flags,
+ rt_key(rt), gate)))
+ ifp = ifa->ifa_ifp;