From 2fffa0bb6fab4c6508dc9ad70d58fdb96f34fa76 Mon Sep 17 00:00:00 2001
From: Brandon Heller <brandonh@stanford.edu>
Date: Mon, 9 Aug 2010 23:14:10 -0700
Subject: [PATCH] Change port base from 0 to 1

OpenFlow versions > v0.9 require this.

Only tested w/FatTree topo - it's almost a guarantee that this breaks
every other topology.
---
 mininet/node.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/mininet/node.py b/mininet/node.py
index ba62514a..759ee857 100644
--- a/mininet/node.py
+++ b/mininet/node.py
@@ -52,6 +52,9 @@
 from mininet.util import quietRun, makeIntfPair, moveIntf, isShellBuiltin
 from mininet.moduledeps import moduleDeps, OVS_KMOD, OF_KMOD, TUN
 
+PORT_BASE = 1  # Port numbering to start from.  OF > v0.9 is 1-indexed.
+
+
 class Node( object ):
     """A virtual network node is simply a shell in a network namespace.
        We communicate with it using pipes."""
@@ -258,7 +261,7 @@ def newPort( self ):
         "Return the next port number to allocate."
         if len( self.ports ) > 0:
             return max( self.ports.values() ) + 1
-        return 0
+        return PORT_BASE
 
     def addIntf( self, intf, port=None ):
         """Add an interface.
@@ -544,8 +547,9 @@ def start( self, controllers ):
             mac_str = ' --datapath-id=0000' + \
                       ''.join( self.defaultMAC.split( ':' ) ) + ' '
         ports = sorted( self.ports.values() )
-        if len( ports ) != ports[ -1 ] + 1:
-            raise Exception( 'only contiguous, zero-indexed port ranges'
+        print ports
+        if len( ports ) != ports[ -1 ]:
+            raise Exception( 'only contiguous, one-indexed port ranges '
                             'supported: %s' % self.intfs )
         intfs = [ self.intfs[ port ] for port in ports ]
         self.cmd( 'ovs-dpctl', 'add-if', self.dp, ' '.join( intfs ) )
-- 
GitLab