Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2
sysconfig
sysconfig-ifstatus-route-skip-foreign-routes.bn...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File sysconfig-ifstatus-route-skip-foreign-routes.bnc572205.diff of Package sysconfig
From 874f38277b2abdaab0499b01601566353411dcb4 Mon Sep 17 00:00:00 2001 From: mt <mt@bf393798-0adf-0310-9952-bd479070b6c1> Date: Fri, 12 Feb 2010 12:01:56 +0000 Subject: [PATCH] Added route proto filter to ifstatus-route to evaluate only routes that may have been set by ifup-route and skip routes added e.g. by zebra to not to waste CPU for big zebra routing tables (bnc#572205). Thanks to Adrian Ban for his initial patch! --- scripts/ifup-route | 39 +++++++++++++++++++++++++++++++++------ 1 files changed, 33 insertions(+), 6 deletions(-) diff --git a/scripts/ifup-route b/scripts/ifup-route index 03c5b4f..ae8b496 100755 --- a/scripts/ifup-route +++ b/scripts/ifup-route @@ -107,6 +107,33 @@ test -f $ROUTECONF || ROUTECONF="" EXTRAROUTECONF=ifroute-$CONFIG test -f $EXTRAROUTECONF || EXTRAROUTECONF="" +# initialize route protos used in files we should consider +# in the ifstatus check (usually not used, see bnc#572205) +if [ "$ACTION" = status ] ; then + ROUTE_PROTOS=`LANG=C LC_ALL=C awk -- \ + '$1 !~ /^(#.*)?$/ { + if(match($0,"proto ([^ ]+)",p)) { + l=length(l) > 0 ? l"|"p[1] : p[1] + } + } + END { print l;}' \ + $ROUTECONF $EXTRAROUTECONF < /dev/null 2>/dev/null` +else + ROUTE_PROTOS="" +fi + +filter_routes() +{ + LANG=C LC_ALL=C awk -vrp="$ROUTE_PROTOS" -- \ + '/proto [^ ]+/ { + if(length(rp) > 0 && match($0,"proto ("rp")")) { + print $0; + } + next; + } + { print $0;}' +} + # # add special link local route # can configure only one interface this way at the moment @@ -122,7 +149,7 @@ if [ -d /sys/class/net/$INTERFACE ] ; then # Don't add this route if interface has no v4 address (Bug 65557) test -z "`ip -4 a l dev $INTERFACE 2>/dev/null`" && islinklocal= if test -n "$islinklocal" ; then - current=`ip -4 route show 169.254.0.0/16` + current=`ip -4 route show 169.254.0.0/16 | filter_routes` if test -z "$current" -o "$current" != "${current/ dev $INTERFACE }"; then EXTRALINKLOCAL="169.254.0.0/16 - - $INTERFACE" fi @@ -215,7 +242,7 @@ pop_route_stack () { # At first look for the current default route interface via 'ip route' and store # it in $DR_IFACE. - set -- `ip route` + set -- `ip -4 route show | filter_routes` while [ "$1" != default -a $# -gt 0 ] ; do shift; done while [ "$1" != dev -a $# -gt 0 ] ; do shift; done DR_IFACE=$2 @@ -283,7 +310,7 @@ get_default_route() { OLDDEFROUTEIFACE=$IFACE return fi - done < <(ip -4 route show) + done < <(ip -4 route show | filter_routes) return 1 } @@ -318,7 +345,7 @@ if [ "$ACTION" = status ] ; then *) ALL_ROUTES="$ALL_ROUTES ${DEST}_${GWAY}_${IFACE}_" ;; esac - done < <(ip -4 route show) + done < <(ip -4 route show | filter_routes) declare -i n=0 m=0 fi @@ -514,7 +541,7 @@ if [ "$ACTION" = status ] ; then IFACE_ROUTES="" while read LINE; do IFACE_ROUTES="${IFACE_ROUTES:+$IFACE_ROUTES\n} $LINE" - done < <(ip -4 route show dev $INTERFACE 2>/dev/null) + done < <(ip -4 route show dev $INTERFACE 2>/dev/null | filter_routes) test -n "$IFACE_ROUTES" && message_if_not_run_from_rc "Active IPv4 routes for interface $INTERFACE:" message_if_not_run_from_rc "$IFACE_ROUTES" test $n -gt 0 && \ @@ -522,7 +549,7 @@ if [ "$ACTION" = status ] ; then IFACE_ROUTES="" while read LINE; do IFACE_ROUTES="${IFACE_ROUTES:+$IFACE_ROUTES\n} $LINE" - done < <(ip -6 route show dev $INTERFACE 2>/dev/null) + done < <(ip -6 route show dev $INTERFACE 2>/dev/null | filter_routes) test -n "$IFACE_ROUTES" && message_if_not_run_from_rc "Active IPv6 routes for interface $INTERFACE:" message_if_not_run_from_rc "$IFACE_ROUTES" test $n -ne $m && exit 3 -- 1.6.4.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor