ofproto: Fix ofport allocation.
authorGurucharan Shetty <gshetty@nicira.com>
Tue, 20 Nov 2012 11:18:11 +0000 (03:18 -0800)
committerGurucharan Shetty <gshetty@nicira.com>
Tue, 20 Nov 2012 14:00:43 +0000 (06:00 -0800)
Currently running the following 3 commands results
in vswitchd running in an infinite loop.

ovs-vsctl add-port br1 port1 -- set interface port1 \
type=internal ofport_request=1
ovs-vsctl add-port br1 port2 -- set interface port2 \
type=internal ofport_request=2
ovs-vsctl add-port br1 port3 -- set interface port3 \
type=internal

This patch lets us go through all the possible ofport
values to find a free ofport.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
ofproto/ofproto.c

index 182da63363e3fc952783d535f581ab9d2993ce78..8bc9b590c50a3e44bc73fa4a7396b6393786ac64 100644 (file)
@@ -1666,7 +1666,8 @@ alloc_ofp_port(struct ofproto *ofproto, const char *netdev_name)
          * flows. */
         while (ofp_port >= ofproto->max_ports) {
             for (ofproto->alloc_port_no++;
-                 ofproto->alloc_port_no < ofproto->max_ports; ) {
+                 ofproto->alloc_port_no < ofproto->max_ports;
+                 ofproto->alloc_port_no++) {
                 if (!bitmap_is_set(ofproto->ofp_port_ids,
                                    ofproto->alloc_port_no)) {
                     ofp_port = ofproto->alloc_port_no;