From 7f760c48909ddfa241914fdef1cfc33f2d30a056 Mon Sep 17 00:00:00 2001 From: "Matthew N. Dodd" Date: Sun, 2 Mar 2003 21:34:37 +0000 Subject: Reduce code duplication. This adds the function rt_check() to route.c. Approved by: sam (in principle) --- sys/net/if_fddisubr.c | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) (limited to 'sys/net/if_fddisubr.c') diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c index 49a5f21811d1..4fb4bad4bf1b 100644 --- a/sys/net/if_fddisubr.c +++ b/sys/net/if_fddisubr.c @@ -136,28 +136,11 @@ fddi_output(ifp, m, dst, rt0) if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) senderr(ENETDOWN); getmicrotime(&ifp->if_lastchange); - if ((rt = rt0) != NULL) { - if ((rt->rt_flags & RTF_UP) == 0) { - if ((rt0 = rt = rtalloc1(dst, 1, 0UL)) != NULL) - rt->rt_refcnt--; - else - senderr(EHOSTUNREACH); - } - if (rt->rt_flags & RTF_GATEWAY) { - if (rt->rt_gwroute == 0) - goto lookup; - if (((rt = rt->rt_gwroute)->rt_flags & RTF_UP) == 0) { - rtfree(rt); rt = rt0; - lookup: rt->rt_gwroute = rtalloc1(rt->rt_gateway, 1, 0UL); - if ((rt = rt->rt_gwroute) == 0) - senderr(EHOSTUNREACH); - } - } - if (rt->rt_flags & RTF_REJECT) - if (rt->rt_rmx.rmx_expire == 0 || - time_second < rt->rt_rmx.rmx_expire) - senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH); - } + + error = rt_check(&rt, &rt0, dst); + if (error) + goto bad; + switch (dst->sa_family) { #ifdef INET -- cgit v1.2.3