X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Fnetworking%2Fred;h=f0c89fe3989a6199cbcf838434ab4090078467ed;hp=5c96c06911797cd610f7f8b53b8bb265e96d0909;hb=fd850b7e3b0bacfa74afa5c5d04c43ddd1d54d73;hpb=b8c750f3b354307eaa52f6cf3d468fb775b15c78 diff --git a/src/initscripts/init.d/networking/red b/src/initscripts/init.d/networking/red index 5c96c06911..f0c89fe398 100644 --- a/src/initscripts/init.d/networking/red +++ b/src/initscripts/init.d/networking/red @@ -15,17 +15,21 @@ # ######################################################################## - - . /etc/sysconfig/rc . ${rc_functions} +#Define some defaults +RED_VDSL_INET_VLAN=7 +RED_VDSL_IPTV_VLAN=8 +RED_VDSL_IPTV_DISABLE=0 + eval $(/usr/local/bin/readhash /var/ipfire/main/settings) if [ "$RRDLOG" == "" ]; then RRDLOG=/var/log/rrd fi eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) +eval $(/usr/local/bin/readhash /var/ipfire/dns/settings) eval $(/usr/local/bin/readhash /var/ipfire/mac/settings) MAC=$(tr - : <<<$MAC) @@ -70,16 +74,13 @@ if [ "${TYPE}" == "STATIC" ]; then echo_failure exit 1 fi - -elif [ "${TYPE}" == "DHCP" ]; then - - PIDFILE="/var/run/dhcpcd-${DEVICE}.pid" - LEASEINFO="/var/ipfire/dhcpc/dhcpcd-${DEVICE}.info" - DHCP_START="-N -R -L /var/ipfire/dhcpc -c /var/ipfire/dhcpc/dhcpcd.exe " - DHCP_STOP="-k -c /var/ipfire/dhcpc/dhcpcd.exe " - fi +PIDFILE="/var/run/dhcpcd-${DEVICE}.pid" +LEASEINFO="/var/ipfire/dhcpc/dhcpcd-${DEVICE}.info" +DHCP_START="-N -R -L /var/ipfire/dhcpc -c /var/ipfire/dhcpc/dhcpcd.exe " +DHCP_STOP="-k -c /var/ipfire/dhcpc/dhcpcd.exe " + case "${1}" in start) if [ "${DEVICE}" != "${GREEN_DEV}" ] && [ "${DEVICE}" != "" ]; then @@ -95,6 +96,7 @@ case "${1}" in ip link set dev ${DEVICE} address ${MAC} evaluate_retval fi + ip link set ${DEVICE} up fi fi @@ -130,7 +132,10 @@ case "${1}" in evaluate_retval run_subdir ${rc_base}/init.d/networking/red.up/ - + + # Configure aliases only if red static + /usr/local/bin/setaliases + elif [ "${TYPE}" == "DHCP" ]; then if [ -e $LEASEINFO ]; then @@ -207,9 +212,15 @@ case "${1}" in boot_mesg_flush boot_mesg " DNS Server: $DNS" boot_mesg_flush - - echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var/ipfire/red/dns1 - echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var/ipfire/red/dns2 + if [ -n "$DNS0" ] && [ -n "$DNS1" ]; then + boot_mesg "Overwritting DNS-Server addresses with ${DNS0},${DNS1}" + echo -n ${DNS0} > /var/ipfire/red/dns1 + echo -n ${DNS1} > /var/ipfire/red/dns2 + evaluate_retval + else + echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var/ipfire/red/dns1 + echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var/ipfire/red/dns2 + fi . /var/ipfire/dhcpc/dhcpcd-${DEVICE}.info echo "$IPADDR" > /var/ipfire/red/local-ipaddress @@ -239,13 +250,57 @@ case "${1}" in PPP_NIC=${DEVICE} if [ "$TYPE" == "vdsl" ]; then - boot_mesg "Createing VLAN Interface ${DEVICE}.7 ..." + boot_mesg "Createing VLAN Interface ${DEVICE}.${RED_VDSL_INET_VLAN} ..." modprobe 8021q - vconfig add ${DEVICE} 7 - PPP_NIC=${DEVICE}.7 + vconfig add ${DEVICE} ${RED_VDSL_INET_VLAN} + PPP_NIC=${DEVICE}.${RED_VDSL_INET_VLAN} sleep 0.2 ip link set ${PPP_NIC} up TYPE="pppoe" + + if [ "${RED_VDSL_IPTV_DISABLE}" == "0" ]; then + PIDFILE="/var/run/dhcpcd-${DEVICE}.${RED_VDSL_IPTV_VLAN}.pid" + LEASEINFO="/var/ipfire/dhcpc/dhcpcd-${DEVICE}.${RED_VDSL_IPTV_VLAN}.info" + + # Test to see if there is a stale pid file + if [ -f "$PIDFILE" ]; then + ps `cat "$PIDFILE"` | grep dhcpcd > /dev/null + if [ $? != 0 ]; then + rm -f /var/run/dhcpcd-${DEVICE}.${RED_VDSL_IPTV_VLAN}.pid > /dev/null + fi + fi + + if [ ! -f "$PIDFILE" ]; then + boot_mesg "Createing VLAN Interface ${DEVICE}.${RED_VDSL_IPTV_VLAN} ..." + vconfig add ${DEVICE} ${RED_VDSL_IPTV_VLAN} + boot_mesg -n "Starting dhcpcd on the ${DEVICE}.${RED_VDSL_IPTV_VLAN} interface..." + /sbin/dhcpcd ${DEVICE}.${RED_VDSL_IPTV_VLAN} ${DHCP_START} >/dev/null 2>&1 + RET="$?" + + if [ "$RET" = "0" ]; then + . /var/ipfire/dhcpc/dhcpcd-${DEVICE}.${RED_VDSL_IPTV_VLAN}.info + echo "" + echo_ok + boot_mesg " DHCP Assigned Settings for ${DEVICE}.${RED_VDSL_IPTV_VLAN}:" + boot_mesg_flush + boot_mesg " IP Address: $IPADDR" + boot_mesg_flush + boot_mesg " Hostname: $RED_DHCP_HOSTNAME" + boot_mesg_flush + boot_mesg " Subnet Mask: $NETMASK" + boot_mesg_flush + boot_mesg " Default Gateway: $GATEWAY" + boot_mesg_flush + boot_mesg " DNS Server: $DNS" + boot_mesg_flush + + else + echo "" + $(exit "$RET") + evaluate_retval + fi + fi + fi fi if [ "$TYPE" == "pppoeatm" ] || [ "$TYPE" == "pptpatm" ]; then @@ -269,7 +324,47 @@ case "${1}" in boot_mesg "Bringing up the $TYPE interface on $PPP_NIC ..." ip addr flush dev $PPP_NIC >/dev/null 2>&1 if [ "$TYPE" == "pptp" ]; then - ip addr add $PPTP_NICCFG dev $PPP_NIC + if [ "$PPTP_NICCFG" == "dhcp" ]; then + + # Test to see if there is a stale pid file + if [ -f "$PIDFILE" ]; then + ps `cat "$PIDFILE"` | grep dhcpcd > /dev/null + if [ $? != 0 ]; then + rm -f /var/run/dhcpcd-${DEVICE}.${RED_VDSL_IPTV_VLAN}.pid > /dev/null + fi + fi + + if [ ! -f "$PIDFILE" ]; then + boot_mesg -n "Starting dhcpcd on the ${DEVICE}.${RED_VDSL_IPTV_VLAN} interface..." + /sbin/dhcpcd ${DEVICE} ${DHCP_START} >/dev/null 2>&1 + RET="$?" + + if [ "$RET" = "0" ]; then + . /var/ipfire/dhcpc/dhcpcd-${DEVICE}.info + echo "" + echo_ok + boot_mesg " DHCP Assigned Settings for ${DEVICE}:" + boot_mesg_flush + boot_mesg " IP Address: $IPADDR" + boot_mesg_flush + boot_mesg " Hostname: $RED_DHCP_HOSTNAME" + boot_mesg_flush + boot_mesg " Subnet Mask: $NETMASK" + boot_mesg_flush + boot_mesg " Default Gateway: $GATEWAY" + boot_mesg_flush + boot_mesg " DNS Server: $DNS" + boot_mesg_flush + + else + echo "" + $(exit "$RET") + evaluate_retval + fi + fi + else + ip addr add $PPTP_NICCFG dev $PPP_NIC + fi fi ip link set ${PPP_NIC} up else @@ -420,39 +515,6 @@ case "${1}" in fi run_subdir ${rc_base}/init.d/networking/red.down/ - elif [ "$TYPE" == "DHCP" ]; then - boot_mesg -n "Stopping dhcpcd on the ${DEVICE} interface..." - if [ -e $LEASEINFO ]; then - . $LEASEINFO - if [ "$LEASETIME" = "4294967295" ]; then - # do nothing, just echo ok - echo "" - echo_ok - else - if [ -n "$DHCP_STOP" ]; then - /sbin/dhcpcd ${DEVICE} $DHCP_STOP &> /dev/null - RET="$?" - if [ "$RET" -eq 0 ]; then - echo "" - echo_ok - elif [ "$RET" -eq 1 ]; then - boot_mesg "dhcpcd not running!" ${WARNING} - echo_warning - else - echo "" - echo_failure - fi - else - echo "" - killproc dhcpcd - fi - fi - else - boot_mesg -n "LEASEINFO Test failed! - " ${WARNING} - boot_mesg "dhcpcd is not running!" ${WARNING} - echo_warning - fi - elif [ "$TYPE" == "PPPOE" ]; then boot_mesg "Bringing down the PPP interface ..." ## Disable vnstat collection @@ -465,23 +527,52 @@ case "${1}" in $(date +%s):: > /dev/null 2>&1 fi - if [ "$DEVICE" != "${GREEN_DEV}" ] && [ "$DEVICE" != "" ]; then - link_status=`ip link show $DEVICE.7 2> /dev/null` - if [ -n "${link_status}" ]; then - if echo "${link_status}" | grep -q UP; then - boot_mesg "Bringing down the ${DEVICE}.7 interface..." - ip link set ${DEVICE}.7 down - vconfig del ${DEVICE} 7 - evaluate_retval + if [ -e $LEASEINFO ]; then + boot_mesg -n "Stopping dhcpcd on the ${DEVICE} interface..." + . $LEASEINFO + if [ "$LEASETIME" = "4294967295" ]; then + # do nothing, just echo ok + echo "" + echo_ok + else + if [ -n "$DHCP_STOP" ]; then + /sbin/dhcpcd ${DEVICE} $DHCP_STOP &> /dev/null + RET="$?" + if [ "$RET" -eq 0 ]; then + echo "" + echo_ok + elif [ "$RET" -eq 1 ]; then + boot_mesg "dhcpcd not running!" ${WARNING} + echo_warning + else + echo "" + echo_failure + fi + else + echo "" + killproc dhcpcd fi fi - link_status=`ip link show $DEVICE 2> /dev/null` + fi + + if [ "$DEVICE" != "${GREEN_DEV}" ] && [ "$DEVICE" != "" ]; then + link_status=`ip link show $DEVICE.${RED_VDSL_INET_VLAN} 2> /dev/null` if [ -n "${link_status}" ]; then if echo "${link_status}" | grep -q UP; then - boot_mesg "Bringing down the ${DEVICE} interface..." - ip link set ${DEVICE} down + boot_mesg "Bringing down the ${DEVICE}.${RED_VDSL_INET_VLAN} interface..." + ip link set ${DEVICE}.${RED_VDSL_INET_VLAN} down + vconfig del ${DEVICE} ${RED_VDSL_INET_VLAN} evaluate_retval fi + else + link_status=`ip link show $DEVICE 2> /dev/null` + if [ -n "${link_status}" ]; then + if echo "${link_status}" | grep -q UP; then + boot_mesg "Bringing down the ${DEVICE} interface..." + ip link set ${DEVICE} down + evaluate_retval + fi + fi fi fi killall -w -s KILL /usr/sbin/pppd >/dev/null 2>&1