From 27a554f1ab79fda61d1661cdcb1b207e57c315d1 Mon Sep 17 00:00:00 2001 From: wollman Date: Tue, 25 Apr 1995 19:50:20 +0000 Subject: Disallow half-configured point-to-point interfaces. It's still possible to get into a half-configured state by using the old-style ioctls;this may be a feature. --- sys/netinet/in.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'sys/netinet/in.c') diff --git a/sys/netinet/in.c b/sys/netinet/in.c index 1da3f58..c90cc2c 100644 --- a/sys/netinet/in.c +++ b/sys/netinet/in.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)in.c 8.2 (Berkeley) 11/15/93 - * $Id: in.c,v 1.10 1995/03/16 18:14:50 bde Exp $ + * $Id: in.c,v 1.11 1995/03/23 18:14:40 wollman Exp $ */ #include @@ -202,12 +202,19 @@ in_control(so, cmd, data, ifp) case SIOCAIFADDR: case SIOCDIFADDR: - if (ifra->ifra_addr.sin_family == AF_INET) - for (oia = ia; ia; ia = ia->ia_next) { - if (ia->ia_ifp == ifp && - ia->ia_addr.sin_addr.s_addr == - ifra->ifra_addr.sin_addr.s_addr) - break; + if (ifra->ifra_addr.sin_family == AF_INET) { + for (oia = ia; ia; ia = ia->ia_next) { + if (ia->ia_ifp == ifp && + ia->ia_addr.sin_addr.s_addr == + ifra->ifra_addr.sin_addr.s_addr) + break; + } + if ((ifp->if_flags & IFF_POINTOPOINT) + && (cmd == SIOCAIFADDR) + && (ifra->ifra_dstaddr.sin_addr.s_addr + == INADDR_ANY)) { + return EADDRNOTAVAIL; + } } if (cmd == SIOCDIFADDR && ia == 0) return (EADDRNOTAVAIL); -- cgit v1.1