summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReyk Floeter <reyk@cvs.openbsd.org>2005-12-06 17:24:19 +0000
committerReyk Floeter <reyk@cvs.openbsd.org>2005-12-06 17:24:19 +0000
commit3c63dd582cd759da83db6c8836d8a7618ed881ad (patch)
treedf1b844c24d0dd249135377165d1897190ab9990
parent777c7b4c6b10ef9e77ae6e59d0805f2dcc6f90f3 (diff)
multicast_host=YES only works if a valid default gateway is available.
validate this condition and reject multicast traffic on failure. ok todd@ naddy@
-rw-r--r--etc/netstart15
1 files changed, 11 insertions, 4 deletions
diff --git a/etc/netstart b/etc/netstart
index 7e4fcb4a202..d144eca6da7 100644
--- a/etc/netstart
+++ b/etc/netstart
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $OpenBSD: netstart,v 1.111 2005/11/02 18:45:26 todd Exp $
+# $OpenBSD: netstart,v 1.112 2005/12/06 17:24:18 reyk Exp $
# Strip comments (and leading/trailing whitespace if IFS is set)
# from a file and spew to stdout
@@ -330,6 +330,7 @@ done
# NO YES none installed daemon will run
# YES/interface NO -interface YES=def. iface
# Any other combination -reject config error
+route -qn delete 224.0.0.0/4 > /dev/null 2>&1
case "$multicast_host:$multicast_router" in
NO:NO)
route -qn add -net 224.0.0.0/4 -interface 127.0.0.1 -reject > /dev/null
@@ -337,7 +338,7 @@ NO:NO)
NO:YES)
;;
*:NO)
- set `if [ $multicast_host = YES ]; then
+ maddr=`if [ "$multicast_host" = "YES" ]; then
ed -s '!route -qn show -inet' <<EOF
/^default/p
EOF
@@ -345,8 +346,14 @@ EOF
ed -s "!ifconfig $multicast_host" <<EOF
/^ inet /p
EOF
- fi`
- route -qn add -net 224.0.0.0/4 -interface $2 > /dev/null
+ fi 2> /dev/null`
+ if [ "X${maddr}" != "X" ]; then
+ set $maddr
+ route -qn add -net 224.0.0.0/4 -interface $2 > /dev/null
+ else
+ route -qn add -net 224.0.0.0/4 -interface \
+ 127.0.0.1 -reject > /dev/null
+ fi
;;
*:*)
echo 'config error, multicasting disabled until rc.conf is fixed'