From 1ecc63dfec2d270da497dd571040c24a1e05a23d Mon Sep 17 00:00:00 2001 From: Brian O'Connor Date: Tue, 23 Jul 2013 17:03:51 -0700 Subject: [PATCH] improved check for downed link in parsePingFull fixes #176 --- mininet/net.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mininet/net.py b/mininet/net.py index db594c3..229b034 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -480,19 +480,26 @@ class Mininet( object ): @staticmethod def _parsePingFull( pingOutput ): "Parse ping output and return all data." + errorTuple = (1, 0, 0, 0, 0, 0) # Check for downed link - if 'connect: Network is unreachable' in pingOutput: - return (1, 0) + r = r'[uU]nreachable' + m = re.search( r, pingOutput ) + if m is not None: + return errorTuple r = r'(\d+) packets transmitted, (\d+) received' m = re.search( r, pingOutput ) if m is None: error( '*** Error: could not parse ping output: %s\n' % pingOutput ) - return (1, 0, 0, 0, 0, 0) + return errorTuple sent, received = int( m.group( 1 ) ), int( m.group( 2 ) ) r = r'rtt min/avg/max/mdev = ' r += r'(\d+\.\d+)/(\d+\.\d+)/(\d+\.\d+)/(\d+\.\d+) ms' m = re.search( r, pingOutput ) + if m is None: + error( '*** Error: could not parse ping output: %s\n' % + pingOutput ) + return errorTuple rttmin = float( m.group( 1 ) ) rttavg = float( m.group( 2 ) ) rttmax = float( m.group( 3 ) )