summaryrefslogtreecommitdiffstats
path: root/sys/netinet/in.c
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1995-04-25 19:50:20 +0000
committerwollman <wollman@FreeBSD.org>1995-04-25 19:50:20 +0000
commit27a554f1ab79fda61d1661cdcb1b207e57c315d1 (patch)
treea4730c07631cda1023cce458b4f8eb7ec35c4c47 /sys/netinet/in.c
parente4b7887b8f1b6971e7433435c3a4944ce14ca0ca (diff)
downloadFreeBSD-src-27a554f1ab79fda61d1661cdcb1b207e57c315d1.zip
FreeBSD-src-27a554f1ab79fda61d1661cdcb1b207e57c315d1.tar.gz
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.
Diffstat (limited to 'sys/netinet/in.c')
-rw-r--r--sys/netinet/in.c21
1 files changed, 14 insertions, 7 deletions
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 <sys/param.h>
@@ -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);
OpenPOWER on IntegriCloud