From 40bd0ecc3651fca0ad004eadf9efc35061ed445e Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Fri, 15 Mar 2002 21:25:10 +0000 Subject: SRCADDR returns --- sysconfig.txt | 3 +++ sysconfig/network-scripts/ifup | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sysconfig.txt b/sysconfig.txt index 85109c7e..0b4b7aef 100644 --- a/sysconfig.txt +++ b/sysconfig.txt @@ -455,6 +455,7 @@ Files in /etc/sysconfig/network-scripts/ DEVICE= IPADDR= + SRCADDR= NETMASK= GATEWAY= ONBOOT=yes|no @@ -469,6 +470,8 @@ Files in /etc/sysconfig/network-scripts/ file if PEERDNS is not set to "no". FIREWALL_MODS=yes|no modify firewall to attempt to allow DNS through. Defaults to 'yes'. + SRCADDR= + use the specified source address for outgoing packets If BOOTPROTO is not "none", then the only other item that must be set is the DEVICE item; all the rest will be determined diff --git a/sysconfig/network-scripts/ifup b/sysconfig/network-scripts/ifup index cd2c2286..47b6d385 100755 --- a/sysconfig/network-scripts/ifup +++ b/sysconfig/network-scripts/ifup @@ -212,13 +212,23 @@ else else SCOPE= fi - + + if [ -n "$SRCADDR" ]; then + SRC="src $SRCADDR" + else + SRC= + fi + if ! LC_ALL=C ip addr ls ${REALDEVICE} | grep -q "${IPADDR}/${PREFIX}" ; then if ! ip addr add ${IPADDR}/${PREFIX} \ brd ${BROADCAST:-+} dev ${REALDEVICE} ${SCOPE} label ${DEVICE}; then echo $"Error adding address ${IPADDR} for ${DEVICE}." fi fi + + if [ -n "$SRCADDR" ]; then + sysctl -w "net.ipv4.conf.${REALDEVICE}.arp_filter=1" >/dev/null 2>&1 + fi # update ARP cache of neighboring computers arping -q -A -c 1 -I ${REALDEVICE} ${IPADDR} @@ -227,17 +237,17 @@ else # Add a route for the subnet. Replace any existing route. if [ "${ISALIAS}" = no ]; then - ip route replace ${NETWORK}/${PREFIX} dev ${REALDEVICE} + ip route replace ${NETWORK}/${PREFIX} ${SRC} dev ${REALDEVICE} fi # Set a default route. if [ -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${REALDEVICE}" ]; then # set up default gateway if [ -n "${GATEWAY}" -a "`ipcalc --network ${GATEWAY} ${NETMASK} 2>/dev/null`" = "NETWORK=${NETWORK}" ]; then - ip route add default via ${GATEWAY} + ip route add default via ${GATEWAY} ${SRC} DEFGW=${GATEWAY} elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then - ip route add default dev ${REALDEVICE} + ip route add default ${SRC} dev ${REALDEVICE} fi fi fi -- cgit v1.2.1