Fold long lines created by the previous commit. No functional change.

This commit is contained in:
christos 2008-10-28 11:41:23 +00:00
parent a69f51a660
commit 522f18932f

View File

@ -1,4 +1,4 @@
/* $NetBSD: rtsock.c,v 1.114 2008/10/28 02:03:06 dyoung Exp $ */ /* $NetBSD: rtsock.c,v 1.115 2008/10/28 11:41:23 christos Exp $ */
/* /*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@ -61,7 +61,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.114 2008/10/28 02:03:06 dyoung Exp $"); __KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.115 2008/10/28 11:41:23 christos Exp $");
#include "opt_inet.h" #include "opt_inet.h"
@ -255,12 +255,15 @@ route_output(struct mbuf *m, ...)
#ifdef RTSOCK_DEBUG #ifdef RTSOCK_DEBUG
if (info.rti_info[RTAX_DST]->sa_family == AF_INET) { if (info.rti_info[RTAX_DST]->sa_family == AF_INET) {
printf("%s: extracted info.rti_info[RTAX_DST] %s\n", __func__, printf("%s: extracted info.rti_info[RTAX_DST] %s\n", __func__,
inet_ntoa(((const struct sockaddr_in *)info.rti_info[RTAX_DST])->sin_addr)); inet_ntoa(((const struct sockaddr_in *)
info.rti_info[RTAX_DST])->sin_addr));
} }
#endif /* RTSOCK_DEBUG */ #endif /* RTSOCK_DEBUG */
if (info.rti_info[RTAX_DST] == NULL || (info.rti_info[RTAX_DST]->sa_family >= AF_MAX)) if (info.rti_info[RTAX_DST] == NULL ||
(info.rti_info[RTAX_DST]->sa_family >= AF_MAX))
senderr(EINVAL); senderr(EINVAL);
if (info.rti_info[RTAX_GATEWAY] != NULL && (info.rti_info[RTAX_GATEWAY]->sa_family >= AF_MAX)) if (info.rti_info[RTAX_GATEWAY] != NULL &&
(info.rti_info[RTAX_GATEWAY]->sa_family >= AF_MAX))
senderr(EINVAL); senderr(EINVAL);
/* /*
@ -295,7 +298,8 @@ route_output(struct mbuf *m, ...)
case RTM_GET: case RTM_GET:
case RTM_CHANGE: case RTM_CHANGE:
case RTM_LOCK: case RTM_LOCK:
/* XXX This will mask info.rti_info[RTAX_DST] with info.rti_info[RTAX_NETMASK] before /* XXX This will mask info.rti_info[RTAX_DST] with
* info.rti_info[RTAX_NETMASK] before
* searching. It did not used to do that. --dyoung * searching. It did not used to do that. --dyoung
*/ */
error = rtrequest1(RTM_GET, &info, &rt); error = rtrequest1(RTM_GET, &info, &rt);
@ -304,11 +308,14 @@ route_output(struct mbuf *m, ...)
if (rtm->rtm_type != RTM_GET) {/* XXX: too grotty */ if (rtm->rtm_type != RTM_GET) {/* XXX: too grotty */
struct radix_node *rn; struct radix_node *rn;
if (memcmp(info.rti_info[RTAX_DST], rt_getkey(rt), info.rti_info[RTAX_DST]->sa_len) != 0) if (memcmp(info.rti_info[RTAX_DST], rt_getkey(rt),
info.rti_info[RTAX_DST]->sa_len) != 0)
senderr(ESRCH); senderr(ESRCH);
info.rti_info[RTAX_NETMASK] = intern_netmask(info.rti_info[RTAX_NETMASK]); info.rti_info[RTAX_NETMASK] = intern_netmask(
info.rti_info[RTAX_NETMASK]);
for (rn = rt->rt_nodes; rn; rn = rn->rn_dupedkey) for (rn = rt->rt_nodes; rn; rn = rn->rn_dupedkey)
if (info.rti_info[RTAX_NETMASK] == (const struct sockaddr *)rn->rn_mask) if (info.rti_info[RTAX_NETMASK] ==
(const struct sockaddr *)rn->rn_mask)
break; break;
if (rn == NULL) if (rn == NULL)
senderr(ETOOMANYREFS); senderr(ETOOMANYREFS);
@ -334,18 +341,25 @@ route_output(struct mbuf *m, ...)
rtifa = rt_get_ifa(rt); rtifa = rt_get_ifa(rt);
info.rti_info[RTAX_IFA] = rtifa->ifa_addr; info.rti_info[RTAX_IFA] = rtifa->ifa_addr;
#ifdef RTSOCK_DEBUG #ifdef RTSOCK_DEBUG
if (info.rti_info[RTAX_IFA]->sa_family == AF_INET) { if (info.rti_info[RTAX_IFA]->sa_family ==
AF_INET) {
printf("%s: copying out RTAX_IFA %s ", printf("%s: copying out RTAX_IFA %s ",
__func__, __func__, inet_ntoa(
inet_ntoa(((const struct sockaddr_in *)info.rti_info[RTAX_IFA])->sin_addr)); (const struct sockaddr_in *)
printf("for info.rti_info[RTAX_DST] %s ifa_getifa %p ifa_seqno %p\n", info.rti_info[RTAX_IFA])->sin_addr);
inet_ntoa(((const struct sockaddr_in *)info.rti_info[RTAX_DST])->sin_addr), printf("for info.rti_info[RTAX_DST] %s "
(void *)rtifa->ifa_getifa, rtifa->ifa_seqno); "ifa_getifa %p ifa_seqno %p\n",
inet_ntoa(
(const struct sockaddr_in *)
info.rti_info[RTAX_DST])->sin_addr),
(void *)rtifa->ifa_getifa,
rtifa->ifa_seqno);
} }
#endif /* RTSOCK_DEBUG */ #endif /* RTSOCK_DEBUG */
if (ifp->if_flags & IFF_POINTOPOINT) if (ifp->if_flags & IFF_POINTOPOINT) {
info.rti_info[RTAX_BRD] = rtifa->ifa_dstaddr; info.rti_info[RTAX_BRD] =
else rtifa->ifa_dstaddr;
} else
info.rti_info[RTAX_BRD] = NULL; info.rti_info[RTAX_BRD] = NULL;
rtm->rtm_index = ifp->if_index; rtm->rtm_index = ifp->if_index;
} else { } else {
@ -375,19 +389,26 @@ route_output(struct mbuf *m, ...)
*/ */
if ((error = rt_getifa(&info)) != 0) if ((error = rt_getifa(&info)) != 0)
senderr(error); senderr(error);
if (info.rti_info[RTAX_GATEWAY] && rt_setgate(rt, info.rti_info[RTAX_GATEWAY])) if (info.rti_info[RTAX_GATEWAY] &&
rt_setgate(rt, info.rti_info[RTAX_GATEWAY]))
senderr(EDQUOT); senderr(EDQUOT);
/* new gateway could require new ifaddr, ifp; /* new gateway could require new ifaddr, ifp;
flags may also be different; ifp may be specified flags may also be different; ifp may be specified
by ll sockaddr when protocol address is ambiguous */ by ll sockaddr when protocol address is ambiguous */
if (info.rti_info[RTAX_IFP] && (ifa = ifa_ifwithnet(info.rti_info[RTAX_IFP])) && if (info.rti_info[RTAX_IFP] &&
(ifp = ifa->ifa_ifp) && (info.rti_info[RTAX_IFA] || info.rti_info[RTAX_GATEWAY])) (ifa = ifa_ifwithnet(info.rti_info[RTAX_IFP])) &&
ifa = ifaof_ifpforaddr(info.rti_info[RTAX_IFA] ? info.rti_info[RTAX_IFA] : info.rti_info[RTAX_GATEWAY], (ifp = ifa->ifa_ifp) && (info.rti_info[RTAX_IFA] ||
ifp); info.rti_info[RTAX_GATEWAY])) {
else if ((info.rti_info[RTAX_IFA] && (ifa = ifa_ifwithaddr(info.rti_info[RTAX_IFA]))) || ifa = ifaof_ifpforaddr(info.rti_info[RTAX_IFA] ?
(info.rti_info[RTAX_GATEWAY] && (ifa = ifa_ifwithroute(rt->rt_flags, info.rti_info[RTAX_IFA] :
rt_getkey(rt), info.rti_info[RTAX_GATEWAY])))) info.rti_info[RTAX_GATEWAY], ifp);
} else if ((info.rti_info[RTAX_IFA] &&
(ifa = ifa_ifwithaddr(info.rti_info[RTAX_IFA]))) ||
(info.rti_info[RTAX_GATEWAY] &&
(ifa = ifa_ifwithroute(rt->rt_flags,
rt_getkey(rt), info.rti_info[RTAX_GATEWAY])))) {
ifp = ifa->ifa_ifp; ifp = ifa->ifa_ifp;
}
if (ifa) { if (ifa) {
struct ifaddr *oifa = rt->rt_ifa; struct ifaddr *oifa = rt->rt_ifa;
if (oifa != ifa) { if (oifa != ifa) {
@ -403,9 +424,7 @@ route_output(struct mbuf *m, ...)
&rt->rt_rmx); &rt->rt_rmx);
if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest) if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest)
rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, &info); rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, &info);
/* /*FALLTHROUGH*/
* Fall into
*/
case RTM_LOCK: case RTM_LOCK:
rt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits); rt->rt_rmx.rmx_locks &= ~(rtm->rtm_inits);
rt->rt_rmx.rmx_locks |= rt->rt_rmx.rmx_locks |=
@ -425,7 +444,8 @@ flush:
else else
rtm->rtm_flags |= RTF_DONE; rtm->rtm_flags |= RTF_DONE;
} }
family = info.rti_info[RTAX_DST] ? info.rti_info[RTAX_DST]->sa_family : 0; family = info.rti_info[RTAX_DST] ? info.rti_info[RTAX_DST]->sa_family :
0;
if (rt) if (rt)
rtfree(rt); rtfree(rt);
{ {
@ -484,7 +504,8 @@ rt_setmetrics(u_long which, const struct rt_metrics *in, struct rt_metrics *out)
#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len)) #define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
static int static int
rt_xaddrs(u_char rtmtype, const char *cp, const char *cplim, struct rt_addrinfo *rtinfo) rt_xaddrs(u_char rtmtype, const char *cp, const char *cplim,
struct rt_addrinfo *rtinfo)
{ {
const struct sockaddr *sa = NULL; /* Quell compiler warning */ const struct sockaddr *sa = NULL; /* Quell compiler warning */
int i; int i;
@ -506,9 +527,13 @@ rt_xaddrs(u_char rtmtype, const char *cp, const char *cplim, struct rt_addrinfo
ADVANCE(cp, sa); ADVANCE(cp, sa);
} }
/* Check for extra addresses specified, except RTM_GET asking for interface info. */ /*
* Check for extra addresses specified, except RTM_GET asking
* for interface info.
*/
if (rtmtype == RTM_GET) { if (rtmtype == RTM_GET) {
if (((rtinfo->rti_addrs & (~((1 << RTAX_IFP) | (1 << RTAX_IFA)))) & (~0 << i)) != 0) if (((rtinfo->rti_addrs &
(~((1 << RTAX_IFP) | (1 << RTAX_IFA)))) & (~0 << i)) != 0)
return 1; return 1;
} else if ((rtinfo->rti_addrs & (~0 << i)) != 0) } else if ((rtinfo->rti_addrs & (~0 << i)) != 0)
return 1; return 1;
@ -1089,7 +1114,8 @@ sysctl_iflist(int af, struct walkarg *w, int type)
w->w_where = (char *)w->w_where + len; w->w_where = (char *)w->w_where + len;
} }
} }
info.rti_info[RTAX_IFA] = info.rti_info[RTAX_NETMASK] = info.rti_info[RTAX_BRD] = NULL; info.rti_info[RTAX_IFA] = info.rti_info[RTAX_NETMASK] =
info.rti_info[RTAX_BRD] = NULL;
} }
return 0; return 0;
} }