[ovs-dev] [PATCH 12/13] treewide: Convert leading tabs to spaces.

Ben Pfaff blp at ovn.org
Mon Jun 4 21:27:49 UTC 2018


It's always been OVS coding style to use spaces rather than tabs for
indentation, but some tabs have snuck in over time.  This commit converts
them to spaces.

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 Documentation/faq/issues.rst                      |    4 +-
 Documentation/faq/vlan.rst                        |    2 +-
 Documentation/group-selection-method-property.txt |    2 +-
 Documentation/ref/ovs-sim.1.rst                   |   54 +-
 Documentation/tutorials/faucet.rst                |   70 +-
 Documentation/tutorials/ovs-advanced.rst          |   98 +-
 NEWS                                              |    2 +-
 Vagrantfile                                       |   18 +-
 debian/copyright.in                               |  136 +-
 debian/openvswitch-switch.README.Debian           |   48 +-
 debian/openvswitch-switch.init                    |   30 +-
 debian/openvswitch-switch.logrotate               |    6 +-
 debian/ovn-central.postinst                       |   16 +-
 debian/ovn-host.postinst                          |   16 +-
 include/openvswitch/rconn.h                       |    4 +-
 lib/dpif-netdev.c                                 |   32 +-
 lib/dpif.c                                        |    4 +-
 lib/meta-flow.xml                                 | 2146 ++++++++++-----------
 lib/ofp-print.c                                   |    8 +-
 ofproto/ofproto-dpif-ipfix.c                      |    2 +-
 ofproto/ofproto-dpif-sflow.c                      |  426 ++--
 ofproto/ofproto-dpif-xlate.c                      |    2 +-
 ovn/utilities/ovn-detrace.in                      |    4 +-
 ovsdb/ovsdb-tool.c                                |    6 +-
 rhel/etc_init.d_openvswitch                       |    8 +-
 rhel/etc_sysconfig_network-scripts_ifdown-ovs     |   52 +-
 rhel/etc_sysconfig_network-scripts_ifup-ovs       |  338 ++--
 rhel/openvswitch-fedora.spec.in                   |   32 +-
 rhel/openvswitch-kmod-rhel6.spec.in               |    6 +-
 tests/bfd.at                                      |   12 +-
 tests/cfm.at                                      |   12 +-
 tests/classifier.at                               |    2 +-
 tests/dpif-netdev.at                              |    4 +-
 tests/interface-reconfigure.at                    | 1112 +++++------
 tests/lacp.at                                     |   12 +-
 tests/ofproto-dpif.at                             |  992 +++++-----
 tests/ofproto-macros.at                           |   12 +-
 tests/ofproto.at                                  |   40 +-
 tests/ovn.at                                      |   12 +-
 tests/ovs-macros.at                               |    4 +-
 tests/ovs-ofctl.at                                |   14 +-
 tests/ovs-router.at                               |    4 +-
 tests/ovsdb-client.at                             |   12 +-
 tests/ovsdb-cluster.at                            |  126 +-
 tests/ovsdb-condition.at                          |    6 +-
 tests/ovsdb-idl.at                                |    2 +-
 tests/ovsdb-log.at                                |   32 +-
 tests/ovsdb-monitor.at                            |   12 +-
 tests/ovsdb-mutation.at                           |    6 +-
 tests/ovsdb-query.at                              |    6 +-
 tests/ovsdb-row.at                                |    6 +-
 tests/ovsdb-schema.at                             |   22 +-
 tests/ovsdb-server.at                             |  170 +-
 tests/ovsdb-tool.at                               |   20 +-
 tests/pmd.at                                      |   92 +-
 tests/run-oftest                                  |   10 +-
 tests/run-ryu                                     |    6 +-
 tests/test-lib.c                                  |    2 +-
 tests/test-sflow.c                                |  120 +-
 tests/tunnel.at                                   |   26 +-
 tutorial/ovs-sandbox                              |   12 +-
 utilities/bugtool/ovs-bugtool-tc-class-show       |    6 +-
 utilities/nlmon.c                                 |    8 +-
 utilities/ovs-ctl.in                              |    2 +-
 utilities/ovs-sim.in                              |  202 +-
 vswitchd/bridge.c                                 |   10 +-
 vswitchd/vswitch.ovsschema                        |   20 +-
 vswitchd/vswitch.xml                              |    2 +-
 xenserver/openvswitch-xen.spec.in                 |    2 +-
 69 files changed, 3372 insertions(+), 3372 deletions(-)
 mode change 100755 => 100644 debian/openvswitch-switch.init
 mode change 100755 => 100644 debian/ovn-central.postinst
 mode change 100755 => 100644 debian/ovn-host.postinst
 mode change 100755 => 100644 rhel/etc_init.d_openvswitch
 mode change 100755 => 100644 rhel/etc_sysconfig_network-scripts_ifdown-ovs
 mode change 100755 => 100644 rhel/etc_sysconfig_network-scripts_ifup-ovs
 mode change 100755 => 100644 tests/run-oftest
 mode change 100755 => 100644 tests/run-ryu
 mode change 100755 => 100644 utilities/bugtool/ovs-bugtool-tc-class-show
 mode change 100755 => 100644 utilities/ovs-sim.in

diff --git a/Documentation/faq/issues.rst b/Documentation/faq/issues.rst
index f26eebd0d783..8a30dad37da0 100644
--- a/Documentation/faq/issues.rst
+++ b/Documentation/faq/issues.rst
@@ -301,14 +301,14 @@ network, but it doesn't work.  Why not?
 
         $ ovs-vsctl add-br br0
         $ ovs-vsctl add-port br0 int0 -- set Interface int0 type=internal
-	$ ip addr add 192.168.0.123/24 dev int0
+        $ ip addr add 192.168.0.123/24 dev int0
         $ ip link set int0 up
 
     Even more simply, you can take advantage of the internal port that every
     bridge has under the name of the bridge::
 
         $ ovs-vsctl add-br br0
-	$ ip addr add 192.168.0.123/24 dev br0
+        $ ip addr add 192.168.0.123/24 dev br0
         $ ip link set br0 up
 
     In more detail, a "tap" device is an interface between the Linux (or BSD)
diff --git a/Documentation/faq/vlan.rst b/Documentation/faq/vlan.rst
index 991bb3d4c7a4..13d3cde4502d 100644
--- a/Documentation/faq/vlan.rst
+++ b/Documentation/faq/vlan.rst
@@ -190,7 +190,7 @@ Q: Can I configure an IP address on a VLAN?
         $ ovs-vsctl add-port br0 eth0
         $ ovs-vsctl add-port br0 vlan9 tag=9 \
             -- set interface vlan9 type=internal
-	$ ip addr add 192.168.0.7/24 dev vlan9
+        $ ip addr add 192.168.0.7/24 dev vlan9
         $ ip link set vlan0 up
 
     See also the following question.
diff --git a/Documentation/group-selection-method-property.txt b/Documentation/group-selection-method-property.txt
index 5320f24b4146..29e8249af6ac 100644
--- a/Documentation/group-selection-method-property.txt
+++ b/Documentation/group-selection-method-property.txt
@@ -56,7 +56,7 @@ NTR_VENDOR_ID = 0x0000154d
 The following group property experimenter type defined by this extension.
 
 enum ntr_group_mod_subtype {
-	NTRT_SELECTION_METHOD = 1,
+        NTRT_SELECTION_METHOD = 1,
 };
 
 
diff --git a/Documentation/ref/ovs-sim.1.rst b/Documentation/ref/ovs-sim.1.rst
index 51a415fba069..4382598e1220 100644
--- a/Documentation/ref/ovs-sim.1.rst
+++ b/Documentation/ref/ovs-sim.1.rst
@@ -95,9 +95,9 @@ instances.
     The new sandbox starts out without any bridges. Use ``ovs-vsctl``
     in the context of the new sandbox to create a bridge, e.g.::
 
-	sim_add hv0           # Create sandbox hv0.
-	as hv0                # Set hv0 as default sandbox.
-	ovs-vsctl add-br br0  # Add bridge br0 inside hv0.
+        sim_add hv0           # Create sandbox hv0.
+        as hv0                # Set hv0 as default sandbox.
+        ovs-vsctl add-br br0  # Add bridge br0 inside hv0.
 
     The Open vSwitch instances that ``sim_add`` creates enable
     ``dummy`` devices.  This means that bridges and interfaces can be
@@ -191,9 +191,9 @@ one, and then connects the two through an interconnection network
 
     net_add n1
     for i in 0 1; do
-	sim_add hv$i
-	as hv$i ovs-vsctl add-br br0 -- add-port br0 vif$i
-	as hv$i net_attach n1 br0
+        sim_add hv$i
+        as hv$i ovs-vsctl add-br br0 -- add-port br0 vif$i
+        as hv$i net_attach n1 br0
     done
 
 Here’s an extended version that also starts OVN::
@@ -202,13 +202,13 @@ Here’s an extended version that also starts OVN::
     ovn-nbctl ls-add lsw0
     net_add n1
     for i in 0 1; do
-	sim_add hv$i
-	as hv$i
-	ovs-vsctl add-br br-phys
-	ovn_attach n1 br-phys 192.168.0.`expr $i + 1`
-	ovs-vsctl add-port br-int vif$i -- set Interface vif$i external-ids:iface-id=lp$i
-	ovn-nbctl lsp-add lsw0 lp$i
-	ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:00:0$i
+        sim_add hv$i
+        as hv$i
+        ovs-vsctl add-br br-phys
+        ovn_attach n1 br-phys 192.168.0.`expr $i + 1`
+        ovs-vsctl add-port br-int vif$i -- set Interface vif$i external-ids:iface-id=lp$i
+        ovn-nbctl lsp-add lsw0 lp$i
+        ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:00:0$i
     done
 
 Here’s a primitive OVN "scale test" (adjust the scale by changing
@@ -219,23 +219,23 @@ Here’s a primitive OVN "scale test" (adjust the scale by changing
     net_add n1
     ovn-nbctl ls-add br0
     for i in `seq $n`; do
-	(sim_add hv$i
-	as hv$i
-	ovs-vsctl add-br br-phys
-	y=$(expr $i / 256)
-	x=$(expr $i % 256)
-	ovn_attach n1 br-phys 192.168.$y.$x
-	ovs-vsctl add-port br-int vif$i -- set Interface vif$i external-ids:iface-id=lp$i) &
-	case $i in
-	    *50|*00) echo $i; wait ;;
-	esac
+        (sim_add hv$i
+        as hv$i
+        ovs-vsctl add-br br-phys
+        y=$(expr $i / 256)
+        x=$(expr $i % 256)
+        ovn_attach n1 br-phys 192.168.$y.$x
+        ovs-vsctl add-port br-int vif$i -- set Interface vif$i external-ids:iface-id=lp$i) &
+        case $i in
+            *50|*00) echo $i; wait ;;
+        esac
     done
     wait
     for i in `seq $n`; do
-	yy=$(printf %02x $(expr $i / 256))
-	xx=$(printf $02x $(expr $i % 256))
-	ovn-nbctl lsp-add br0 lp$i
-	ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:$yy:$xx
+        yy=$(printf %02x $(expr $i / 256))
+        xx=$(printf $02x $(expr $i % 256))
+        ovn-nbctl lsp-add br0 lp$i
+        ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:$yy:$xx
     done
 
 When the scale test has finished initializing, you can watch the
diff --git a/Documentation/tutorials/faucet.rst b/Documentation/tutorials/faucet.rst
index aaaffe7692ad..9696dfd0230b 100644
--- a/Documentation/tutorials/faucet.rst
+++ b/Documentation/tutorials/faucet.rst
@@ -302,14 +302,14 @@ information, run ``man ovs-vswitchd.conf.db`` and search for
 ``connection_mode``)::
 
   $ ovs-vsctl add-br br0 \
-	   -- set bridge br0 other-config:datapath-id=0000000000000001 \
-	   -- add-port br0 p1 -- set interface p1 ofport_request=1 \
-	   -- add-port br0 p2 -- set interface p2 ofport_request=2 \
-	   -- add-port br0 p3 -- set interface p3 ofport_request=3 \
-	   -- add-port br0 p4 -- set interface p4 ofport_request=4 \
-	   -- add-port br0 p5 -- set interface p5 ofport_request=5 \
-	   -- set-controller br0 tcp:127.0.0.1:6653 \
-	   -- set controller br0 connection-mode=out-of-band
+           -- set bridge br0 other-config:datapath-id=0000000000000001 \
+           -- add-port br0 p1 -- set interface p1 ofport_request=1 \
+           -- add-port br0 p2 -- set interface p2 ofport_request=2 \
+           -- add-port br0 p3 -- set interface p3 ofport_request=3 \
+           -- add-port br0 p4 -- set interface p4 ofport_request=4 \
+           -- add-port br0 p5 -- set interface p5 ofport_request=5 \
+           -- set-controller br0 tcp:127.0.0.1:6653 \
+           -- set controller br0 connection-mode=out-of-band
 
 .. note::
 
@@ -1290,40 +1290,40 @@ the ways that OVS tries to optimize megaflows.  Update
 
   dps:
       switch-1:
-	  dp_id: 0x1
-	  timeout: 3600
-	  arp_neighbor_timeout: 3600
-	  interfaces:
-	      1:
-		  native_vlan: 100
-		  acl_in: 1
-	      2:
-		  native_vlan: 100
-	      3:
-		  native_vlan: 100
-	      4:
-		  native_vlan: 200
-	      5:
-		  native_vlan: 200
+          dp_id: 0x1
+          timeout: 3600
+          arp_neighbor_timeout: 3600
+          interfaces:
+              1:
+                  native_vlan: 100
+                  acl_in: 1
+              2:
+                  native_vlan: 100
+              3:
+                  native_vlan: 100
+              4:
+                  native_vlan: 200
+              5:
+                  native_vlan: 200
   vlans:
       100:
-	  faucet_vips: ["10.100.0.254/24"]
+          faucet_vips: ["10.100.0.254/24"]
       200:
-	  faucet_vips: ["10.200.0.254/24"]
+          faucet_vips: ["10.200.0.254/24"]
   routers:
       router-1:
-	  vlans: [100, 200]
+          vlans: [100, 200]
   acls:
       1:
-	  - rule:
-	      dl_type: 0x800
-	      nw_proto: 6
-	      tcp_dst: 8080
-	      actions:
-		  allow: 0
-	  - rule:
-	      actions:
-		  allow: 1
+          - rule:
+              dl_type: 0x800
+              nw_proto: 6
+              tcp_dst: 8080
+              actions:
+                  allow: 0
+          - rule:
+              actions:
+                  allow: 1
 
 Then restart Faucet::
 
diff --git a/Documentation/tutorials/ovs-advanced.rst b/Documentation/tutorials/ovs-advanced.rst
index db8a53ebc141..fa9fdc7bf9bc 100644
--- a/Documentation/tutorials/ovs-advanced.rst
+++ b/Documentation/tutorials/ovs-advanced.rst
@@ -337,7 +337,7 @@ The output should look something like this::
     bridge("br0")
     -------------
      0. dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, priority 32768
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=1,dl_src=00:00:00:00:00:00/01:00:00:00:00:00,dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -370,9 +370,9 @@ The output should be::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. No match.
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=1,dl_src=00:00:00:00:00:00/01:00:00:00:00:00,dl_dst=01:80:c2:00:00:10/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -450,11 +450,11 @@ yet)::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=1, priority 99
-	resubmit(,2)
+        resubmit(,2)
      2. No match.
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=1,dl_src=00:00:00:00:00:00/01:00:00:00:00:00,dl_dst=00:00:00:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -477,12 +477,12 @@ table 2::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=2,vlan_tci=0x0000, priority 99
-	mod_vlan_vid:20
-	resubmit(,2)
+        mod_vlan_vid:20
+        resubmit(,2)
      2. No match.
-	drop
+        drop
 
     Final flow: in_port=2,dl_vlan=20,dl_vlan_pcp=0,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
     Megaflow: recirc_id=0,in_port=2,vlan_tci=0x0000,dl_src=00:00:00:00:00:00/01:00:00:00:00:00,dl_dst=00:00:00:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -503,9 +503,9 @@ The output shows the packet matching the default drop flow::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. priority 0
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=2,vlan_tci=0x0005,dl_src=00:00:00:00:00:00/01:00:00:00:00:00,dl_dst=00:00:00:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -584,15 +584,15 @@ particular flow that was added::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=1, priority 99
-	resubmit(,2)
+        resubmit(,2)
      2. priority 32768
-	learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
-	 -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=50:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
-	resubmit(,3)
+        learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
+         -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=50:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
+        resubmit(,3)
      3. No match.
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=1,vlan_tci=0x0014/0x1fff,dl_src=50:00:00:00:00:01,dl_dst=00:00:00:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
@@ -694,20 +694,20 @@ table 10) that the flow's destination was unknown::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=1, priority 99
-	resubmit(,2)
+        resubmit(,2)
      2. priority 32768
-	learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
-	 -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
-	resubmit(,3)
+        learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
+         -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
+        resubmit(,3)
      3. priority 50
-	resubmit(,10)
-	10. No match.
-		drop
-	resubmit(,4)
+        resubmit(,10)
+        10. No match.
+                drop
+        resubmit(,4)
      4. No match.
-	drop
+        drop
 
     Final flow: unchanged
     Megaflow: recirc_id=0,in_port=1,dl_vlan=20,dl_src=f0:00:00:00:00:01,dl_dst=90:00:00:00:00:01,dl_type=0x0000
@@ -745,21 +745,21 @@ the learned port ``p1`` into register ``0``::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=2,vlan_tci=0x0000, priority 99
-	mod_vlan_vid:20
-	resubmit(,2)
+        mod_vlan_vid:20
+        resubmit(,2)
      2. priority 32768
-	learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
-	 -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=90:00:00:00:00:01 priority=32768 actions=load:0x2->NXM_NX_REG0[0..15]
-	resubmit(,3)
+        learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
+         -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=90:00:00:00:00:01 priority=32768 actions=load:0x2->NXM_NX_REG0[0..15]
+        resubmit(,3)
      3. priority 50
-	resubmit(,10)
-	10. vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01, priority 32768
-		load:0x1->NXM_NX_REG0[0..15]
-	resubmit(,4)
+        resubmit(,10)
+        10. vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01, priority 32768
+                load:0x1->NXM_NX_REG0[0..15]
+        resubmit(,4)
      4. No match.
-	drop
+        drop
 
     Final flow: reg0=0x1,in_port=2,dl_vlan=20,dl_vlan_pcp=0,dl_src=90:00:00:00:00:01,dl_dst=f0:00:00:00:00:01,dl_type=0x0000
     Megaflow: recirc_id=0,in_port=2,vlan_tci=0x0000,dl_src=90:00:00:00:00:01,dl_dst=f0:00:00:00:00:01,dl_type=0x0000
@@ -781,20 +781,20 @@ executed in table 10, that the destination has now been learned::
     bridge("br0")
     -------------
      0. priority 0
-	resubmit(,1)
+        resubmit(,1)
      1. in_port=1, priority 99
-	resubmit(,2)
+        resubmit(,2)
      2. priority 32768
-	learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
-	 -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
-	resubmit(,3)
+        learn(table=10,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15])
+         -> table=10 vlan_tci=0x0014/0x0fff,dl_dst=f0:00:00:00:00:01 priority=32768 actions=load:0x1->NXM_NX_REG0[0..15]
+        resubmit(,3)
      3. priority 50
-	resubmit(,10)
-	10. vlan_tci=0x0014/0x0fff,dl_dst=90:00:00:00:00:01, priority 32768
-		load:0x2->NXM_NX_REG0[0..15]
-	resubmit(,4)
+        resubmit(,10)
+        10. vlan_tci=0x0014/0x0fff,dl_dst=90:00:00:00:00:01, priority 32768
+                load:0x2->NXM_NX_REG0[0..15]
+        resubmit(,4)
      4. No match.
-	drop
+        drop
 
 
 Implementing Table 4: Output Processing
diff --git a/NEWS b/NEWS
index 484c6dc3dfa4..7f6589a46878 100644
--- a/NEWS
+++ b/NEWS
@@ -933,7 +933,7 @@ v1.8.0 - 26 Feb 2013
         were allowed.)
       - Allow support for arbitrary Ethernet masks.  (Previously, only
         the multicast bit in the destination address could be individually
-	masked.)
+        masked.)
       - New field OXM_OF_METADATA, to align with OpenFlow 1.1.
       - The OFPST_QUEUE request now reports an error if a specified port or
         queue does not exist, or for requests for a specific queue on all
diff --git a/Vagrantfile b/Vagrantfile
index 28e9219b8c72..0192f66ea0c8 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -20,15 +20,15 @@ $bootstrap_debian = <<SCRIPT
 aptitude -y update
 aptitude -y upgrade
 aptitude -y install -R \
-		build-essential dpkg-dev lintian devscripts fakeroot \
-		debhelper dh-autoreconf uuid-runtime \
-		autoconf automake libtool \
-		python-all python-twisted-core python-twisted-conch \
-		xdg-utils groff graphviz netcat curl \
-		wget python-six ethtool \
-		libcap-ng-dev libssl-dev python-dev openssl \
-		python-pyftpdlib python-flake8 python-tftpy \
-		linux-headers-`uname -r`
+                build-essential dpkg-dev lintian devscripts fakeroot \
+                debhelper dh-autoreconf uuid-runtime \
+                autoconf automake libtool \
+                python-all python-twisted-core python-twisted-conch \
+                xdg-utils groff graphviz netcat curl \
+                wget python-six ethtool \
+                libcap-ng-dev libssl-dev python-dev openssl \
+                python-pyftpdlib python-flake8 python-tftpy \
+                linux-headers-`uname -r`
 SCRIPT
 
 $bootstrap_centos = <<SCRIPT
diff --git a/debian/copyright.in b/debian/copyright.in
index a15f4ddbf799..9ad00340f6bb 100644
--- a/debian/copyright.in
+++ b/debian/copyright.in
@@ -1,6 +1,6 @@
 The original sources for this package can be found at:
 
-	http://openvswitch.org/
+        http://openvswitch.org/
 
 Upstream Authors (from AUTHORS):
 
@@ -8,22 +8,22 @@ Upstream Authors (from AUTHORS):
 
 Upstream Copyright Holders:
 
-	Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
-	Copyright (c) 2010 Jean Tourrilhes - HP-Labs.
-	Copyright (c) 2008,2009,2010 Citrix Systems, Inc.
-	and authors listed above.
-	Copyright (c) 2011 Gaetano Catalli
-	Copyright (C) 2000-2003 Geoffrey Wossum (gwossum at acm.org)
-	Copyright (C) 2000 The NetBSD Foundation, Inc.
-	Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
-	Copyright (c) 1982, 1986, 1990, 1993 The Regents of the University of California.
-	Copyright (c) 2008, 2012 Vincent Bernat <bernat at luffy.cx>
-	Copyright (c) 2014 Michael Chapman
-	Copyright (c) 2014 WindRiver, Inc.
-	Copyright (c) 2014 Avaya, Inc.
-	Copyright (c) 2001 Daniel Hartmeier
-	Copyright (c) 2002 - 2008 Henning Brauer
-	Copyright (c) 2012 Gleb Smirnoff <glebius at FreeBSD.org>
+        Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+        Copyright (c) 2010 Jean Tourrilhes - HP-Labs.
+        Copyright (c) 2008,2009,2010 Citrix Systems, Inc.
+        and authors listed above.
+        Copyright (c) 2011 Gaetano Catalli
+        Copyright (C) 2000-2003 Geoffrey Wossum (gwossum at acm.org)
+        Copyright (C) 2000 The NetBSD Foundation, Inc.
+        Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+        Copyright (c) 1982, 1986, 1990, 1993 The Regents of the University of California.
+        Copyright (c) 2008, 2012 Vincent Bernat <bernat at luffy.cx>
+        Copyright (c) 2014 Michael Chapman
+        Copyright (c) 2014 WindRiver, Inc.
+        Copyright (c) 2014 Avaya, Inc.
+        Copyright (c) 2001 Daniel Hartmeier
+        Copyright (c) 2002 - 2008 Henning Brauer
+        Copyright (c) 2012 Gleb Smirnoff <glebius at FreeBSD.org>
 
 License:
 
@@ -31,15 +31,15 @@ License:
   GNU Lesser General Public License version 2.1 only
   with the exception clause below as a pre-amble.
 
-	xenserver/etc_xensource_scripts_vif
-	xenserver/opt_xensource_libexec_InterfaceReconfigure.py
-	xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py
-	xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
-	xenserver/opt_xensource_libexec_interface-reconfigure
-	xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
+        xenserver/etc_xensource_scripts_vif
+        xenserver/opt_xensource_libexec_InterfaceReconfigure.py
+        xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py
+        xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
+        xenserver/opt_xensource_libexec_interface-reconfigure
+        xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
 
-	* These components are only distributed in the source package.
-	  They do not appear in any binary packages.
+        * These components are only distributed in the source package.
+          They do not appear in any binary packages.
 
   On Debian systems, the complete text of the
   GNU Lesser General Public License version 2.1 can be found in
@@ -64,12 +64,12 @@ License:
 * The following components are licensed under the
   GNU Lesser General Public License version 2.1.
 
-	utilities/bugtool/ovs-bugtool
-	utilities/bugtool/ovs-bugtool-*
-	utilities/bugtool/plugins/kernel-info/openvswitch.xml
-	utilities/bugtool/plugins/network-status/openvswitch.xml
-	utilities/bugtool/plugins/system-configuration.xml
-	utilities/bugtool/plugins/system-configuration/openvswitch.xml
+        utilities/bugtool/ovs-bugtool
+        utilities/bugtool/ovs-bugtool-*
+        utilities/bugtool/plugins/kernel-info/openvswitch.xml
+        utilities/bugtool/plugins/network-status/openvswitch.xml
+        utilities/bugtool/plugins/system-configuration.xml
+        utilities/bugtool/plugins/system-configuration/openvswitch.xml
 
   On Debian systems, the complete text of the
   GNU Lesser General Public License version 2.1 can be found in
@@ -78,7 +78,7 @@ License:
 * The following component is licensed under the GNU General Public License
   version 2.
 
-	datapath/
+        datapath/
 
   On Debian systems, the complete text of the GNU General Public License
   version 2 can be found in `/usr/share/common-licenses/GPL-2'
@@ -86,25 +86,25 @@ License:
 * The following file is licensed under the GNU General Public License
   version 2.
 
-	build-aux/cccl
+        build-aux/cccl
 
 * The following files are licensed under the 2-clause BSD license.
 
-	lib/getopt_long.c
-	include/windows/getopt.h
-	datapath-windows/ovsext/Conntrack-tcp.c
-	lib/conntrack-tcp.c
+        lib/getopt_long.c
+        include/windows/getopt.h
+        datapath-windows/ovsext/Conntrack-tcp.c
+        lib/conntrack-tcp.c
 
 * The following files are licensed under the 3-clause BSD-license
 
-	include/windows/netinet/icmp6.h
-	include/windows/netinet/ip6.h
-	lib/strsep.c
+        include/windows/netinet/icmp6.h
+        include/windows/netinet/ip6.h
+        lib/strsep.c
 
 * The following components are dual-licensed under the
   GNU General Public License version 2 and the Apache License Version 2.0.
 
-	datapath/linux/compat/include/linux/openvswitch.h
+        datapath/linux/compat/include/linux/openvswitch.h
 
   On Debian systems, the complete text of the GNU General Public License
   version 2 can be found in `/usr/share/common-licenses/GPL-2'.
@@ -114,12 +114,12 @@ License:
 * The following components are licensed under the terms of either the
   Sun Industry Standard Source License 1.1 or the InMon sFlow License:
 
-	lib/sflow.h
-	lib/sflow_agent.c
-	lib/sflow_api.h
-	lib/sflow_poller.c
-	lib/sflow_receiver.c
-	lib/sflow_sampler.c
+        lib/sflow.h
+        lib/sflow_agent.c
+        lib/sflow_api.h
+        lib/sflow_poller.c
+        lib/sflow_receiver.c
+        lib/sflow_sampler.c
 
   These licenses are available, respectively, the following URLs:
 
@@ -131,7 +131,7 @@ License:
 
 * The following components are licensed for use as desired without restriction:
 
-	lib/crc32c.c
+        lib/crc32c.c
 
 * lib/ovs.tmac in the source distribution, and manpages in the
   binaries, includes troff macros from groff 1.21 that contain the
@@ -491,7 +491,7 @@ ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT.  IF YOU DO NOT AGREE T
 BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MAY NOT REPRODUCE OR IN ANY WAY UTILIZE
 THE SOFTWARE OR THE DOCUMENTATION OR THE SPECIFICATIONS.
 
-1.	Definitions.
+1.      Definitions.
 
 "Documentation" means the user manuals, training materials, and operating materials, if any,
 InMon provides to Licensee under this Agreement.
@@ -519,9 +519,9 @@ InMon at: http://www.sflow.org.
 
 "Trademark" means InMon's "sFlow(R)" trademark.
 
-2.	License Grant.
+2.      License Grant.
 
-2.1	Software, Documentation and Specifications License Grant.  InMon hereby grants to
+2.1     Software, Documentation and Specifications License Grant.  InMon hereby grants to
 Licensee, under all of InMon's Intellectual Property Rights therein, a perpetual (subject
 to InMon's termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
 transferable, sublicensable license, to:  (i) use and reproduce the Software, the
@@ -531,13 +531,13 @@ Specifications have been implemented, on Licensee Hardware and Products, and (v)
 any Products that include the Software, the Documentation, or software in which the
 Specifications have been implemented.
 
-2.2	Trademark License.  InMon hereby grants to Licensee a perpetual (subject to InMon's
+2.2     Trademark License.  InMon hereby grants to Licensee a perpetual (subject to InMon's
 termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
 transferable, sublicensable license to use the Trademark on or in connection with the
 Software, the Documentation, the Specifications and any software that implements the
 Specifications.
 
-2.3	Restrictions.  Licensee agrees that it will not use the Software in a way
+2.3     Restrictions.  Licensee agrees that it will not use the Software in a way
 inconsistent with the license granted in Section 2.1.  Further, Licensee agrees that, in
 exercising its rights under the license granted to it in this Agreement, Licensee will:
 (i) strictly adhere to and fully comply with the Specifications; (ii) use the Trademark,
@@ -558,7 +558,7 @@ terminate this Agreement as provided under paragraph 7 below and pursue any and
 actions and remedies as it deems necessary, including, but not limited to breach of
 contract.
 
-3.	Ownership.  Except for the license expressly granted in Section 2, Inmon hereby
+3.      Ownership.  Except for the license expressly granted in Section 2, Inmon hereby
 retains all right, title, and interest in and to the Trademark and all its Intellectual
 Property Rights in the Software, the Documentation and the Specifications.  Licensee
 obtains no rights hereunder in the Trademark, Software, Documentation or Specifications by
@@ -567,18 +567,18 @@ Documentation and Specifications are being licensed and not sold under this Agre
 that this Agreement does not transfer title in the Trademark, Software, Documentation or
 Specifications, or any copy thereof, to Licensee.
 
-4.	Support.  Inmon shall have no obligation under this Agreement to (a) supply
+4.      Support.  Inmon shall have no obligation under this Agreement to (a) supply
 maintenance or support, bug fixes or error corrections to the Licensed Software,
 (b) supply future versions of the Licensed Software or (c) provide Licensed Software
 development tools to Licensee.
 
-5.	Warranty.  INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR
+5.      Warranty.  INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR
 STATUTORY, WITH RESPECT TO THE TRADEMARK, THE SOFTWARE, THE DOCUMENTATION, THE
 SPECIFICATIONS. OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF ANY INTELLECTUAL
 PROPERTY RIGHTS.
 
-6.	Limitation of Liability.  IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE
+6.      Limitation of Liability.  IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE
 LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT OR EXEMPLARY DAMAGES WHATSOEVER,
 WHETHER RELATED TO OR ARISING OUT OF THIS AGREEMENT, THE TRADEMARK, THE SOFTWARE, THE
 DOCUMENTATION, THE SPECIFICATIONS, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, DAMAGES FOR
@@ -587,7 +587,7 @@ GOODS OR SERVICES OR FOR ANY CLAIM OR DEMAND AGAINST LICENSEE BY ANY OTHER PARTY
 PECUNIARY LOSS, EVEN IF INMON HAS BEEN ADVISED OF OR KNOWS OF THE POSSIBILITY OF SUCH
 DAMAGES.
 
-7.	Term and Termination.  The term of this Agreement will begin on the Effective Date,
+7.      Term and Termination.  The term of this Agreement will begin on the Effective Date,
 which shall be deemed to be the date of delivery of the Software and/or Documentation and/or
 Specifications to Licensee, and shall continue indefinitely unless and until terminated by
 Licensee's giving written notice of termination to InMon, or by InMon pursuant to InMon's
@@ -597,58 +597,58 @@ including the right to distribute Products that incorporate the Software or Docu
 or that implement the Specifications.  The rights and obligations contained in Sections 1,
 3, 5, 6, 7, and 8 shall survive any termination of this Agreement.
 
-8.	General Provisions.
+8.      General Provisions.
 
-8.1	Assignment.  This Agreement shall be binding upon and inure to the benefit of the
+8.1     Assignment.  This Agreement shall be binding upon and inure to the benefit of the
 parties hereto and their permitted successors and permitted assigns.  InMon will have the
 right to assign this Agreement without notice to Licensee.  Licensee may assign or transfer
 (whether by merger, operation of law or in any other manner) any of its rights or delegate
 any of its obligations hereunder without the prior written consent of InMon, provided the
 assignee assumes in writing all of Licensee's obligations hereunder.
 
-8.2	Notices.  All notices permitted or required under this Agreement shall be in
+8.2     Notices.  All notices permitted or required under this Agreement shall be in
 writing and shall be delivered in person or mailed by first class, registered or certified
 mail, postage prepaid, to the address of the party specified in this Agreement or such
 other address as either party may specify in writing.  Such notice shall be deemed to have
 been given upon receipt.
 
-8.3	Non-Waiver.  No term or provision hereof shall be deemed waived, and no breach
+8.3     Non-Waiver.  No term or provision hereof shall be deemed waived, and no breach
 excused, unless such waiver or consent shall be in writing and signed by the party claimed
 to have waived or consented.  Any consent or waiver, whether express or implied, shall not
 constitute a consent or waiver of, or excuse for any separate, different or subsequent
 breach.
 
-8.4	Independent Contractor.  The parties' relationship shall be solely that of
+8.4     Independent Contractor.  The parties' relationship shall be solely that of
 independent contractors, and nothing contained in this Agreement shall be construed to make
 either party an agent, partner, representative or principal of the other for any purpose.
 
-8.5	Choice of Law and Forum.  This Agreement shall be governed by and construed under
+8.5     Choice of Law and Forum.  This Agreement shall be governed by and construed under
 the laws of the State of California, without giving effect to such state's conflict of laws
 principles.  The parties hereby submit to the personal jurisdiction of, and agree that any
 legal proceeding with respect to or arising under this Agreement shall be brought in, the
 United States District Court for the Northern District of California or the state courts
 of the State of California for the County of San Francisco.
 
-8.6	U.S. Government Licenses.  The Software and Documentation are considered a
+8.6     U.S. Government Licenses.  The Software and Documentation are considered a
 "commercial item" as that term is defined at 48 C.F.R 2.101, or "commercial computer
 software" and "commercial computer software documentation" as such terms are used in
 48 C.F.R 12.212 of the Federal Acquisition Regulations and its successors, and
 48 C.F.R. 227.7202 of the DoD FAR Supplement and its successors.
 
-8.7	Severability.  If any provision of this Agreement is held to be unenforceable under
+8.7     Severability.  If any provision of this Agreement is held to be unenforceable under
 applicable law, then such provision shall be excluded from this Agreement and the balance
 of this Agreement shall be interpreted as if such provision were so excluded and shall be
 enforceable in accordance with its terms.  The court in its discretion may substitute for
 the excluded provision an enforceable provision which in economic substance reasonably
 approximates the excluded provision.
 
-8.8	Compliance With Law.  Licensee shall comply with all applicable laws and
+8.8     Compliance With Law.  Licensee shall comply with all applicable laws and
 regulations (including privacy laws and regulations) having application to or governing its
  use and/or operation of the Software and agrees to indemnify and hold InMon harmless from
 and against any claims, damages, losses or obligations suffered or incurred by InMon
 arising from its failure to so comply.
 
-8.9	Entire Agreement; Amendment.  This Agreement constitutes the final, complete and
+8.9     Entire Agreement; Amendment.  This Agreement constitutes the final, complete and
 entire agreement between the parties with respect to the subject matter hereof, and
 supersedes any previous proposals, negotiations, agreements, or arrangements, whether
 verbal or written, made between the parties with respect to such subject matter.  This
diff --git a/debian/openvswitch-switch.README.Debian b/debian/openvswitch-switch.README.Debian
index b38662be0e8d..7556844a1183 100644
--- a/debian/openvswitch-switch.README.Debian
+++ b/debian/openvswitch-switch.README.Debian
@@ -6,36 +6,36 @@ Open vSwitch kernel module.  There are multiple ways to obtain one.
 In order of increasing manual effort, these are:
 
        * Use a Linux kernel 3.3 or later, which has an integrated Open
-	 vSwitch kernel module.
+         vSwitch kernel module.
 
-	 The upstream Linux kernel module lacks a few features that
-	 are in the third-party module.  For details, please see the
-	 FAQ, "What features are not available in the Open vSwitch
-	 kernel datapath that ships as part of the upstream Linux
-	 kernel?".
+         The upstream Linux kernel module lacks a few features that
+         are in the third-party module.  For details, please see the
+         FAQ, "What features are not available in the Open vSwitch
+         kernel datapath that ships as part of the upstream Linux
+         kernel?".
 
        * Install the "openvswitch-datapath-dkms" Debian package that
-	 you built earlier.  This should automatically build and
-	 install the Open vSwitch kernel module for your running
-	 kernel.
+         you built earlier.  This should automatically build and
+         install the Open vSwitch kernel module for your running
+         kernel.
 
-	 This option requires that you have a compiler and toolchain
-	 installed on the machine where you run Open vSwitch, which
-	 may be unacceptable in some production server environments.
+         This option requires that you have a compiler and toolchain
+         installed on the machine where you run Open vSwitch, which
+         may be unacceptable in some production server environments.
 
        * Install the "openvswitch-datapath-source" Debian package, use
-	 "module-assistant" to build a Debian package of the Open
-	 vSwitch kernel module for your kernel, and then install that
-	 Debian package.
-
-	 You can install the kernel module Debian packages that you
-	 build this way on the same machine where you built it or on
-	 another machine or machines, which means that you don't
-	 necessarily have to have any build infrastructure on the
-	 machines where you use the kernel module.
-
-	 /usr/share/doc/openvswitch-datapath-source/README.Debian has
-	 details on the build process.
+         "module-assistant" to build a Debian package of the Open
+         vSwitch kernel module for your kernel, and then install that
+         Debian package.
+
+         You can install the kernel module Debian packages that you
+         build this way on the same machine where you built it or on
+         another machine or machines, which means that you don't
+         necessarily have to have any build infrastructure on the
+         machines where you use the kernel module.
+
+         /usr/share/doc/openvswitch-datapath-source/README.Debian has
+         details on the build process.
 
        * Build and install the kernel module by hand.
 
diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
old mode 100755
new mode 100644
index 5c7c08b3a1f9..e4bc692e5625
--- a/debian/openvswitch-switch.init
+++ b/debian/openvswitch-switch.init
@@ -46,26 +46,26 @@ load_kmod () {
 
 start () {
     if ovs_ctl load-kmod; then
-	:
+        :
     else
-	echo "Module has probably not been built for this kernel."
-	if ! test -d /usr/share/doc/openvswitch-datapath-source; then
-	    echo "Install the openvswitch-datapath-source package, then read"
-	else
+        echo "Module has probably not been built for this kernel."
+        if ! test -d /usr/share/doc/openvswitch-datapath-source; then
+            echo "Install the openvswitch-datapath-source package, then read"
+        else
             echo "For instructions, read"
-	fi
-	echo "/usr/share/doc/openvswitch-datapath-source/README.Debian"
+        fi
+        echo "/usr/share/doc/openvswitch-datapath-source/README.Debian"
 
-	if test X"$OVS_MISSING_KMOD_OK" = Xyes; then
-	    # We're being invoked by the package postinst.  Do not
-	    # fail package installation just because the kernel module
-	    # is not available.
-	    exit 0
-	fi
+        if test X"$OVS_MISSING_KMOD_OK" = Xyes; then
+            # We're being invoked by the package postinst.  Do not
+            # fail package installation just because the kernel module
+            # is not available.
+            exit 0
+        fi
     fi
     set ovs_ctl ${1-start} --system-id=random
     if test X"$FORCE_COREFILES" != X; then
-	set "$@" --force-corefiles="$FORCE_COREFILES"
+        set "$@" --force-corefiles="$FORCE_COREFILES"
     fi
     set "$@" $OVS_CTL_OPTS
     "$@" || exit $?
@@ -117,7 +117,7 @@ restart () {
 case $1 in
     start)
         start
-	;;
+        ;;
     stop | force-stop)
         stop
         ;;
diff --git a/debian/openvswitch-switch.logrotate b/debian/openvswitch-switch.logrotate
index 802d3656631d..1ccf6f50791d 100644
--- a/debian/openvswitch-switch.logrotate
+++ b/debian/openvswitch-switch.logrotate
@@ -6,11 +6,11 @@
     missingok
     rotate 30
     postrotate
-	# Tell Open vSwitch daemons to reopen their log files
-	if [ -d /var/run/openvswitch ]; then
+        # Tell Open vSwitch daemons to reopen their log files
+        if [ -d /var/run/openvswitch ]; then
             for ctl in /var/run/openvswitch/*.ctl; do
                 ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
             done
-	fi
+        fi
     endscript
 }
diff --git a/debian/ovn-central.postinst b/debian/ovn-central.postinst
old mode 100755
new mode 100644
index bdf5c4a8b79c..10e07ece46f3
--- a/debian/ovn-central.postinst
+++ b/debian/ovn-central.postinst
@@ -20,19 +20,19 @@ set -e
 
 case "$1" in
     configure)
-	DEFAULT=/etc/default/ovn-central
-	TEMPLATE=/usr/share/ovn/central/default.template
-	if ! test -e $DEFAULT; then
-	    cp $TEMPLATE $DEFAULT
-	else
+        DEFAULT=/etc/default/ovn-central
+        TEMPLATE=/usr/share/ovn/central/default.template
+        if ! test -e $DEFAULT; then
+            cp $TEMPLATE $DEFAULT
+        else
             for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
             do
                 if ! grep $var $DEFAULT >/dev/null 2>&1; then
-	            echo >> $DEFAULT
-	            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+                    echo >> $DEFAULT
+                    sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
                 fi
             done
-	fi
+        fi
         ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/ovn-host.postinst b/debian/ovn-host.postinst
old mode 100755
new mode 100644
index 05e80ad1f71d..4b3edeb75499
--- a/debian/ovn-host.postinst
+++ b/debian/ovn-host.postinst
@@ -20,19 +20,19 @@ set -e
 
 case "$1" in
     configure)
-	DEFAULT=/etc/default/ovn-host
-	TEMPLATE=/usr/share/ovn/host/default.template
-	if ! test -e $DEFAULT; then
-	    cp $TEMPLATE $DEFAULT
-	else
+        DEFAULT=/etc/default/ovn-host
+        TEMPLATE=/usr/share/ovn/host/default.template
+        if ! test -e $DEFAULT; then
+            cp $TEMPLATE $DEFAULT
+        else
             for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
             do
                 if ! grep $var $DEFAULT >/dev/null 2>&1; then
-	            echo >> $DEFAULT
-	            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+                    echo >> $DEFAULT
+                    sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
                 fi
             done
-	fi
+        fi
         ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/include/openvswitch/rconn.h b/include/openvswitch/rconn.h
index 176c5f641ed4..5dc988af1dda 100644
--- a/include/openvswitch/rconn.h
+++ b/include/openvswitch/rconn.h
@@ -48,8 +48,8 @@ struct vconn;
 struct rconn_packet_counter;
 
 struct rconn *rconn_create(int inactivity_probe_interval,
-			   int max_backoff, uint8_t dscp,
-			   uint32_t allowed_versions);
+                           int max_backoff, uint8_t dscp,
+                           uint32_t allowed_versions);
 void rconn_set_dscp(struct rconn *rc, uint8_t dscp);
 uint32_t rconn_get_allowed_versions(const struct rconn *);
 uint8_t rconn_get_dscp(const struct rconn *rc);
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 818b184ee2ef..9390fff68dac 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -856,15 +856,15 @@ pmd_info_show_stats(struct ds *reply,
     }
 
     ds_put_format(reply,
-                  "\tpackets received: %"PRIu64"\n"
-                  "\tpacket recirculations: %"PRIu64"\n"
-                  "\tavg. datapath passes per packet: %.02f\n"
-                  "\temc hits: %"PRIu64"\n"
-                  "\tmegaflow hits: %"PRIu64"\n"
-                  "\tavg. subtable lookups per megaflow hit: %.02f\n"
-                  "\tmiss with success upcall: %"PRIu64"\n"
-                  "\tmiss with failed upcall: %"PRIu64"\n"
-                  "\tavg. packets per output batch: %.02f\n",
+                  "  packets received: %"PRIu64"\n"
+                  "  packet recirculations: %"PRIu64"\n"
+                  "  avg. datapath passes per packet: %.02f\n"
+                  "  emc hits: %"PRIu64"\n"
+                  "  megaflow hits: %"PRIu64"\n"
+                  "  avg. subtable lookups per megaflow hit: %.02f\n"
+                  "  miss with success upcall: %"PRIu64"\n"
+                  "  miss with failed upcall: %"PRIu64"\n"
+                  "  avg. packets per output batch: %.02f\n",
                   total_packets, stats[PMD_STAT_RECIRC],
                   passes_per_pkt, stats[PMD_STAT_EXACT_HIT],
                   stats[PMD_STAT_MASKED_HIT], lookups_per_hit,
@@ -876,8 +876,8 @@ pmd_info_show_stats(struct ds *reply,
     }
 
     ds_put_format(reply,
-                  "\tidle cycles: %"PRIu64" (%.02f%%)\n"
-                  "\tprocessing cycles: %"PRIu64" (%.02f%%)\n",
+                  "  idle cycles: %"PRIu64" (%.02f%%)\n"
+                  "  processing cycles: %"PRIu64" (%.02f%%)\n",
                   stats[PMD_CYCLES_ITER_IDLE],
                   stats[PMD_CYCLES_ITER_IDLE] / (double) total_cycles * 100,
                   stats[PMD_CYCLES_ITER_BUSY],
@@ -888,12 +888,12 @@ pmd_info_show_stats(struct ds *reply,
     }
 
     ds_put_format(reply,
-                  "\tavg cycles per packet: %.02f (%"PRIu64"/%"PRIu64")\n",
+                  "  avg cycles per packet: %.02f (%"PRIu64"/%"PRIu64")\n",
                   total_cycles / (double) total_packets,
                   total_cycles, total_packets);
 
     ds_put_format(reply,
-                  "\tavg processing cycles per packet: "
+                  "  avg processing cycles per packet: "
                   "%.02f (%"PRIu64"/%"PRIu64")\n",
                   stats[PMD_CYCLES_ITER_BUSY] / (double) total_packets,
                   stats[PMD_CYCLES_ITER_BUSY], total_packets);
@@ -991,7 +991,7 @@ pmd_info_show_rxq(struct ds *reply, struct dp_netdev_pmd_thread *pmd)
         uint64_t total_cycles = 0;
 
         ds_put_format(reply,
-                      "pmd thread numa_id %d core_id %u:\n\tisolated : %s\n",
+                      "pmd thread numa_id %d core_id %u:\n  isolated : %s\n",
                       pmd->numa_id, pmd->core_id, (pmd->isolated)
                                                   ? "true" : "false");
 
@@ -1011,9 +1011,9 @@ pmd_info_show_rxq(struct ds *reply, struct dp_netdev_pmd_thread *pmd)
             for (int j = 0; j < PMD_RXQ_INTERVAL_MAX; j++) {
                 proc_cycles += dp_netdev_rxq_get_intrvl_cycles(rxq, j);
             }
-            ds_put_format(reply, "\tport: %-16s\tqueue-id: %2d", name,
+            ds_put_format(reply, "  port: %-16s  queue-id: %2d", name,
                           netdev_rxq_get_queue_id(list[i].rxq->rx));
-            ds_put_format(reply, "\tpmd usage: ");
+            ds_put_format(reply, "  pmd usage: ");
             if (total_cycles) {
                 ds_put_format(reply, "%2"PRIu64"",
                               proc_cycles * 100 / total_cycles);
diff --git a/lib/dpif.c b/lib/dpif.c
index 3c7d3b8a2901..f6a7f6a72e18 100644
--- a/lib/dpif.c
+++ b/lib/dpif.c
@@ -369,7 +369,7 @@ do_open(const char *name, const char *type, bool create, struct dpif **dpifp)
                 netdev_close(netdev);
             } else {
                 VLOG_WARN("could not open netdev %s type %s: %s",
-			  dpif_port.name, dpif_port.type, ovs_strerror(err));
+                          dpif_port.name, dpif_port.type, ovs_strerror(err));
             }
         }
     } else {
@@ -1176,7 +1176,7 @@ dpif_execute_helper_cb(void *aux_, struct dp_packet_batch *packets_,
         if (!aux->meter_action) {
             aux->meter_action = action;
         }
-	break;
+        break;
 
     case OVS_ACTION_ATTR_CT:
     case OVS_ACTION_ATTR_OUTPUT:
diff --git a/lib/meta-flow.xml b/lib/meta-flow.xml
index 9ad15b3d987e..0b5c1d008737 100644
--- a/lib/meta-flow.xml
+++ b/lib/meta-flow.xml
@@ -143,14 +143,14 @@
     <dt><dfn>Exact match</dfn>, e.g. <code>nw_src=10.1.2.3</code></dt>
     <dd>
       <p>
-	Only a particular value of the field is matched; for example, only one
-	particular source IP address.  Exact matches are written as
-	<code><var>field</var>=<var>value</var></code>.  The forms accepted for
-	<var>value</var> depend on the field.
+        Only a particular value of the field is matched; for example, only one
+        particular source IP address.  Exact matches are written as
+        <code><var>field</var>=<var>value</var></code>.  The forms accepted for
+        <var>value</var> depend on the field.
       </p>
 
       <p>
-	All fields support exact matches.
+        All fields support exact matches.
       </p>
     </dd>
 
@@ -159,14 +159,14 @@
     </dt>
     <dd>
       <p>
-	Specific bits in the field must have specified values; for example,
-	only source IP addresses in a particular subnet.  Bitwise matches are
-	written as
-	<code><var>field</var>=<var>value</var>/<var>mask</var></code>, where
-	<var>value</var> and <var>mask</var> take one of the forms accepted for
-	an exact match on <var>field</var>.  Some fields accept other forms for
-	bitwise matches; for example, <code>nw_src=10.1.0.0/255.255.0.0</code>
-	may also be written <code>nw_src=10.1.0.0/16</code>.
+        Specific bits in the field must have specified values; for example,
+        only source IP addresses in a particular subnet.  Bitwise matches are
+        written as
+        <code><var>field</var>=<var>value</var>/<var>mask</var></code>, where
+        <var>value</var> and <var>mask</var> take one of the forms accepted for
+        an exact match on <var>field</var>.  Some fields accept other forms for
+        bitwise matches; for example, <code>nw_src=10.1.0.0/255.255.0.0</code>
+        may also be written <code>nw_src=10.1.0.0/16</code>.
       </p>
 
       <p>
@@ -186,17 +186,17 @@
     <dt><dfn>Wildcard</dfn>, e.g. ``any <code>nw_src</code>''</dt>
     <dd>
       <p>
-	The value of the field is not constrained.  Wildcarded fields may be
-	written as <code><var>field</var>=*</code>, although it is unusual to
-	mention them at all.  (When specifying a wildcard explicitly in a
-	command invocation, be sure to using quoting to protect against shell
-	expansion.)
+        The value of the field is not constrained.  Wildcarded fields may be
+        written as <code><var>field</var>=*</code>, although it is unusual to
+        mention them at all.  (When specifying a wildcard explicitly in a
+        command invocation, be sure to using quoting to protect against shell
+        expansion.)
       </p>
 
       <p>
-	There is a tiny difference between wildcarding a field and not
-	specifying any match on a field: wildcarding a field requires
-	satisfying the field's prerequisites.
+        There is a tiny difference between wildcarding a field and not
+        specifying any match on a field: wildcarding a field requires
+        satisfying the field's prerequisites.
       </p>
     </dd>
   </dl>
@@ -211,13 +211,13 @@
     8080}''</dt>
     <dd>
       <p>
-	The value of a field is one of a specified set of values; for
-	example, the TCP destination port is 80, 443, or 8080.
+        The value of a field is one of a specified set of values; for
+        example, the TCP destination port is 80, 443, or 8080.
       </p>
 
       <p>
-	For matches used in flows (see <cite>Flows</cite>, below), multiple
-	flows can simulate set matches.
+        For matches used in flows (see <cite>Flows</cite>, below), multiple
+        flows can simulate set matches.
       </p>
     </dd>
 
@@ -225,14 +225,14 @@
     1999''</dt>
     <dd>
       <p>
-	The value of the field must lie within a numerical range, for
-	example, TCP destination ports between 1000 and 1999.
+        The value of the field must lie within a numerical range, for
+        example, TCP destination ports between 1000 and 1999.
       </p>
 
       <p>
-	Range matches can be expressed as a collection of bitwise matches.  For
-	example, suppose that the goal is to match TCP source ports 1000 to
-	1999, inclusive.  The binary representations of 1000 and 1999 are:
+        Range matches can be expressed as a collection of bitwise matches.  For
+        example, suppose that the goal is to match TCP source ports 1000 to
+        1999, inclusive.  The binary representations of 1000 and 1999 are:
       </p>
 
       <pre fixed="yes">
@@ -241,8 +241,8 @@
       </pre>
 
       <p>
-	The following series of bitwise matches will match 1000 and
-	1999 and all the values in between:
+        The following series of bitwise matches will match 1000 and
+        1999 and all the values in between:
       </p>
 
       <pre fixed="yes">
@@ -256,7 +256,7 @@
       </pre>
 
       <p>
-	which can be written as the following matches:
+        which can be written as the following matches:
       </p>
 
       <pre>
@@ -273,8 +273,8 @@ tcp,tp_src=0x07c0/0xfff0
     <dt><dfn>Inequality match</dfn>, e.g. ``<code>tcp_dst</code> ≠ 80''</dt>
     <dd>
       <p>
-	The value of the field differs from a specified value, for
-	example, all TCP destination ports except 80.
+        The value of the field differs from a specified value, for
+        example, all TCP destination ports except 80.
       </p>
 
       <p>
@@ -1328,28 +1328,28 @@ tcp,tp_src=0x07c0/0xfff0
     <dl>
       <dt>``Port-based'' tunnels</dt>
       <dd>
-	<p>
-	  In this model, an OpenFlow port represents one tunnel: it matches a
-	  particular type of tunnel traffic between two IP endpoints, with a
-	  particular tunnel key (if keys are in use).  In this situation, <ref
-	  field="in_port"/> suffices to distinguish one tunnel from another, so
-	  the tunnel header fields have little importance for OpenFlow
-	  processing.  (They are still populated and may be used if it is
-	  convenient.)  The tunnel header fields play no role in sending
-	  packets out such an OpenFlow port, either, because the OpenFlow port
-	  itself fully specifies the tunnel headers.
-	</p>
-
-	<p>
-	  The following Open vSwitch commands create a bridge
-	  <code>br-int</code>, add port <code>tap0</code> to the bridge as
-	  OpenFlow port 1, establish a port-based GRE tunnel between the local
-	  host and remote IP 192.168.1.1 using GRE key 5001 as OpenFlow port 2,
-	  and arranges to forward all traffic from <code>tap0</code> to the
-	  tunnel and vice versa:
-	</p>
-
-	<pre>
+        <p>
+          In this model, an OpenFlow port represents one tunnel: it matches a
+          particular type of tunnel traffic between two IP endpoints, with a
+          particular tunnel key (if keys are in use).  In this situation, <ref
+          field="in_port"/> suffices to distinguish one tunnel from another, so
+          the tunnel header fields have little importance for OpenFlow
+          processing.  (They are still populated and may be used if it is
+          convenient.)  The tunnel header fields play no role in sending
+          packets out such an OpenFlow port, either, because the OpenFlow port
+          itself fully specifies the tunnel headers.
+        </p>
+
+        <p>
+          The following Open vSwitch commands create a bridge
+          <code>br-int</code>, add port <code>tap0</code> to the bridge as
+          OpenFlow port 1, establish a port-based GRE tunnel between the local
+          host and remote IP 192.168.1.1 using GRE key 5001 as OpenFlow port 2,
+          and arranges to forward all traffic from <code>tap0</code> to the
+          tunnel and vice versa:
+        </p>
+
+        <pre>
 ovs-vsctl add-br br-int
 ovs-vsctl add-port br-int tap0 -- set interface tap0 ofport_request=1
 ovs-vsctl add-port br-int gre0 --
@@ -1357,32 +1357,32 @@ ovs-vsctl add-port br-int gre0 --
                        options:remote_ip=192.168.1.1 options:key=5001
 ovs-ofctl add-flow br-int in_port=1,actions=2
 ovs-ofctl add-flow br-int in_port=2,actions=1
-	</pre>
+        </pre>
       </dd>
 
       <dt>``Flow-based'' tunnels</dt>
       <dd>
-	<p>
-	  In this model, one OpenFlow port represents all possible tunnels of a
-	  given type with an endpoint on the current host, for example, all GRE
-	  tunnels.  In this situation, <ref field="in_port"/> only indicates
-	  that traffic was received on the particular kind of tunnel.  This is
-	  where the tunnel header fields are most important: they allow the
-	  OpenFlow tables to discriminate among tunnels based on their IP
-	  endpoints or keys.  Tunnel header fields also determine the IP
-	  endpoints and keys of packets sent out such a tunnel port.
-	</p>
-
-	<p>
-	  The following Open vSwitch commands create a bridge
-	  <code>br-int</code>, add port <code>tap0</code> to the
-	  bridge as OpenFlow port 1, establish a flow-based GRE tunnel
-	  port 3, and arranges to forward all traffic from
-	  <code>tap0</code> to remote IP 192.168.1.1 over a GRE tunnel
-	  with key 5001 and vice versa:
-	</p>
-
-	<pre>
+        <p>
+          In this model, one OpenFlow port represents all possible tunnels of a
+          given type with an endpoint on the current host, for example, all GRE
+          tunnels.  In this situation, <ref field="in_port"/> only indicates
+          that traffic was received on the particular kind of tunnel.  This is
+          where the tunnel header fields are most important: they allow the
+          OpenFlow tables to discriminate among tunnels based on their IP
+          endpoints or keys.  Tunnel header fields also determine the IP
+          endpoints and keys of packets sent out such a tunnel port.
+        </p>
+
+        <p>
+          The following Open vSwitch commands create a bridge
+          <code>br-int</code>, add port <code>tap0</code> to the
+          bridge as OpenFlow port 1, establish a flow-based GRE tunnel
+          port 3, and arranges to forward all traffic from
+          <code>tap0</code> to remote IP 192.168.1.1 over a GRE tunnel
+          with key 5001 and vice versa:
+        </p>
+
+        <pre>
 ovs-vsctl add-br br-int
 ovs-vsctl add-port br-int tap0 -- set interface tap0 ofport_request=1
 ovs-vsctl add-port br-int allgre --
@@ -1391,42 +1391,42 @@ ovs-vsctl add-port br-int allgre --
 ovs-ofctl add-flow br-int \
     'in_port=1 actions=set_tunnel:5001,set_field:192.168.1.1->tun_dst,3'
 ovs-ofctl add-flow br-int 'in_port=3,tun_src=192.168.1.1,tun_id=5001 actions=1'
-	</pre>
+        </pre>
       </dd>
 
       <dt>Mixed models.</dt>
       <dd>
-	<p>
-	  One may define both flow-based and port-based tunnels at the
-	  same time.  For example, it is valid and possibly useful to
-	  create and configure both <code>gre0</code> and
-	  <code>allgre</code> tunnel ports described above.
-	</p>
-
-	<p>
-	  Traffic is attributed on ingress to the most specific
-	  matching tunnel.  For example, <code>gre0</code> is more
-	  specific than <code>allgre</code>.  Therefore, if both
-	  exist, then <code>gre0</code> will be the ingress port for any
-	  GRE traffic received from 192.168.1.1 with key 5001.
-	</p>
-
-	<p>
-	  On egress, traffic may be directed to any appropriate tunnel
-	  port.  If both <code>gre0</code> and <code>allgre</code> are
-	  configured as already described, then the actions
-	  <code>2</code> and
-	  <code>set_tunnel:5001,set_field:192.168.1.1->tun_dst,3</code>
-	  send the same tunnel traffic.
-	</p>
+        <p>
+          One may define both flow-based and port-based tunnels at the
+          same time.  For example, it is valid and possibly useful to
+          create and configure both <code>gre0</code> and
+          <code>allgre</code> tunnel ports described above.
+        </p>
+
+        <p>
+          Traffic is attributed on ingress to the most specific
+          matching tunnel.  For example, <code>gre0</code> is more
+          specific than <code>allgre</code>.  Therefore, if both
+          exist, then <code>gre0</code> will be the ingress port for any
+          GRE traffic received from 192.168.1.1 with key 5001.
+        </p>
+
+        <p>
+          On egress, traffic may be directed to any appropriate tunnel
+          port.  If both <code>gre0</code> and <code>allgre</code> are
+          configured as already described, then the actions
+          <code>2</code> and
+          <code>set_tunnel:5001,set_field:192.168.1.1->tun_dst,3</code>
+          send the same tunnel traffic.
+        </p>
       </dd>
 
       <dt>Intermediate models.</dt>
       <dd>
-	Ports may be configured as partially flow-based.  For example,
-	one may define an OpenFlow port that represents tunnels
-	between a pair of endpoints but leaves the flow table to
-	discriminate on the flow key.
+        Ports may be configured as partially flow-based.  For example,
+        one may define an OpenFlow port that represents tunnels
+        between a pair of endpoints but leaves the flow table to
+        discriminate on the flow key.
       </dd>
     </dl>
 
@@ -1446,155 +1446,155 @@ ovs-ofctl add-flow br-int 'in_port=3,tun_src=192.168.1.1,tun_id=5001 actions=1'
 
     <field id="MFF_TUN_ID" title="Tunnel ID">
       <p>
-	Many kinds of tunnels support a tunnel ID:
+        Many kinds of tunnels support a tunnel ID:
       </p>
 
       <ul>
-	<li>
+        <li>
           VXLAN and Geneve have a 24-bit virtual network identifier (VNI).
         </li>
-	<li>LISP has a 24-bit instance ID.</li>
-	<li>GRE has an optional 32-bit key.</li>
-	<li>STT has a 64-bit key.</li>
+        <li>LISP has a 24-bit instance ID.</li>
+        <li>GRE has an optional 32-bit key.</li>
+        <li>STT has a 64-bit key.</li>
     <li>ERSPAN has a 10-bit key (Session ID).</li>
       </ul>
 
       <p>
-	When a packet is received from a tunnel, this field holds the
-	tunnel ID in its least significant bits, zero-extended to fit.
-	This field is zero if the tunnel does not support an ID, or if
-	no ID is in use for a tunnel type that has an optional ID, or
-	if an ID of zero received, or if the packet was not received
-	over a tunnel.
+        When a packet is received from a tunnel, this field holds the
+        tunnel ID in its least significant bits, zero-extended to fit.
+        This field is zero if the tunnel does not support an ID, or if
+        no ID is in use for a tunnel type that has an optional ID, or
+        if an ID of zero received, or if the packet was not received
+        over a tunnel.
       </p>
 
       <p>
-	When a packet is output to a tunnel port, the tunnel
-	configuration determines whether the tunnel ID is taken from
-	this field or bound to a fixed value.  See the earlier
-	description of ``port-based'' and ``flow-based'' tunnels for
-	more information.
+        When a packet is output to a tunnel port, the tunnel
+        configuration determines whether the tunnel ID is taken from
+        this field or bound to a fixed value.  See the earlier
+        description of ``port-based'' and ``flow-based'' tunnels for
+        more information.
       </p>
 
       <p>
-	The following diagram shows the origin of this field in a
-	typical keyed GRE tunnel:
+        The following diagram shows the origin of this field in a
+        typical keyed GRE tunnel:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" below="47" width="0.4"/>
-	  <bits name="src" above="32" width="0.4"/>
-	  <bits name="dst" above="32" width="0.4"/>
-	</header>
-	<header name="GRE">
-	  <bits name="..." above="16" width="0.4"/>
-	  <bits name="type" above="16" below="0x6558" width="0.4"/>
-	  <bits name="key" above="32" width=".4" fill="yes"/>
-	</header>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" below="47" width="0.4"/>
+          <bits name="src" above="32" width="0.4"/>
+          <bits name="dst" above="32" width="0.4"/>
+        </header>
+        <header name="GRE">
+          <bits name="..." above="16" width="0.4"/>
+          <bits name="type" above="16" below="0x6558" width="0.4"/>
+          <bits name="key" above="32" width=".4" fill="yes"/>
+        </header>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
     </field>
 
     <field id="MFF_TUN_SRC" title="Tunnel IPv4 Source">
       <p>
-	When a packet is received from a tunnel, this field is the
-	source address in the outer IP header of the tunneled packet.
-	This field is zero if the packet was not received over a
-	tunnel.
+        When a packet is received from a tunnel, this field is the
+        source address in the outer IP header of the tunneled packet.
+        This field is zero if the packet was not received over a
+        tunnel.
       </p>
 
       <p>
-	When a packet is output to a flow-based tunnel port, this
-	field influences the IPv4 source address used to send the
-	packet.  If it is zero, then the kernel chooses an appropriate
-	IP address based using the routing table.
+        When a packet is output to a flow-based tunnel port, this
+        field influences the IPv4 source address used to send the
+        packet.  If it is zero, then the kernel chooses an appropriate
+        IP address based using the routing table.
       </p>
 
       <p>
-	The following diagram shows the origin of this field in a
-	typical keyed GRE tunnel:
+        The following diagram shows the origin of this field in a
+        typical keyed GRE tunnel:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" below="47" width="0.4"/>
-	  <bits name="src" above="32" width="0.4" fill="yes"/>
-	  <bits name="dst" above="32" width="0.4"/>
-	</header>
-	<header name="GRE">
-	  <bits name="..." above="16" width="0.4"/>
-	  <bits name="type" above="16" below="0x6558" width="0.4"/>
-	  <bits name="key" above="32" width=".4"/>
-	</header>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" below="47" width="0.4"/>
+          <bits name="src" above="32" width="0.4" fill="yes"/>
+          <bits name="dst" above="32" width="0.4"/>
+        </header>
+        <header name="GRE">
+          <bits name="..." above="16" width="0.4"/>
+          <bits name="type" above="16" below="0x6558" width="0.4"/>
+          <bits name="key" above="32" width=".4"/>
+        </header>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
     </field>
 
     <field id="MFF_TUN_DST" title="Tunnel IPv4 Destination">
       <p>
-	When a packet is received from a tunnel, this field is the
-	destination address in the outer IP header of the tunneled
-	packet.  This field is zero if the packet was not received
-	over a tunnel.
+        When a packet is received from a tunnel, this field is the
+        destination address in the outer IP header of the tunneled
+        packet.  This field is zero if the packet was not received
+        over a tunnel.
       </p>
 
       <p>
-	When a packet is output to a flow-based tunnel port, this
-	field specifies the destination to which the tunnel packet is
-	sent.
+        When a packet is output to a flow-based tunnel port, this
+        field specifies the destination to which the tunnel packet is
+        sent.
       </p>
 
       <p>
-	The following diagram shows the origin of this field in a
-	typical keyed GRE tunnel:
+        The following diagram shows the origin of this field in a
+        typical keyed GRE tunnel:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" below="47" width="0.4"/>
-	  <bits name="src" above="32" width="0.4"/>
-	  <bits name="dst" above="32" width="0.4" fill="yes"/>
-	</header>
-	<header name="GRE">
-	  <bits name="..." above="16" width="0.4"/>
-	  <bits name="type" above="16" below="0x6558" width="0.4"/>
-	  <bits name="key" above="32" width=".4"/>
-	</header>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" below="47" width="0.4"/>
+          <bits name="src" above="32" width="0.4"/>
+          <bits name="dst" above="32" width="0.4" fill="yes"/>
+        </header>
+        <header name="GRE">
+          <bits name="..." above="16" width="0.4"/>
+          <bits name="type" above="16" below="0x6558" width="0.4"/>
+          <bits name="key" above="32" width=".4"/>
+        </header>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
     </field>
 
@@ -1822,16 +1822,16 @@ ovs-ofctl add-flow br-int 'in_port=3,tun_src=192.168.1.1,tun_id=5001 actions=1'
       </p>
 
       <diagram>
-	<header name="header">
-	  <bits name="class" above="16" width="0.6"/>
-	  <bits name="type" above="8" width="0.5"/>
-	  <bits name="res" above="3" below="0" width="0.25"/>
-	  <bits name="length" above="5" width="0.4"/>
-	</header>
+        <header name="header">
+          <bits name="class" above="16" width="0.6"/>
+          <bits name="type" above="8" width="0.5"/>
+          <bits name="res" above="3" below="0" width="0.25"/>
+          <bits name="length" above="5" width="0.4"/>
+        </header>
         <nospace/>
-	<header name="body">
-	  <bits name="value" above="4×(length - 1) bytes" width="1.7"/>
-	</header>
+        <header name="body">
+          <bits name="value" above="4×(length - 1) bytes" width="1.7"/>
+        </header>
       </diagram>
 
       <p>
@@ -1996,167 +1996,167 @@ ovs-ofctl add-flow br0 tun_metadata0=1234,actions=controller
 
     <field id="MFF_IN_PORT" title="Ingress Port">
       <p>
-	The OpenFlow port on which the packet being processed arrived.
-	This is a 16-bit field that holds an OpenFlow 1.0 port number.
-	For receiving a packet, the only values that appear in this
-	field are:
+        The OpenFlow port on which the packet being processed arrived.
+        This is a 16-bit field that holds an OpenFlow 1.0 port number.
+        For receiving a packet, the only values that appear in this
+        field are:
       </p>
 
       <dl>
-	<dt>1 through <code>0xfeff</code> (65,279), inclusive.</dt>
-	<dd>
-	  Conventional OpenFlow port numbers.
-	</dd>
-
-	<dt><code>OFPP_LOCAL</code> (<code>0xfffe</code> or 65,534).</dt>
-	<dd>
-	  <p>
-	    The ``local'' port, which in Open vSwitch is always named
-	    the same as the bridge itself.  This represents a
-	    connection between the switch and the local TCP/IP stack.
-	    This port is where an IP address is most commonly
-	    configured on an Open vSwitch switch.
-	  </p>
-
-	  <p>
-	    OpenFlow does not require a switch to have a local port,
-	    but all existing versions of Open vSwitch have always
-	    included a local port.  <b>Future Directions:</b> Future
-	    versions of Open vSwitch might be able to optionally omit
-	    the local port, if someone submits code to implement such
-	    a feature.
-	  </p>
-	</dd>
-
-	<dt><code>OFPP_NONE</code> (OpenFlow 1.0) or <code>OFPP_ANY</code> (OpenFlow 1.1+) (<code>0xffff</code> or 65,535).</dt>
-	<dt><code>OFPP_CONTROLLER</code> (<code>0xfffd</code> or 65,533).</dt>
-	<dd>
-	  <p>
-	    When a controller injects a packet into an OpenFlow switch
-	    with a ``packet-out'' request, it can specify one of these
-	    ingress ports to indicate that the packet was generated
-	    internally rather than having been received on some port.
-	  </p>
-
-	  <p>
-	    OpenFlow 1.0 specified <code>OFPP_NONE</code> for this
-	    purpose.  Despite that, some controllers used
-	    <code>OFPP_CONTROLLER</code>, and some switches only
-	    accepted <code>OFPP_CONTROLLER</code>, so OpenFlow 1.0.2
-	    required support for both ports.  OpenFlow 1.1 and later
-	    were more clearly drafted to allow only
-	    <code>OFPP_CONTROLLER</code>.  For maximum compatibility,
-	    Open vSwitch allows both ports with all OpenFlow versions.
-	  </p>
-	</dd>
+        <dt>1 through <code>0xfeff</code> (65,279), inclusive.</dt>
+        <dd>
+          Conventional OpenFlow port numbers.
+        </dd>
+
+        <dt><code>OFPP_LOCAL</code> (<code>0xfffe</code> or 65,534).</dt>
+        <dd>
+          <p>
+            The ``local'' port, which in Open vSwitch is always named
+            the same as the bridge itself.  This represents a
+            connection between the switch and the local TCP/IP stack.
+            This port is where an IP address is most commonly
+            configured on an Open vSwitch switch.
+          </p>
+
+          <p>
+            OpenFlow does not require a switch to have a local port,
+            but all existing versions of Open vSwitch have always
+            included a local port.  <b>Future Directions:</b> Future
+            versions of Open vSwitch might be able to optionally omit
+            the local port, if someone submits code to implement such
+            a feature.
+          </p>
+        </dd>
+
+        <dt><code>OFPP_NONE</code> (OpenFlow 1.0) or <code>OFPP_ANY</code> (OpenFlow 1.1+) (<code>0xffff</code> or 65,535).</dt>
+        <dt><code>OFPP_CONTROLLER</code> (<code>0xfffd</code> or 65,533).</dt>
+        <dd>
+          <p>
+            When a controller injects a packet into an OpenFlow switch
+            with a ``packet-out'' request, it can specify one of these
+            ingress ports to indicate that the packet was generated
+            internally rather than having been received on some port.
+          </p>
+
+          <p>
+            OpenFlow 1.0 specified <code>OFPP_NONE</code> for this
+            purpose.  Despite that, some controllers used
+            <code>OFPP_CONTROLLER</code>, and some switches only
+            accepted <code>OFPP_CONTROLLER</code>, so OpenFlow 1.0.2
+            required support for both ports.  OpenFlow 1.1 and later
+            were more clearly drafted to allow only
+            <code>OFPP_CONTROLLER</code>.  For maximum compatibility,
+            Open vSwitch allows both ports with all OpenFlow versions.
+          </p>
+        </dd>
       </dl>
 
       <p>
-	Values not mentioned above will never appear when receiving a
-	packet, including the following notable values:
+        Values not mentioned above will never appear when receiving a
+        packet, including the following notable values:
       </p>
 
       <dl>
-	<dt>0</dt>
-	<dd>
-	  Zero is not a valid OpenFlow port number.
-	</dd>
-
-	<dt><code>OFPP_MAX</code> (<code>0xff00</code> or 65,280).</dt>
-	<dd>
-	  This value has only been clearly specified as a valid port
-	  number as of OpenFlow 1.3.3.  Before that, its status was
-	  unclear, and so Open vSwitch has never allowed
-	  <code>OFPP_MAX</code> to be used as a port number, so
-	  packets will never be received on this port.  (Other
-	  OpenFlow switches, of course, might use it.)
-	</dd>
+        <dt>0</dt>
+        <dd>
+          Zero is not a valid OpenFlow port number.
+        </dd>
+
+        <dt><code>OFPP_MAX</code> (<code>0xff00</code> or 65,280).</dt>
+        <dd>
+          This value has only been clearly specified as a valid port
+          number as of OpenFlow 1.3.3.  Before that, its status was
+          unclear, and so Open vSwitch has never allowed
+          <code>OFPP_MAX</code> to be used as a port number, so
+          packets will never be received on this port.  (Other
+          OpenFlow switches, of course, might use it.)
+        </dd>
 
         <dt><code>OFPP_UNSET</code> (<code>0xfff7</code> or 65,527)</dt>
-	<dt><code>OFPP_IN_PORT</code> (<code>0xfff8</code> or 65,528)</dt>
-	<dt><code>OFPP_TABLE</code> (<code>0xfff9</code> or 65,529)</dt>
-	<dt><code>OFPP_NORMAL</code> (<code>0xfffa</code> or 65,530)</dt>
-	<dt><code>OFPP_FLOOD</code> (<code>0xfffb</code> or 65,531)</dt>
-	<dt><code>OFPP_ALL</code> (<code>0xfffc</code> or 65,532)</dt>
-	<dd>
+        <dt><code>OFPP_IN_PORT</code> (<code>0xfff8</code> or 65,528)</dt>
+        <dt><code>OFPP_TABLE</code> (<code>0xfff9</code> or 65,529)</dt>
+        <dt><code>OFPP_NORMAL</code> (<code>0xfffa</code> or 65,530)</dt>
+        <dt><code>OFPP_FLOOD</code> (<code>0xfffb</code> or 65,531)</dt>
+        <dt><code>OFPP_ALL</code> (<code>0xfffc</code> or 65,532)</dt>
+        <dd>
           <p>
-	    These port numbers are used only in output actions and never
-	    appear as ingress ports.
+            These port numbers are used only in output actions and never
+            appear as ingress ports.
           </p>
 
           <p>
             Most of these port numbers were defined in OpenFlow 1.0, but
             <code>OFPP_UNSET</code> was only introduced in OpenFlow 1.5.
           </p>
-	</dd>
+        </dd>
       </dl>
 
       <p>
-	Values that will never appear when receiving a packet may
-	still be matched against in the flow table.  There are still
-	circumstances in which those flows can be matched:
+        Values that will never appear when receiving a packet may
+        still be matched against in the flow table.  There are still
+        circumstances in which those flows can be matched:
       </p>
 
       <ul>
-	<li>
-	  The <code>resubmit</code> Open vSwitch extension action allows a
-	  flow table lookup with an arbitrary ingress port.
-	</li>
-
-	<li>
-	  An action that modifies the ingress port field (see below),
-	  such as e.g. <code>load</code> or <code>set_field</code>,
-	  followed by an action or instruction that performs another
-	  flow table lookup, such as <code>resubmit</code> or
-	  <code>goto_table</code>.
-	</li>
+        <li>
+          The <code>resubmit</code> Open vSwitch extension action allows a
+          flow table lookup with an arbitrary ingress port.
+        </li>
+
+        <li>
+          An action that modifies the ingress port field (see below),
+          such as e.g. <code>load</code> or <code>set_field</code>,
+          followed by an action or instruction that performs another
+          flow table lookup, such as <code>resubmit</code> or
+          <code>goto_table</code>.
+        </li>
       </ul>
 
       <p>
-	This field is heavily used for matching in OpenFlow tables,
-	but for packet egress, it has only very limited roles:
+        This field is heavily used for matching in OpenFlow tables,
+        but for packet egress, it has only very limited roles:
       </p>
 
       <ul>
-	<li>
-	  <p>
-	    OpenFlow requires suppressing output actions to <ref
-	    field="in_port"/>.  That is, the following two flows both drop all
-	    packets that arrive on port 1:
-	  </p>
-
-	  <pre>
+        <li>
+          <p>
+            OpenFlow requires suppressing output actions to <ref
+            field="in_port"/>.  That is, the following two flows both drop all
+            packets that arrive on port 1:
+          </p>
+
+          <pre>
 in_port=1,actions=1
 in_port=1,actions=drop
-	  </pre>
-
-	  <p>
-	    (This behavior is occasionally useful for flooding to a
-	    subset of ports.  Specifying <code>actions=1,2,3,4</code>,
-	    for example, outputs to ports 1, 2, 3, and 4, omitting the
-	    ingress port.)
-	  </p>
-	</li>
-
-	<li>
-	  OpenFlow has a special port <code>OFPP_IN_PORT</code> (with
-	  value 0xfff8) that outputs to the ingress port.  For example,
-	  in a switch that has four ports numbered 1 through 4,
-	  <code>actions=1,2,3,4,in_port</code> outputs to ports 1, 2,
-	  3, and 4, including the ingress port.
-	</li>
+          </pre>
+
+          <p>
+            (This behavior is occasionally useful for flooding to a
+            subset of ports.  Specifying <code>actions=1,2,3,4</code>,
+            for example, outputs to ports 1, 2, 3, and 4, omitting the
+            ingress port.)
+          </p>
+        </li>
+
+        <li>
+          OpenFlow has a special port <code>OFPP_IN_PORT</code> (with
+          value 0xfff8) that outputs to the ingress port.  For example,
+          in a switch that has four ports numbered 1 through 4,
+          <code>actions=1,2,3,4,in_port</code> outputs to ports 1, 2,
+          3, and 4, including the ingress port.
+        </li>
       </ul>
 
       <p>
-	Because the ingress port field has so little influence on packet
-	processing, it does not ordinarily make sense to modify the
-	ingress port field.  The field is writable only to support the
-	occasional use case where the ingress port's roles in packet
-	egress, described above, become troublesome.  For example,
-	<code>actions=load:0-&gt;NXM_OF_IN_PORT[],output:123</code>
-	will output to port 123 regardless of whether it is in the
-	ingress port.  If the ingress port is important, then one may save
-	and restore it on the stack:
+        Because the ingress port field has so little influence on packet
+        processing, it does not ordinarily make sense to modify the
+        ingress port field.  The field is writable only to support the
+        occasional use case where the ingress port's roles in packet
+        egress, described above, become troublesome.  For example,
+        <code>actions=load:0-&gt;NXM_OF_IN_PORT[],output:123</code>
+        will output to port 123 regardless of whether it is in the
+        ingress port.  If the ingress port is important, then one may save
+        and restore it on the stack:
       </p>
 
       <pre>
@@ -2173,154 +2173,154 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </pre>
 
       <p>
-	The ability to modify the ingress port is an Open vSwitch
-	extension to OpenFlow.
+        The ability to modify the ingress port is an Open vSwitch
+        extension to OpenFlow.
       </p>
     </field>
 
     <field id="MFF_IN_PORT_OXM" title="OXM Ingress Port">
       <p>
-	OpenFlow 1.1 and later use a 32-bit port number, so this field
-	supplies a 32-bit view of the ingress port.  Current versions of
-	Open vSwitch support only a 16-bit range of ports:
+        OpenFlow 1.1 and later use a 32-bit port number, so this field
+        supplies a 32-bit view of the ingress port.  Current versions of
+        Open vSwitch support only a 16-bit range of ports:
       </p>
 
       <ul>
-	<li>
-	  OpenFlow 1.0 ports <code>0x0000</code> to
-	  <code>0xfeff</code>, inclusive, map to OpenFlow 1.1
-	  port numbers with the same values.
-	</li>
-
-	<li>
-	  OpenFlow 1.0 ports <code>0xff00</code> to
-	  <code>0xffff</code>, inclusive, map to OpenFlow 1.1 port
-	  numbers <code>0xffffff00</code> to <code>0xffffffff</code>.
-	</li>
-
-	<li>
-	  OpenFlow 1.1 ports <code>0x0000ff00</code> to
-	  <code>0xfffffeff</code> are not mapped and not supported.
-	</li>
+        <li>
+          OpenFlow 1.0 ports <code>0x0000</code> to
+          <code>0xfeff</code>, inclusive, map to OpenFlow 1.1
+          port numbers with the same values.
+        </li>
+
+        <li>
+          OpenFlow 1.0 ports <code>0xff00</code> to
+          <code>0xffff</code>, inclusive, map to OpenFlow 1.1 port
+          numbers <code>0xffffff00</code> to <code>0xffffffff</code>.
+        </li>
+
+        <li>
+          OpenFlow 1.1 ports <code>0x0000ff00</code> to
+          <code>0xfffffeff</code> are not mapped and not supported.
+        </li>
       </ul>
 
       <p>
-	<ref field="in_port"/> and <ref field="in_port_oxm"/> are two views of
-	the same information, so all of the comments on <ref field="in_port"/>
-	apply to <ref field="in_port_oxm"/> too.  Modifying <ref
-	field="in_port"/> changes <ref field="in_port_oxm"/>, and vice versa.
+        <ref field="in_port"/> and <ref field="in_port_oxm"/> are two views of
+        the same information, so all of the comments on <ref field="in_port"/>
+        apply to <ref field="in_port_oxm"/> too.  Modifying <ref
+        field="in_port"/> changes <ref field="in_port_oxm"/>, and vice versa.
       </p>
 
       <p>
-	Setting <ref field="in_port_oxm"/> to an unsupported value yields
-	unspecified behavior.
+        Setting <ref field="in_port_oxm"/> to an unsupported value yields
+        unspecified behavior.
       </p>
     </field>
 
     <field id="MFF_SKB_PRIORITY" title="Output Queue">
       <p>
-	<b>Future Directions:</b> Open vSwitch implements the output queue as a
-	field, but does not currently expose it through OXM or NXM for matching
-	purposes.  If this turns out to be a useful feature, it could be
-	implemented in future versions.  Only the <code>set_queue</code>,
-	<code>enqueue</code>, and <code>pop_queue</code> actions currently
-	influence the output queue.
+        <b>Future Directions:</b> Open vSwitch implements the output queue as a
+        field, but does not currently expose it through OXM or NXM for matching
+        purposes.  If this turns out to be a useful feature, it could be
+        implemented in future versions.  Only the <code>set_queue</code>,
+        <code>enqueue</code>, and <code>pop_queue</code> actions currently
+        influence the output queue.
       </p>
 
       <p>
-	This field influences how packets in the flow will be queued,
-	for quality of service (QoS) purposes, when they egress the
-	switch.  Its range of meaningful values, and their meanings,
-	varies greatly from one OpenFlow implementation to another.
-	Even within a single implementation, there is no guarantee
-	that all OpenFlow ports have the same queues configured or
-	that all OpenFlow ports in an implementation can be configured
-	the same way queue-wise.
+        This field influences how packets in the flow will be queued,
+        for quality of service (QoS) purposes, when they egress the
+        switch.  Its range of meaningful values, and their meanings,
+        varies greatly from one OpenFlow implementation to another.
+        Even within a single implementation, there is no guarantee
+        that all OpenFlow ports have the same queues configured or
+        that all OpenFlow ports in an implementation can be configured
+        the same way queue-wise.
       </p>
 
       <p>
-	Configuring queues on OpenFlow is not well standardized.  On
-	Linux, Open vSwitch supports queue configuration via OVSDB,
-	specifically the <code>QoS</code> and <code>Queue</code>
-	tables (see <code>ovs-vswitchd.conf.db(5)</code> for details).
-	Ports of Open vSwitch to other platforms might require queue
-	configuration through some separate protocol (such as a CLI).
-	Even on Linux, Open vSwitch exposes only a fraction of the
-	kernel's queuing features through OVSDB, so advanced or
-	unusual uses might require use of separate utilities
-	(e.g. <code>tc</code>).  OpenFlow switches other than Open
-	vSwitch might use OF-CONFIG or any of the configuration
-	methods mentioned above.  Finally, some OpenFlow switches have
-	a fixed number of fixed-function queues (e.g. eight queues
-	with strictly defined priorities) and others do not support
-	any control over queuing.
+        Configuring queues on OpenFlow is not well standardized.  On
+        Linux, Open vSwitch supports queue configuration via OVSDB,
+        specifically the <code>QoS</code> and <code>Queue</code>
+        tables (see <code>ovs-vswitchd.conf.db(5)</code> for details).
+        Ports of Open vSwitch to other platforms might require queue
+        configuration through some separate protocol (such as a CLI).
+        Even on Linux, Open vSwitch exposes only a fraction of the
+        kernel's queuing features through OVSDB, so advanced or
+        unusual uses might require use of separate utilities
+        (e.g. <code>tc</code>).  OpenFlow switches other than Open
+        vSwitch might use OF-CONFIG or any of the configuration
+        methods mentioned above.  Finally, some OpenFlow switches have
+        a fixed number of fixed-function queues (e.g. eight queues
+        with strictly defined priorities) and others do not support
+        any control over queuing.
       </p>
 
       <p>
-	The only output queue that all OpenFlow implementations must
-	support is zero, to identify a default queue, whose properties
-	are implementation-defined.  Outputting a packet to a queue
-	that does not exist on the output port yields unpredictable
-	behavior: among the possibilities are that the packet might be
-	dropped or transmitted with a very high or very low priority.
+        The only output queue that all OpenFlow implementations must
+        support is zero, to identify a default queue, whose properties
+        are implementation-defined.  Outputting a packet to a queue
+        that does not exist on the output port yields unpredictable
+        behavior: among the possibilities are that the packet might be
+        dropped or transmitted with a very high or very low priority.
       </p>
 
       <p>
-	OpenFlow 1.0 only allowed output queues to be specified as part of an
-	<code>enqueue</code> action that specified both a queue and an output
-	port.  That is, OpenFlow 1.0 treats the queue as an argument to an
-	action, not as a field.
+        OpenFlow 1.0 only allowed output queues to be specified as part of an
+        <code>enqueue</code> action that specified both a queue and an output
+        port.  That is, OpenFlow 1.0 treats the queue as an argument to an
+        action, not as a field.
       </p>
 
       <p>
-	To increase flexibility, OpenFlow 1.1 added an action to set the output
-	queue.  This model was carried forward, without change, through
-	OpenFlow 1.5.
+        To increase flexibility, OpenFlow 1.1 added an action to set the output
+        queue.  This model was carried forward, without change, through
+        OpenFlow 1.5.
       </p>
 
       <p>
-	Open vSwitch implements the native queuing model of each
-	OpenFlow version it supports.  Open vSwitch also includes an
-	extension for setting the output queue as an action in
-	OpenFlow 1.0.
+        Open vSwitch implements the native queuing model of each
+        OpenFlow version it supports.  Open vSwitch also includes an
+        extension for setting the output queue as an action in
+        OpenFlow 1.0.
       </p>
 
       <p>
-	When a packet ingresses into an OpenFlow switch, the output
-	queue is ordinarily set to 0, indicating the default queue.
-	However, Open vSwitch supports various ways to forward a
-	packet from one OpenFlow switch to another within a single
-	host.  In these cases, Open vSwitch maintains the output queue
-	across the forwarding step.  For example:
+        When a packet ingresses into an OpenFlow switch, the output
+        queue is ordinarily set to 0, indicating the default queue.
+        However, Open vSwitch supports various ways to forward a
+        packet from one OpenFlow switch to another within a single
+        host.  In these cases, Open vSwitch maintains the output queue
+        across the forwarding step.  For example:
       </p>
 
       <ul>
-	<li>
-	  A hop across an Open vSwitch ``patch port'' (which does not
-	  actually involve queuing) preserves the output queue.
-	</li>
-
-	<li>
-	  <p>
-	    When a flow sets the output queue then outputs to an
-	    OpenFlow tunnel port, the encapsulation preserves the
-	    output queue.  If the kernel TCP/IP stack routes the
-	    encapsulated packet directly to a physical interface, then
-	    that output honors the output queue.  Alternatively, if
-	    the kernel routes the encapsulated packet to another Open
-	    vSwitch bridge, then the output queue set previously
-	    becomes the initial output queue on ingress to the second
-	    bridge and will thus be used for further output actions
-	    (unless overridden by a new ``set queue'' action).
-	  </p>
-
-	  <p>
-	    (This description reflects the current behavior of Open
-	    vSwitch on Linux.  This behavior relies on details of the
-	    Linux TCP/IP stack.  It could be difficult to make ports
-	    to other operating systems behave the same way.)
-	  </p>
-	</li>
+        <li>
+          A hop across an Open vSwitch ``patch port'' (which does not
+          actually involve queuing) preserves the output queue.
+        </li>
+
+        <li>
+          <p>
+            When a flow sets the output queue then outputs to an
+            OpenFlow tunnel port, the encapsulation preserves the
+            output queue.  If the kernel TCP/IP stack routes the
+            encapsulated packet directly to a physical interface, then
+            that output honors the output queue.  Alternatively, if
+            the kernel routes the encapsulated packet to another Open
+            vSwitch bridge, then the output queue set previously
+            becomes the initial output queue on ingress to the second
+            bridge and will thus be used for further output actions
+            (unless overridden by a new ``set queue'' action).
+          </p>
+
+          <p>
+            (This description reflects the current behavior of Open
+            vSwitch on Linux.  This behavior relies on details of the
+            Linux TCP/IP stack.  It could be difficult to make ports
+            to other operating systems behave the same way.)
+          </p>
+        </li>
       </ul>
     </field>
 
@@ -2341,31 +2341,31 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </p>
 
       <p>
-	Packet mark is an attempt at a generalization of the
-	<code>skb_mark</code> concept beyond Linux, at least through more
-	generic naming.  Like <ref field="skb_priority"/>, packet mark is
-	preserved across forwarding steps within a machine.  Unlike <ref
-	field="skb_priority"/>, packet mark has no direct effect on packet
-	forwarding: the value set in packet mark does not matter unless some
-	later OpenFlow table or switch matches on packet mark, or unless the
-	packet passes through some other kernel subsystem that has been
-	configured to interpret packet mark in specific ways, e.g. through
-	<code>iptables</code> configuration mentioned above.
+        Packet mark is an attempt at a generalization of the
+        <code>skb_mark</code> concept beyond Linux, at least through more
+        generic naming.  Like <ref field="skb_priority"/>, packet mark is
+        preserved across forwarding steps within a machine.  Unlike <ref
+        field="skb_priority"/>, packet mark has no direct effect on packet
+        forwarding: the value set in packet mark does not matter unless some
+        later OpenFlow table or switch matches on packet mark, or unless the
+        packet passes through some other kernel subsystem that has been
+        configured to interpret packet mark in specific ways, e.g. through
+        <code>iptables</code> configuration mentioned above.
       </p>
 
       <p>
-	Preserving packet mark across kernel forwarding steps relies
-	heavily on kernel support, which ports to non-Linux operating
-	systems may not have.  Regardless of operating system support,
-	Open vSwitch supports packet mark within a single bridge and
-	across patch ports.
+        Preserving packet mark across kernel forwarding steps relies
+        heavily on kernel support, which ports to non-Linux operating
+        systems may not have.  Regardless of operating system support,
+        Open vSwitch supports packet mark within a single bridge and
+        across patch ports.
       </p>
 
       <p>
-	The value of packet mark when a packet ingresses into the
-	first Open vSwich bridge is typically zero, but it could be
-	nonzero if its value was previously set by some kernel
-	subsystem.
+        The value of packet mark when a packet ingresses into the
+        first Open vSwich bridge is typically zero, but it could be
+        nonzero if its value was previously set by some kernel
+        subsystem.
       </p>
     </field>
 
@@ -2395,11 +2395,11 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </p>
 
       <diagram>
-	<header name="Packet type">
-	  <bits name="ns" above="16" width=".75"/>
-	  <bits name="ns_type" above="16" width=".75"/>
-	</header>
-	<dots/>
+        <header name="Packet type">
+          <bits name="ns" above="16" width=".75"/>
+          <bits name="ns_type" above="16" width=".75"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -2443,18 +2443,18 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" width="0.4"/>
-	  <bits name="src" above="32" width="0.4"/>
-	  <bits name="dst" above="32" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" width="0.4"/>
+          <bits name="src" above="32" width="0.4"/>
+          <bits name="dst" above="32" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -2463,13 +2463,13 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </p>
 
       <diagram>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" width="0.4"/>
-	  <bits name="src" above="32" width="0.4"/>
-	  <bits name="dst" above="32" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" width="0.4"/>
+          <bits name="src" above="32" width="0.4"/>
+          <bits name="dst" above="32" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -2796,23 +2796,23 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <field id="MFF_METADATA" title="OpenFlow Metadata">
       <p>
-	This field is the oldest standardized OpenFlow register field,
-	introduced in OpenFlow 1.1.  It was introduced to model the limited
-	number of user-defined bits that some ASIC-based switches can carry
-	through their pipelines.  Because of hardware limitations, OpenFlow
-	allows switches to support writing and masking only an
-	implementation-defined subset of bits, even no bits at all.  The Open
-	vSwitch software switch always supports all 64 bits, but of course an
-	Open vSwitch port to an ASIC would have the same restriction as the
-	ASIC itself.
+        This field is the oldest standardized OpenFlow register field,
+        introduced in OpenFlow 1.1.  It was introduced to model the limited
+        number of user-defined bits that some ASIC-based switches can carry
+        through their pipelines.  Because of hardware limitations, OpenFlow
+        allows switches to support writing and masking only an
+        implementation-defined subset of bits, even no bits at all.  The Open
+        vSwitch software switch always supports all 64 bits, but of course an
+        Open vSwitch port to an ASIC would have the same restriction as the
+        ASIC itself.
       </p>
 
       <p>
-	This field has an OXM code point, but OpenFlow 1.4 and earlier allow it
-	to be modified only with a specialized instruction, not with a
-	``set-field'' action.  OpenFlow 1.5 removes this restriction.  Open
-	vSwitch does not enforce this restriction, regardless of OpenFlow
-	version.
+        This field has an OXM code point, but OpenFlow 1.4 and earlier allow it
+        to be modified only with a specialized instruction, not with a
+        ``set-field'' action.  OpenFlow 1.5 removes this restriction.  Open
+        vSwitch does not enforce this restriction, regardless of OpenFlow
+        version.
       </p>
     </field>
 
@@ -2910,27 +2910,27 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75"/>
-	  <bits name="src" above="48" width=".75" fill="yes"/>
-	  <bits name="type" above="16" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75"/>
+          <bits name="src" above="48" width=".75" fill="yes"/>
+          <bits name="type" above="16" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
     </field>
 
     <field id="MFF_ETH_DST" title="Ethernet Destination">
       <p>
-	The Ethernet destination address:
+        The Ethernet destination address:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75" fill="yes"/>
-	  <bits name="src" above="48" width=".75"/>
-	  <bits name="type" above="16" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75" fill="yes"/>
+          <bits name="src" above="48" width=".75"/>
+          <bits name="type" above="16" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -2969,108 +2969,108 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <field id="MFF_ETH_TYPE" title="Ethernet Type">
       <p>
-	The most commonly seen Ethernet frames today use a format
-	called ``Ethernet II,'' in which the last two bytes of the
-	Ethernet header specify the Ethertype.  For such a frame, this
-	field is copied from those bytes of the header, like so:
+        The most commonly seen Ethernet frames today use a format
+        called ``Ethernet II,'' in which the last two bytes of the
+        Ethernet header specify the Ethertype.  For such a frame, this
+        field is copied from those bytes of the header, like so:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75"/>
-	  <bits name="src" above="48" width=".75"/>
-	  <bits name="type" above="16" below="\[&gt;=]0x600" width="0.4" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75"/>
+          <bits name="src" above="48" width=".75"/>
+          <bits name="type" above="16" below="\[&gt;=]0x600" width="0.4" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
-	Every Ethernet type has a value 0x600 (1,536) or greater.
-	When the last two bytes of the Ethernet header have a value
-	too small to be an Ethernet type, then the value found there
-	is the total length of the frame in bytes, excluding the
-	Ethernet header.  An 802.2 LLC header typically follows the
-	Ethernet header.  OpenFlow and Open vSwitch only support LLC
-	headers with DSAP and SSAP <code>0xaa</code> and control byte
-	<code>0x03</code>, which indicate that a SNAP header follows
-	the LLC header.  In turn, OpenFlow and Open vSwitch only
-	support a SNAP header with organization <code>0x000000</code>.
-	In such a case, this field is copied from the type field in
-	the SNAP header, like this:
+        Every Ethernet type has a value 0x600 (1,536) or greater.
+        When the last two bytes of the Ethernet header have a value
+        too small to be an Ethernet type, then the value found there
+        is the total length of the frame in bytes, excluding the
+        Ethernet header.  An 802.2 LLC header typically follows the
+        Ethernet header.  OpenFlow and Open vSwitch only support LLC
+        headers with DSAP and SSAP <code>0xaa</code> and control byte
+        <code>0x03</code>, which indicate that a SNAP header follows
+        the LLC header.  In turn, OpenFlow and Open vSwitch only
+        support a SNAP header with organization <code>0x000000</code>.
+        In such a case, this field is copied from the type field in
+        the SNAP header, like this:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75"/>
-	  <bits name="src" above="48" width=".75"/>
-	  <bits name="type" above="16" below="&lt;0x600" width="0.4"/>
-	</header>
-	<header name="LLC">
-	  <bits name="DSAP" above="8" below="0xaa" width=".4"/>
-	  <bits name="SSAP" above="8" below="0xaa" width=".4"/>
-	  <bits name="cntl" above="8" below="0x03" width=".4"/>
-	</header>
-	<header name="SNAP">
-	  <bits name="org" above="24" below="0x000000" width=".75"/>
-	  <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75"/>
+          <bits name="src" above="48" width=".75"/>
+          <bits name="type" above="16" below="&lt;0x600" width="0.4"/>
+        </header>
+        <header name="LLC">
+          <bits name="DSAP" above="8" below="0xaa" width=".4"/>
+          <bits name="SSAP" above="8" below="0xaa" width=".4"/>
+          <bits name="cntl" above="8" below="0x03" width=".4"/>
+        </header>
+        <header name="SNAP">
+          <bits name="org" above="24" below="0x000000" width=".75"/>
+          <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
-	When an 802.1Q header is inserted after the Ethernet source
-	and destination, this field is populated with the encapsulated
-	Ethertype, not the 802.1Q Ethertype.  With an Ethernet II
-	inner frame, the result looks like this:
+        When an 802.1Q header is inserted after the Ethernet source
+        and destination, this field is populated with the encapsulated
+        Ethertype, not the 802.1Q Ethertype.  With an Ethernet II
+        inner frame, the result looks like this:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75"/>
-	  <bits name="src" above="48" width=".75"/>
-	</header>
-	<header name="802.1Q">
-	  <bits name="TPID" above="16" below="0x8100" width=".4"/>
-	  <bits name="TCI" above="16" width=".4"/>
-	</header>
-	<header name="Ethertype">
-	  <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75"/>
+          <bits name="src" above="48" width=".75"/>
+        </header>
+        <header name="802.1Q">
+          <bits name="TPID" above="16" below="0x8100" width=".4"/>
+          <bits name="TCI" above="16" width=".4"/>
+        </header>
+        <header name="Ethertype">
+          <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
-	LLC and SNAP encapsulation look like this with an 802.1Q header:
+        LLC and SNAP encapsulation look like this with an 802.1Q header:
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width=".75"/>
-	  <bits name="src" above="48" width=".75"/>
-	</header>
-	<header name="802.1Q">
-	  <bits name="TPID" above="16" below="0x8100" width=".4"/>
-	  <bits name="TCI" above="16" width=".4"/>
-	</header>
-	<header name="Ethertype">
-	  <bits name="type" above="16" below="&lt;0x600" width="0.4"/>
-	</header>
-	<header name="LLC">
-	  <bits name="DSAP" above="8" below="0xaa" width=".4"/>
-	  <bits name="SSAP" above="8" below="0xaa" width=".4"/>
-	  <bits name="cntl" above="8" below="0x03" width=".4"/>
-	</header>
-	<header name="SNAP">
-	  <bits name="org" above="24" below="0x000000" width=".75"/>
-	  <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width=".75"/>
+          <bits name="src" above="48" width=".75"/>
+        </header>
+        <header name="802.1Q">
+          <bits name="TPID" above="16" below="0x8100" width=".4"/>
+          <bits name="TCI" above="16" width=".4"/>
+        </header>
+        <header name="Ethertype">
+          <bits name="type" above="16" below="&lt;0x600" width="0.4"/>
+        </header>
+        <header name="LLC">
+          <bits name="DSAP" above="8" below="0xaa" width=".4"/>
+          <bits name="SSAP" above="8" below="0xaa" width=".4"/>
+          <bits name="cntl" above="8" below="0x03" width=".4"/>
+        </header>
+        <header name="SNAP">
+          <bits name="org" above="24" below="0x000000" width=".75"/>
+          <bits name="type" above="16" below="\[&gt;=]0x600" width=".4" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
-	When a packet doesn't match any of the header formats described
-	above, Open vSwitch and OpenFlow set this field to
-	<code>0x5ff</code> (<code>OFP_DL_TYPE_NOT_ETH_TYPE</code>).
+        When a packet doesn't match any of the header formats described
+        above, Open vSwitch and OpenFlow set this field to
+        <code>0x5ff</code> (<code>OFP_DL_TYPE_NOT_ETH_TYPE</code>).
       </p>
     </field>
   </group>
@@ -3091,13 +3091,13 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <diagram>
       <header name="TPID">
-	<bits name="Ethertype" above="16" below="0x8100" width="1.8"/>
+        <bits name="Ethertype" above="16" below="0x8100" width="1.8"/>
       </header>
       <nospace/>
       <header name="TCI">
-	<bits name="PCP" above="3" width=".6"/>
-	<bits name="CFI" above="1" below="0" width=".3"/>
-	<bits name="VID" above="12" width=".9"/>
+        <bits name="PCP" above="3" width=".6"/>
+        <bits name="CFI" above="1" below="0" width=".3"/>
+        <bits name="VID" above="12" width=".9"/>
       </header>
     </diagram>
 
@@ -3123,28 +3123,28 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <ul>
       <li>
-	<dfn>PCP</dfn> (Priority Control Point), is a 3-bit 802.1p
-	<dfn>priority</dfn>.  The lowest priority is value 1, the
-	second-lowest is value 0, and priority increases from 2 up to
-	highest priority 7.
+        <dfn>PCP</dfn> (Priority Control Point), is a 3-bit 802.1p
+        <dfn>priority</dfn>.  The lowest priority is value 1, the
+        second-lowest is value 0, and priority increases from 2 up to
+        highest priority 7.
       </li>
 
       <li>
         <p>
-	  <dfn>CFI</dfn> (Canonical Format Indicator), is a 1-bit field.  On an
-	  Ethernet network, its value is always 0.  This led to it later being
-	  repurposed under the name <dfn>DEI</dfn> (Drop Eligibility
-	  Indicator).  By either name, OpenFlow and Open vSwitch don't provide
-	  any way to match or set this bit.
+          <dfn>CFI</dfn> (Canonical Format Indicator), is a 1-bit field.  On an
+          Ethernet network, its value is always 0.  This led to it later being
+          repurposed under the name <dfn>DEI</dfn> (Drop Eligibility
+          Indicator).  By either name, OpenFlow and Open vSwitch don't provide
+          any way to match or set this bit.
         </p>
       </li>
 
       <li>
-	<dfn>VID</dfn> (VLAN IDentifier), is a 12-bit VLAN.  If the
-	VID is 0, then the frame is not part of a VLAN.  In that case,
-	the VLAN header is called a <dfn>priority tag</dfn> because it
-	is only meaningful for assigning the frame a priority.  VID
-	<code>0xfff</code> (4,095) is reserved.
+        <dfn>VID</dfn> (VLAN IDentifier), is a 12-bit VLAN.  If the
+        VID is 0, then the frame is not part of a VLAN.  In that case,
+        the VLAN header is called a <dfn>priority tag</dfn> because it
+        is only meaningful for assigning the frame a priority.  VID
+        <code>0xfff</code> (4,095) is reserved.
       </li>
     </ul>
 
@@ -3190,9 +3190,9 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <ul>
       <li>
-	When both <code>dl_vlan</code> and <code>dl_vlan_pcp</code> are
-	wildcarded, the flow matches packets without an 802.1Q header or
-	with any 802.1Q header.
+        When both <code>dl_vlan</code> and <code>dl_vlan_pcp</code> are
+        wildcarded, the flow matches packets without an 802.1Q header or
+        with any 802.1Q header.
       </li>
 
       <li>
@@ -3204,27 +3204,27 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </li>
 
       <li>
-	<p>
-	  Otherwise, the flow matches only packets with an 802.1Q
-	  header.  If <code>dl_vlan</code> is not wildcarded, then the
-	  flow only matches packets with the VLAN ID specified in
-	  <code>dl_vlan</code>'s low 12 bits.  If
-	  <code>dl_vlan_pcp</code> is not wildcarded, then the flow
-	  only matches packets with the priority specified in
-	  <code>dl_vlan_pcp</code>'s low 3 bits.
-	</p>
-
-	<p>
-	  OpenFlow does not specify how to interpret the high 4 bits of
-	  <code>dl_vlan</code> or the high 5 bits of <code>dl_vlan_pcp</code>.
-	  Open vSwitch ignores them.
-	</p>
+        <p>
+          Otherwise, the flow matches only packets with an 802.1Q
+          header.  If <code>dl_vlan</code> is not wildcarded, then the
+          flow only matches packets with the VLAN ID specified in
+          <code>dl_vlan</code>'s low 12 bits.  If
+          <code>dl_vlan_pcp</code> is not wildcarded, then the flow
+          only matches packets with the priority specified in
+          <code>dl_vlan_pcp</code>'s low 3 bits.
+        </p>
+
+        <p>
+          OpenFlow does not specify how to interpret the high 4 bits of
+          <code>dl_vlan</code> or the high 5 bits of <code>dl_vlan_pcp</code>.
+          Open vSwitch ignores them.
+        </p>
       </li>
     </ul>
 
     <field id="MFF_DL_VLAN" title="OpenFlow 1.0 VLAN ID" hidden="yes"/>
     <field id="MFF_DL_VLAN_PCP" title="OpenFlow 1.0 VLAN Priority"
-	   hidden="yes"/>
+           hidden="yes"/>
 
     <h2>OpenFlow 1.1 VLAN Fields</h2>
 
@@ -3257,88 +3257,88 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <field id="MFF_VLAN_VID" title="OpenFlow 1.2+ VLAN ID">
       <p>
-	The OpenFlow standard describes this field as consisting of
-	``12+1'' bits.  On ingress, its value is 0 if no 802.1Q header
-	is present, and otherwise it holds the VLAN VID in its least
-	significant 12 bits, with bit 12 (<code>0x1000</code> aka
-	<code>OFPVID_PRESENT</code>) also set to 1.  The three most
-	significant bits are always zero:
+        The OpenFlow standard describes this field as consisting of
+        ``12+1'' bits.  On ingress, its value is 0 if no 802.1Q header
+        is present, and otherwise it holds the VLAN VID in its least
+        significant 12 bits, with bit 12 (<code>0x1000</code> aka
+        <code>OFPVID_PRESENT</code>) also set to 1.  The three most
+        significant bits are always zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_VLAN_VID">
-	  <bits name="" above="3" below="0" width=".6"/>
-	  <bits name="P" above="1" width=".1"/>
-	  <bits name="VLAN ID" above="12" width=".9"/>
-	</header>
+        <header name="OXM_OF_VLAN_VID">
+          <bits name="" above="3" below="0" width=".6"/>
+          <bits name="P" above="1" width=".1"/>
+          <bits name="VLAN ID" above="12" width=".9"/>
+        </header>
       </diagram>
 
       <p>
-	As a consequence of this field's format, one may use it to match the
-	VLAN ID in all of the ways available with the OpenFlow 1.0 and 1.1
-	formats, and a few new ways:
+        As a consequence of this field's format, one may use it to match the
+        VLAN ID in all of the ways available with the OpenFlow 1.0 and 1.1
+        formats, and a few new ways:
       </p>
 
       <dl>
-	<dt>Fully wildcarded</dt>
-	<dd>
-	  Matches any packet, that is, one without an 802.1Q header or
-	  with an 802.1Q header with any TCI value.
-	</dd>
-
-	<dt>
-	  Value <code>0x0000</code> (<code>OFPVID_NONE</code>), mask
-	  <code>0xffff</code> (or no mask)
-	</dt>
-	<dd>
-	  Matches only packets without an 802.1Q header.
-	</dd>
-
-	<dt>
-	  Value <code>0x1000</code>, mask <code>0x1000</code>
-	</dt>
-	<dd>
-	  Matches any packet with an 802.1Q header, regardless of VLAN
-	  ID.
-	</dd>
-
-	<dt>
-	  Value <code>0x1009</code>, mask <code>0xffff</code> (or no mask)
-	</dt>
-	<dd>
-	  Match only packets with an 802.1Q header with VLAN ID 9.
-	</dd>
-
-	<dt>Value <code>0x1001</code>, mask <code>0x1001</code></dt>
-	<dd>
-	  Matches only packets that have an 802.1Q header with an
-	  odd-numbered VLAN ID.  (This is just an example; one can
-	  match on any desired VLAN ID bit pattern.)
-	</dd>
+        <dt>Fully wildcarded</dt>
+        <dd>
+          Matches any packet, that is, one without an 802.1Q header or
+          with an 802.1Q header with any TCI value.
+        </dd>
+
+        <dt>
+          Value <code>0x0000</code> (<code>OFPVID_NONE</code>), mask
+          <code>0xffff</code> (or no mask)
+        </dt>
+        <dd>
+          Matches only packets without an 802.1Q header.
+        </dd>
+
+        <dt>
+          Value <code>0x1000</code>, mask <code>0x1000</code>
+        </dt>
+        <dd>
+          Matches any packet with an 802.1Q header, regardless of VLAN
+          ID.
+        </dd>
+
+        <dt>
+          Value <code>0x1009</code>, mask <code>0xffff</code> (or no mask)
+        </dt>
+        <dd>
+          Match only packets with an 802.1Q header with VLAN ID 9.
+        </dd>
+
+        <dt>Value <code>0x1001</code>, mask <code>0x1001</code></dt>
+        <dd>
+          Matches only packets that have an 802.1Q header with an
+          odd-numbered VLAN ID.  (This is just an example; one can
+          match on any desired VLAN ID bit pattern.)
+        </dd>
       </dl>
     </field>
 
     <field id="MFF_VLAN_PCP" title="OpenFlow 1.2+ VLAN Priority">
       <p>
-	The 3 least significant bits may be used to match the PCP bits
-	in an 802.1Q header.  Other bits are always zero:
+        The 3 least significant bits may be used to match the PCP bits
+        in an 802.1Q header.  Other bits are always zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_VLAN_VID">
-	  <bits name="zero" above="5" below="0" width="1.0"/>
-	  <bits name="PCP" above="3" width=".6"/>
-	</header>
+        <header name="OXM_OF_VLAN_VID">
+          <bits name="zero" above="5" below="0" width="1.0"/>
+          <bits name="PCP" above="3" width=".6"/>
+        </header>
       </diagram>
 
       <p>
-	This field may only be used when <ref field="vlan_vid"/> is not
-	wildcarded and does not exact match on 0 (which only matches
-	when there is no 802.1Q header).
+        This field may only be used when <ref field="vlan_vid"/> is not
+        wildcarded and does not exact match on 0 (which only matches
+        when there is no 802.1Q header).
       </p>
 
       <p>
-	See <cite>VLAN Comparison Chart</cite>, below, for some examples.
+        See <cite>VLAN Comparison Chart</cite>, below, for some examples.
       </p>
     </field>
 
@@ -3352,19 +3352,19 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <field id="MFF_VLAN_TCI" title="VLAN TCI">
       <p>
-	For a packet without an 802.1Q header, this field is zero.  For a
-	packet with an 802.1Q header, this field is the TCI with the bit in
-	CFI's position (marked <code>P</code> for ``present'' below) forced to
-	1.  Thus, for a packet in VLAN 9 with priority 7, it has the value
-	<code>0xf009</code>:
+        For a packet without an 802.1Q header, this field is zero.  For a
+        packet with an 802.1Q header, this field is the TCI with the bit in
+        CFI's position (marked <code>P</code> for ``present'' below) forced to
+        1.  Thus, for a packet in VLAN 9 with priority 7, it has the value
+        <code>0xf009</code>:
       </p>
 
       <diagram>
-	<header name="NXM_VLAN_TCI">
-	  <bits name="PCP" above="3" below="7" width=".6"/>
-	  <bits name="P" above="1" below="1" width=".2"/>
-	  <bits name="VID" above="12" below="9" width=".9"/>
-	  </header>
+        <header name="NXM_VLAN_TCI">
+          <bits name="PCP" above="3" below="7" width=".6"/>
+          <bits name="P" above="1" below="1" width=".2"/>
+          <bits name="VID" above="12" below="9" width=".9"/>
+          </header>
       </diagram>
 
       <p>
@@ -3417,7 +3417,7 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
       </dl>
 
       <p>
-	See <cite>VLAN Comparison Chart</cite>, below, for more examples.
+        See <cite>VLAN Comparison Chart</cite>, below, for more examples.
       </p>
     </field>
 
@@ -3431,22 +3431,22 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
 
     <tbl>
 r r r r r.
-Criteria	OpenFlow 1.0	OpenFlow 1.1	OpenFlow 1.2+	NXM
-\_	\_	\_	\_	\_
-[1]	\fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR	\fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR	\fL0000\fR/\fL0000\fR,\fL--\fR	\fL0000\fR/\fL0000\fR
-[2]	\fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR	\fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR	\fL0000\fR/\fLffff\fR,\fL--\fR	\fL0000\fR/\fLffff\fR
-[3]	\fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR	\fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR	\fL1xxx\fR/\fLffff\fR,\fL--\fR	\fL1xxx\fR/\fL1fff\fR
-[4]	\fL????\fR/\fL1\fR,\fL0y\fR/\fL0\fR	\fLfffe\fR/\fL0\fR,\fL0y\fR/\fL0\fR	\fL1000\fR/\fL1000\fR,\fL0y\fR	\fLz000\fR/\fLf000\fR
-[5]	\fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR	\fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR	\fL1xxx\fR/\fLffff\fR,\fL0y\fR	\fLzxxx\fR/\fLffff\fR
+Criteria        OpenFlow 1.0    OpenFlow 1.1    OpenFlow 1.2+   NXM
+\_      \_      \_      \_      \_
+[1]     \fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR     \fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR     \fL0000\fR/\fL0000\fR,\fL--\fR  \fL0000\fR/\fL0000\fR
+[2]     \fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR     \fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR     \fL0000\fR/\fLffff\fR,\fL--\fR  \fL0000\fR/\fLffff\fR
+[3]     \fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR     \fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR     \fL1xxx\fR/\fLffff\fR,\fL--\fR  \fL1xxx\fR/\fL1fff\fR
+[4]     \fL????\fR/\fL1\fR,\fL0y\fR/\fL0\fR     \fLfffe\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL1000\fR/\fL1000\fR,\fL0y\fR  \fLz000\fR/\fLf000\fR
+[5]     \fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL1xxx\fR/\fLffff\fR,\fL0y\fR  \fLzxxx\fR/\fLffff\fR
 .T&amp;
 r r c c r.
-[6]	(none)	(none)	\fL1001\fR/\fL1001\fR,\fL--\fR	\fL1001\fR/\fL1001\fR
+[6]     (none)  (none)  \fL1001\fR/\fL1001\fR,\fL--\fR  \fL1001\fR/\fL1001\fR
 .T&amp;
 r r c c c.
-[7]	(none)	(none)	(none)	\fL3000\fR/\fL3000\fR
-[8]	(none)	(none)	(none)	\fL0000\fR/\fL0fff\fR
-[9]	(none)	(none)	(none)	\fL0000\fR/\fLf000\fR
-[10]	(none)	(none)	(none)	\fL0000\fR/\fLefff\fR
+[7]     (none)  (none)  (none)  \fL3000\fR/\fL3000\fR
+[8]     (none)  (none)  (none)  \fL0000\fR/\fL0fff\fR
+[9]     (none)  (none)  (none)  \fL0000\fR/\fLf000\fR
+[10]    (none)  (none)  (none)  \fL0000\fR/\fLefff\fR
     </tbl>
 
     <p>
@@ -3461,32 +3461,32 @@ r r c c c.
       <dt>OpenFlow 1.0</dt>
       <dt>OpenFlow 1.1</dt>
       <dd>
-	<literal>wwww/x,yy/z</literal> means VLAN ID match value
-	<literal>wwww</literal> with wildcard bit <literal>x</literal>
-	and VLAN PCP match value <literal>yy</literal> with wildcard
-	bit <literal>z</literal>.  <literal>?</literal> means that the
-	given bits are ignored (and conventionally
-	<literal>0</literal> for <literal>wwww</literal> or
-	<literal>yy</literal>, conventionally <literal>1</literal> for
-	<literal>x</literal> or <literal>z</literal>).  ``(none)''
-	means that OpenFlow 1.0 (or 1.1) cannot match with these
-	criteria.
+        <literal>wwww/x,yy/z</literal> means VLAN ID match value
+        <literal>wwww</literal> with wildcard bit <literal>x</literal>
+        and VLAN PCP match value <literal>yy</literal> with wildcard
+        bit <literal>z</literal>.  <literal>?</literal> means that the
+        given bits are ignored (and conventionally
+        <literal>0</literal> for <literal>wwww</literal> or
+        <literal>yy</literal>, conventionally <literal>1</literal> for
+        <literal>x</literal> or <literal>z</literal>).  ``(none)''
+        means that OpenFlow 1.0 (or 1.1) cannot match with these
+        criteria.
       </dd>
 
       <dt>OpenFlow 1.2+</dt>
       <dd>
-	<literal>xxxx/yyyy,zz</literal> means <ref field="vlan_vid"/> with
-	value <literal>xxxx</literal> and mask <literal>yyyy</literal>, and
-	<ref field="vlan_pcp"/> (which is not maskable) with value
-	<literal>zz</literal>.  <literal>--</literal> means that <ref
-	field="vlan_pcp"/> is omitted.  ``(none)'' means that OpenFlow 1.2
-	cannot match with these criteria.
+        <literal>xxxx/yyyy,zz</literal> means <ref field="vlan_vid"/> with
+        value <literal>xxxx</literal> and mask <literal>yyyy</literal>, and
+        <ref field="vlan_pcp"/> (which is not maskable) with value
+        <literal>zz</literal>.  <literal>--</literal> means that <ref
+        field="vlan_pcp"/> is omitted.  ``(none)'' means that OpenFlow 1.2
+        cannot match with these criteria.
       </dd>
 
       <dt>NXM</dt>
       <dd>
-	<literal>xxxx/yyyy</literal> means <ref field="vlan_tci"/> with value
-	<literal>xxxx</literal> and mask <literal>yyyy</literal>.
+        <literal>xxxx/yyyy</literal> means <ref field="vlan_tci"/> with value
+        <literal>xxxx</literal> and mask <literal>yyyy</literal>.
       </dd>
     </dl>
 
@@ -3497,111 +3497,111 @@ r r c c c.
     <dl>
       <dt>[1]</dt>
       <dd>
-	Matches any packet, that is, one without an 802.1Q header or
-	with an 802.1Q header with any TCI value.
+        Matches any packet, that is, one without an 802.1Q header or
+        with an 802.1Q header with any TCI value.
       </dd>
 
       <dt>[2]</dt>
       <dd>
-	<p>
-	  Matches only packets without an 802.1Q header.
-	</p>
-
-	<p>
-	  OpenFlow 1.0 doesn't define the behavior if <ref field="dl_vlan"/> is
-	  set to <code>0xffff</code> and <ref field="dl_vlan_pcp"/> is not
-	  wildcarded.  (Open vSwitch always ignores <ref field="dl_vlan_pcp"/>
-	  when <ref field="dl_vlan"/> is set to <code>0xffff</code>.)
-	</p>
-
-	<p>
-	  OpenFlow 1.1 says explicitly to ignore <ref field="dl_vlan_pcp"/>
-	  when <ref field="dl_vlan"/> is set to <code>0xffff</code>.
-	</p>
-
-	<p>
-	  OpenFlow 1.2 doesn't say how to interpret a match with <ref
-	  field="vlan_vid"/> value 0 and a mask with
-	  <code>OFPVID_PRESENT</code> (<code>0x1000</code>) set to 1 and some
-	  other bits in the mask set to 1 also.  Open vSwitch interprets it the
-	  same way as a mask of <code>0x1000</code>.
-	</p>
-
-	<p>
-	  Any NXM match with <ref field="vlan_tci"/> value 0 and the CFI bit
-	  set to 1 in the mask is equivalent to the one listed in the table.
-	</p>
+        <p>
+          Matches only packets without an 802.1Q header.
+        </p>
+
+        <p>
+          OpenFlow 1.0 doesn't define the behavior if <ref field="dl_vlan"/> is
+          set to <code>0xffff</code> and <ref field="dl_vlan_pcp"/> is not
+          wildcarded.  (Open vSwitch always ignores <ref field="dl_vlan_pcp"/>
+          when <ref field="dl_vlan"/> is set to <code>0xffff</code>.)
+        </p>
+
+        <p>
+          OpenFlow 1.1 says explicitly to ignore <ref field="dl_vlan_pcp"/>
+          when <ref field="dl_vlan"/> is set to <code>0xffff</code>.
+        </p>
+
+        <p>
+          OpenFlow 1.2 doesn't say how to interpret a match with <ref
+          field="vlan_vid"/> value 0 and a mask with
+          <code>OFPVID_PRESENT</code> (<code>0x1000</code>) set to 1 and some
+          other bits in the mask set to 1 also.  Open vSwitch interprets it the
+          same way as a mask of <code>0x1000</code>.
+        </p>
+
+        <p>
+          Any NXM match with <ref field="vlan_tci"/> value 0 and the CFI bit
+          set to 1 in the mask is equivalent to the one listed in the table.
+        </p>
       </dd>
 
       <dt>[3]</dt>
       <dd>
-	Matches only packets that have an 802.1Q header with VID
-	<literal>xxx</literal> (and any PCP).
+        Matches only packets that have an 802.1Q header with VID
+        <literal>xxx</literal> (and any PCP).
       </dd>
 
       <dt>[4]</dt>
       <dd>
-	<p>
-	  Matches only packets that have an 802.1Q header with PCP
-	  <literal>y</literal> (and any VID).
-	</p>
-
-	<p>
-	  OpenFlow 1.0 doesn't clearly define the behavior for this
-	  case.  Open vSwitch implements it this way.
-	</p>
-
-	<p>
-	  In the NXM value, <literal>z</literal> equals
-	  (<literal>y</literal> &lt;&lt; 1) | 1.
-	</p>
+        <p>
+          Matches only packets that have an 802.1Q header with PCP
+          <literal>y</literal> (and any VID).
+        </p>
+
+        <p>
+          OpenFlow 1.0 doesn't clearly define the behavior for this
+          case.  Open vSwitch implements it this way.
+        </p>
+
+        <p>
+          In the NXM value, <literal>z</literal> equals
+          (<literal>y</literal> &lt;&lt; 1) | 1.
+        </p>
       </dd>
 
       <dt>[5]</dt>
       <dd>
-	<p>
-	  Matches only packets that have an 802.1Q header with VID
-	  <literal>xxx</literal> and PCP <literal>y</literal>.
-	</p>
-
-	<p>
-	  In the NXM value, <literal>z</literal> equals
-	  (<literal>y</literal> &lt;&lt; 1) | 1.
-	</p>
+        <p>
+          Matches only packets that have an 802.1Q header with VID
+          <literal>xxx</literal> and PCP <literal>y</literal>.
+        </p>
+
+        <p>
+          In the NXM value, <literal>z</literal> equals
+          (<literal>y</literal> &lt;&lt; 1) | 1.
+        </p>
       </dd>
 
       <dt>[6]</dt>
       <dd>
-	Matches only packets that have an 802.1Q header with an
-	odd-numbered VID (and any PCP).  Only possible with OpenFlow
-	1.2 and NXM.  (This is just an example; one can match on any
-	desired VID bit pattern.)
+        Matches only packets that have an 802.1Q header with an
+        odd-numbered VID (and any PCP).  Only possible with OpenFlow
+        1.2 and NXM.  (This is just an example; one can match on any
+        desired VID bit pattern.)
       </dd>
 
       <dt>[7]</dt>
       <dd>
-	Matches only packets that have an 802.1Q header with an
-	odd-numbered PCP (and any VID).  Only possible with NXM.
-	(This is just an example; one can match on any desired VID bit
-	pattern.)
+        Matches only packets that have an 802.1Q header with an
+        odd-numbered PCP (and any VID).  Only possible with NXM.
+        (This is just an example; one can match on any desired VID bit
+        pattern.)
       </dd>
 
       <dt>[8]</dt>
       <dd>
-	Matches packets with no 802.1Q header or with an 802.1Q header
-	with a VID of 0.  Only possible with NXM.
+        Matches packets with no 802.1Q header or with an 802.1Q header
+        with a VID of 0.  Only possible with NXM.
       </dd>
 
       <dt>[9]</dt>
       <dd>
-	Matches packets with no 802.1Q header or with an 802.1Q header
-	with a PCP of 0.  Only possible with NXM.
+        Matches packets with no 802.1Q header or with an 802.1Q header
+        with a PCP of 0.  Only possible with NXM.
       </dd>
 
       <dt>[10]</dt>
       <dd>
-	Matches packets with no 802.1Q header or with an 802.1Q header
-	with both VID and PCP of 0.  Only possible with NXM.
+        Matches packets with no 802.1Q header or with an 802.1Q header
+        with both VID and PCP of 0.  Only possible with NXM.
       </dd>
     </dl>
   </group>
@@ -3625,15 +3625,15 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.75"/>
-	<bits name="src" above="48" width="0.75"/>
-	<bits name="type" above="16" below="0x8847" width="0.4"/>
+        <bits name="dst" above="48" width="0.75"/>
+        <bits name="src" above="48" width="0.75"/>
+        <bits name="type" above="16" below="0x8847" width="0.4"/>
       </header>
       <header name="MPLS">
-	<bits name="label" above="20" width=".6"/>
-	<bits name="TC" above="3" width=".3"/>
-	<bits name="S" above="1" width=".1"/>
-	<bits name="TTL" above="8" width=".4"/>
+        <bits name="label" above="20" width=".6"/>
+        <bits name="TC" above="3" width=".3"/>
+        <bits name="S" above="1" width=".1"/>
+        <bits name="TTL" above="8" width=".4"/>
       </header>
       <dots/>
     </diagram>
@@ -3645,21 +3645,21 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width=".75"/>
-	<bits name="src" above="48" width=".75"/>
+        <bits name="dst" above="48" width=".75"/>
+        <bits name="src" above="48" width=".75"/>
       </header>
       <header name="802.1Q">
-	<bits name="TPID" above="16" below="0x8100" width=".4"/>
-	<bits name="TCI" above="16" width=".4"/>
+        <bits name="TPID" above="16" below="0x8100" width=".4"/>
+        <bits name="TCI" above="16" width=".4"/>
       </header>
       <header name="Ethertype">
-	<bits name="type" above="16" below="0x8847" width=".4"/>
+        <bits name="type" above="16" below="0x8847" width=".4"/>
       </header>
       <header name="MPLS">
-	<bits name="label" above="20" width=".6"/>
-	<bits name="TC" above="3" width=".3"/>
-	<bits name="S" above="1" width=".1"/>
-	<bits name="TTL" above="8" width=".4"/>
+        <bits name="label" above="20" width=".6"/>
+        <bits name="TC" above="3" width=".3"/>
+        <bits name="S" above="1" width=".1"/>
+        <bits name="TTL" above="8" width=".4"/>
       </header>
       <dots/>
     </diagram>
@@ -3671,38 +3671,38 @@ r r c c c.
     <dl>
       <dt>Label, 20 bits.</dt>
       <dd>
-	An identifier.
+        An identifier.
       </dd>
 
       <dt>Traffic control (TC), 3 bits.</dt>
       <dd>
-	Used for quality of service.
+        Used for quality of service.
       </dd>
 
       <dt>Bottom of stack (BOS), 1 bit (labeled just ``S'' above).</dt>
       <dd>
-	<p>
-	  0 indicates that another MPLS label follows this one.
-	</p>
-
-	<p>
-	  1 indicates that this MPLS label is the last one in the
-	  stack, so that some other protocol follows this one.
-	</p>
+        <p>
+          0 indicates that another MPLS label follows this one.
+        </p>
+
+        <p>
+          1 indicates that this MPLS label is the last one in the
+          stack, so that some other protocol follows this one.
+        </p>
       </dd>
 
       <dt>Time to live (TTL), 8 bits.</dt>
       <dd>
-	<p>
-	  Each hop across an MPLS network decrements the TTL by 1.  If
-	  it reaches 0, the packet is discarded.
-	</p>
-
-	<p>
-	  OpenFlow does not make the MPLS TTL available as a match field, but
-	  actions are available to set and decrement the TTL.  Open vSwitch 2.6
-	  and later makes the MPLS TTL available as an extension.
-	</p>
+        <p>
+          Each hop across an MPLS network decrements the TTL by 1.  If
+          it reaches 0, the packet is discarded.
+        </p>
+
+        <p>
+          OpenFlow does not make the MPLS TTL available as a match field, but
+          actions are available to set and decrement the TTL.  Open vSwitch 2.6
+          and later makes the MPLS TTL available as an extension.
+        </p>
       </dd>
     </dl>
 
@@ -3736,28 +3736,28 @@ r r c c c.
 
     <ul>
       <li>
-	A few reserved label values do indicate an inner protocol.
-	Label 0, the ``IPv4 Explicit NULL Label,'' indicates inner
-	IPv4.  Label 2, the ``IPv6 Explicit NULL Label,'' indicates
-	inner IPv6.
+        A few reserved label values do indicate an inner protocol.
+        Label 0, the ``IPv4 Explicit NULL Label,'' indicates inner
+        IPv4.  Label 2, the ``IPv6 Explicit NULL Label,'' indicates
+        inner IPv6.
       </li>
 
       <li>
-	Some deployments use a single inner protocol consistently.
+        Some deployments use a single inner protocol consistently.
       </li>
 
       <li>
-	In some deployments, the inner protocol must be inferred from
-	the innermost label.
+        In some deployments, the inner protocol must be inferred from
+        the innermost label.
       </li>
 
       <li>
-	In some deployments, the inner protocol must be inferred from
-	the innermost label and the encapsulated data, e.g. to
-	distinguish between inner IPv4 and IPv6 based on whether the
-	first nibble of the inner protocol data are <code>4</code> or
-	<code>6</code>.  OpenFlow and Open vSwitch do not currently
-	support these cases.
+        In some deployments, the inner protocol must be inferred from
+        the innermost label and the encapsulated data, e.g. to
+        distinguish between inner IPv4 and IPv6 based on whether the
+        first nibble of the inner protocol data are <code>4</code> or
+        <code>6</code>.  OpenFlow and Open vSwitch do not currently
+        support these cases.
       </li>
     </ul>
 
@@ -3772,82 +3772,82 @@ r r c c c.
 
     <field id="MFF_MPLS_LABEL" title="MPLS Label">
       <p>
-	The least significant 20 bits hold the ``label'' field from
-	the MPLS label.  Other bits are zero:
+        The least significant 20 bits hold the ``label'' field from
+        the MPLS label.  Other bits are zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_MPLS_LABEL">
-	  <bits name="zero" above="12" below="0" width=".6"/>
-	  <bits name="label" above="20" width="1.0"/>
-	</header>
+        <header name="OXM_OF_MPLS_LABEL">
+          <bits name="zero" above="12" below="0" width=".6"/>
+          <bits name="label" above="20" width="1.0"/>
+        </header>
       </diagram>
 
       <p>
-	Most label values are available for any use by deployments.
-	Values under 16 are reserved.
+        Most label values are available for any use by deployments.
+        Values under 16 are reserved.
       </p>
     </field>
 
     <field id="MFF_MPLS_TC" title="MPLS Traffic Class">
       <p>
-	The least significant 3 bits hold the TC field from the MPLS
-	label.  Other bits are zero:
+        The least significant 3 bits hold the TC field from the MPLS
+        label.  Other bits are zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_MPLS_TC">
-	  <bits name="zero" above="5" below="0" width="1.0"/>
-	  <bits name="TC" above="3" width=".6"/>
-	</header>
+        <header name="OXM_OF_MPLS_TC">
+          <bits name="zero" above="5" below="0" width="1.0"/>
+          <bits name="TC" above="3" width=".6"/>
+        </header>
       </diagram>
 
       <p>
-	This field is intended for use for Quality of Service (QoS)
-	and Explicit Congestion Notification purposes, but its
-	particular interpretation is deployment specific.
+        This field is intended for use for Quality of Service (QoS)
+        and Explicit Congestion Notification purposes, but its
+        particular interpretation is deployment specific.
       </p>
 
       <p>
-	Before 2009, this field was named EXP and reserved for
-	experimental use [RFC 5462].
+        Before 2009, this field was named EXP and reserved for
+        experimental use [RFC 5462].
       </p>
     </field>
 
     <field id="MFF_MPLS_BOS" title="MPLS Bottom of Stack">
       <p>
-	The least significant bit holds the BOS field from the MPLS
-	label.  Other bits are zero:
+        The least significant bit holds the BOS field from the MPLS
+        label.  Other bits are zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_MPLS_BOS">
-	  <bits name="zero" above="7" below="0" width="1.3"/>
-	  <bits name="BOS" above="1" width=".3"/>
-	</header>
+        <header name="OXM_OF_MPLS_BOS">
+          <bits name="zero" above="7" below="0" width="1.3"/>
+          <bits name="BOS" above="1" width=".3"/>
+        </header>
       </diagram>
 
       <p>
-	This field is useful as part of processing a series of incoming MPLS
-	labels.  A flow that includes a <code>pop_mpls</code> action should
-	generally match on <ref field="mpls_bos"/>:
+        This field is useful as part of processing a series of incoming MPLS
+        labels.  A flow that includes a <code>pop_mpls</code> action should
+        generally match on <ref field="mpls_bos"/>:
       </p>
 
       <ul>
-	<li>
-	  When <ref field="mpls_bos"/> is 1, there is another MPLS label
-	  following this one, so the Ethertype passed to <code>pop_mpls</code>
-	  should be an MPLS Ethertype.  For example: <code>table=0,
-	  dl_type=0x8847, mpls_bos=1, actions=pop_mpls:0x8847,
-	  goto_table:1</code>
-	</li>
-
-	<li>
-	  When <ref field="mpls_bos"/> is 0, this MPLS label is the last one,
-	  so the Ethertype passed to <code>pop_mpls</code> should be a non-MPLS
-	  Ethertype such as IPv4.  For example: <code>table=1, dl_type=0x8847,
-	  mpls_bos=0, actions=pop_mpls:0x0800, goto_table:2</code>
-	</li>
+        <li>
+          When <ref field="mpls_bos"/> is 1, there is another MPLS label
+          following this one, so the Ethertype passed to <code>pop_mpls</code>
+          should be an MPLS Ethertype.  For example: <code>table=0,
+          dl_type=0x8847, mpls_bos=1, actions=pop_mpls:0x8847,
+          goto_table:1</code>
+        </li>
+
+        <li>
+          When <ref field="mpls_bos"/> is 0, this MPLS label is the last one,
+          so the Ethertype passed to <code>pop_mpls</code> should be a non-MPLS
+          Ethertype such as IPv4.  For example: <code>table=1, dl_type=0x8847,
+          mpls_bos=0, actions=pop_mpls:0x0800, goto_table:2</code>
+        </li>
       </ul>
     </field>
 
@@ -3857,9 +3857,9 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="NXM_NX_MPLS_TTL">
-	  <bits name="TTL" above="8" width=".4"/>
-	</header>
+        <header name="NXM_NX_MPLS_TTL">
+          <bits name="TTL" above="8" width=".4"/>
+        </header>
       </diagram>
     </field>
   </group>
@@ -3878,18 +3878,18 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" width="0.4"/>
-	  <bits name="src" above="32" width="0.4" fill="yes"/>
-	  <bits name="dst" above="32" width="0.4"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" width="0.4"/>
+          <bits name="src" above="32" width="0.4" fill="yes"/>
+          <bits name="dst" above="32" width="0.4"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -3904,18 +3904,18 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x800" width="0.4"/>
-	</header>
-	<header name="IPv4">
-	  <bits name="..." width="0.4"/>
-	  <bits name="proto" above="8" width="0.4"/>
-	  <bits name="src" above="32" width="0.4"/>
-	  <bits name="dst" above="32" width="0.4" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x800" width="0.4"/>
+        </header>
+        <header name="IPv4">
+          <bits name="..." width="0.4"/>
+          <bits name="proto" above="8" width="0.4"/>
+          <bits name="src" above="32" width="0.4"/>
+          <bits name="dst" above="32" width="0.4" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -3937,18 +3937,18 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x86dd" width="0.4"/>
-	</header>
-	<header name="IPv6">
-	  <bits name="..." width="0.4"/>
-	  <bits name="next" above="8" width="0.3"/>
-	  <bits name="src" above="128" width="0.8" fill="yes"/>
-	  <bits name="dst" above="128" width="0.8"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x86dd" width="0.4"/>
+        </header>
+        <header name="IPv6">
+          <bits name="..." width="0.4"/>
+          <bits name="next" above="8" width="0.3"/>
+          <bits name="src" above="128" width="0.8" fill="yes"/>
+          <bits name="dst" above="128" width="0.8"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -3961,18 +3961,18 @@ r r c c c.
         The destination address from the IPv6 header:
       </p>
       <diagram>
-	<header name="Ethernet">
-	  <bits name="dst" above="48" width="0.4"/>
-	  <bits name="src" above="48" width="0.4"/>
-	  <bits name="type" above="16" below="0x86dd" width="0.4"/>
-	</header>
-	<header name="IPv6">
-	  <bits name="..." width="0.4"/>
-	  <bits name="next" above="8" width="0.3"/>
-	  <bits name="src" above="128" width="0.8"/>
-	  <bits name="dst" above="128" width="0.8" fill="yes"/>
-	</header>
-	<dots/>
+        <header name="Ethernet">
+          <bits name="dst" above="48" width="0.4"/>
+          <bits name="src" above="48" width="0.4"/>
+          <bits name="type" above="16" below="0x86dd" width="0.4"/>
+        </header>
+        <header name="IPv6">
+          <bits name="..." width="0.4"/>
+          <bits name="next" above="8" width="0.3"/>
+          <bits name="src" above="128" width="0.8"/>
+          <bits name="dst" above="128" width="0.8" fill="yes"/>
+        </header>
+        <dots/>
       </diagram>
 
       <p>
@@ -3982,15 +3982,15 @@ r r c c c.
     </field>
     <field id="MFF_IPV6_LABEL" title="IPv6 Flow Label">
       <p>
-	The least significant 20 bits hold the flow label field from
-	the IPv6 header.  Other bits are zero:
+        The least significant 20 bits hold the flow label field from
+        the IPv6 header.  Other bits are zero:
       </p>
 
       <diagram>
-	<header name="OXM_OF_IPV6_FLABEL">
-	  <bits name="zero" above="12" below="0" width=".6"/>
-	  <bits name="label" above="20" width="1.0"/>
-	</header>
+        <header name="OXM_OF_IPV6_FLABEL">
+          <bits name="zero" above="12" below="0" width=".6"/>
+          <bits name="label" above="20" width="1.0"/>
+        </header>
       </diagram>
     </field>
 
@@ -4067,11 +4067,11 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="NXM_NX_IP_FRAG">
-	  <bits name="zero" above="6" below="0" width=".9"/>
-	  <bits name="later" above="1" width=".3"/>
-	  <bits name="any" above="1" width=".3"/>
-	</header>
+        <header name="NXM_NX_IP_FRAG">
+          <bits name="zero" above="6" below="0" width=".9"/>
+          <bits name="later" above="1" width=".3"/>
+          <bits name="any" above="1" width=".3"/>
+        </header>
       </diagram>
 
       <p>
@@ -4149,8 +4149,8 @@ r r c c c.
 
     <diagram>
       <header name="type of service">
-	<bits name="DSCP" above="6" width=".9"/>
-	<bits name="ECN" above="2" width=".3"/>
+        <bits name="DSCP" above="6" width=".9"/>
+        <bits name="ECN" above="2" width=".3"/>
       </header>
     </diagram>
 
@@ -4160,10 +4160,10 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="NXM_OF_IP_TOS">
-	  <bits name="DSCP" above="6" width=".9"/>
-	  <bits name="zero" above="2" below="0" width=".3"/>
-	</header>
+        <header name="NXM_OF_IP_TOS">
+          <bits name="DSCP" above="6" width=".9"/>
+          <bits name="zero" above="2" below="0" width=".3"/>
+        </header>
       </diagram>
     </field>
     <field id="MFF_IP_DSCP_SHIFTED" title="IPv4/v6 DSCP (Bits 0-5)">
@@ -4173,10 +4173,10 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="OXM_OF_IP_DSCP">
-	  <bits name="zero" above="2" below="0" width=".3"/>
-	  <bits name="DSCP" above="6" width=".9"/>
-	</header>
+        <header name="OXM_OF_IP_DSCP">
+          <bits name="zero" above="2" below="0" width=".3"/>
+          <bits name="DSCP" above="6" width=".9"/>
+        </header>
       </diagram>
     </field>
     <field id="MFF_IP_ECN" title="IPv4/v6 ECN">
@@ -4185,10 +4185,10 @@ r r c c c.
       </p>
 
       <diagram>
-	<header name="OXM_OF_IP_ECN">
-	  <bits name="zero" above="6" below="0" width=".9"/>
-	  <bits name="ECN" above="2" width=".35"/>
-	</header>
+        <header name="OXM_OF_IP_ECN">
+          <bits name="zero" above="6" below="0" width=".9"/>
+          <bits name="ECN" above="2" width=".35"/>
+        </header>
       </diagram>
     </field>
 
@@ -4207,20 +4207,20 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x806" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x806" width="0.4"/>
       </header>
       <header name="ARP">
-	<bits name="hrd" above="16" below="1" width=".3"/>
-	<bits name="pro" above="16" below="0x800" width=".3"/>
-	<bits name="hln" above="8" below="6" width=".2"/>
-	<bits name="pln" above="8" below="4" width=".2"/>
-	<bits name="op" above="16" width=".2" fill="yes"/>
-	<bits name="sha" above="48" width="0.5" fill="yes"/>
-	<bits name="spa" above="16" width="0.3" fill="yes"/>
-	<bits name="tha" above="48" width="0.5" fill="yes"/>
-	<bits name="tpa" above="16" width="0.3" fill="yes"/>
+        <bits name="hrd" above="16" below="1" width=".3"/>
+        <bits name="pro" above="16" below="0x800" width=".3"/>
+        <bits name="hln" above="8" below="6" width=".2"/>
+        <bits name="pln" above="8" below="4" width=".2"/>
+        <bits name="op" above="16" width=".2" fill="yes"/>
+        <bits name="sha" above="48" width="0.5" fill="yes"/>
+        <bits name="spa" above="16" width="0.3" fill="yes"/>
+        <bits name="tha" above="48" width="0.5" fill="yes"/>
+        <bits name="tpa" above="16" width="0.3" fill="yes"/>
       </header>
     </diagram>
 
@@ -4362,22 +4362,22 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x800" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x800" width="0.4"/>
       </header>
       <header name="IPv4">
-	<bits name="..." width="0.4"/>
-	<bits name="proto" above="8" below="6" width="0.3"/>
-	<bits name="src" above="32" width="0.4"/>
-	<bits name="dst" above="32" width="0.4"/>
+        <bits name="..." width="0.4"/>
+        <bits name="proto" above="8" below="6" width="0.3"/>
+        <bits name="src" above="32" width="0.4"/>
+        <bits name="dst" above="32" width="0.4"/>
       </header>
       <header name="TCP">
-	<bits name="src" above="16" width=".2"/>
-	<bits name="dst" above="16" width=".2"/>
-	<bits name="..." width=".75"/>
-	<bits name="flags" above="12" width=".3"/>
-	<bits name="..." width=".6"/>
+        <bits name="src" above="16" width=".2"/>
+        <bits name="dst" above="16" width=".2"/>
+        <bits name="..." width=".75"/>
+        <bits name="flags" above="12" width=".3"/>
+        <bits name="..." width=".6"/>
       </header>
       <dots/>
     </diagram>
@@ -4413,30 +4413,30 @@ r r c c c.
       </p>
 
       <diagram>
-	<header>
-	  <bits name="zero" above="4" below="0" width=".9"/>
-	</header>
-	<nospace/>
-	<header name="reserved">
-	  <bits name="[800]" above="1" width=".35"/>
-	  <bits name="[400]" above="1" width=".35"/>
-	  <bits name="[200]" above="1" width=".35"/>
-	</header>
-	<nospace/>
-	<header name="later RFCs">
-	  <bits name="NS" above="1" width=".35"/>
-	  <bits name="CWR" above="1" width=".35"/>
-	  <bits name="ECE" above="1" width=".35"/>
-	</header>
-	<nospace/>
-	<header name="RFC 793">
-	  <bits name="URG" above="1" width=".35"/>
-	  <bits name="ACK" above="1" width=".35"/>
-	  <bits name="PSH" above="1" width=".35"/>
-	  <bits name="RST" above="1" width=".35"/>
-	  <bits name="SYN" above="1" width=".35"/>
-	  <bits name="FIN" above="1" width=".35"/>
-	</header>
+        <header>
+          <bits name="zero" above="4" below="0" width=".9"/>
+        </header>
+        <nospace/>
+        <header name="reserved">
+          <bits name="[800]" above="1" width=".35"/>
+          <bits name="[400]" above="1" width=".35"/>
+          <bits name="[200]" above="1" width=".35"/>
+        </header>
+        <nospace/>
+        <header name="later RFCs">
+          <bits name="NS" above="1" width=".35"/>
+          <bits name="CWR" above="1" width=".35"/>
+          <bits name="ECE" above="1" width=".35"/>
+        </header>
+        <nospace/>
+        <header name="RFC 793">
+          <bits name="URG" above="1" width=".35"/>
+          <bits name="ACK" above="1" width=".35"/>
+          <bits name="PSH" above="1" width=".35"/>
+          <bits name="RST" above="1" width=".35"/>
+          <bits name="SYN" above="1" width=".35"/>
+          <bits name="FIN" above="1" width=".35"/>
+        </header>
       </diagram>
     </field>
 
@@ -4450,20 +4450,20 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x800" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x800" width="0.4"/>
       </header>
       <header name="IPv4">
-	<bits name="..." width="0.4"/>
-	<bits name="proto" above="8" below="17" width="0.3"/>
-	<bits name="src" above="32" width="0.4"/>
-	<bits name="dst" above="32" width="0.4"/>
+        <bits name="..." width="0.4"/>
+        <bits name="proto" above="8" below="17" width="0.3"/>
+        <bits name="src" above="32" width="0.4"/>
+        <bits name="dst" above="32" width="0.4"/>
       </header>
       <header name="UDP">
-	<bits name="src" above="16" width=".2"/>
-	<bits name="dst" above="16" width=".2"/>
-	<bits name="..." width=".4"/>
+        <bits name="src" above="16" width=".2"/>
+        <bits name="dst" above="16" width=".2"/>
+        <bits name="..." width=".4"/>
       </header>
       <dots/>
     </diagram>
@@ -4480,20 +4480,20 @@ r r c c c.
 
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x800" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x800" width="0.4"/>
       </header>
       <header name="IPv4">
-	<bits name="..." width="0.4"/>
-	<bits name="proto" above="8" below="132" width="0.3"/>
-	<bits name="src" above="32" width="0.4"/>
-	<bits name="dst" above="32" width="0.4"/>
+        <bits name="..." width="0.4"/>
+        <bits name="proto" above="8" below="132" width="0.3"/>
+        <bits name="src" above="32" width="0.4"/>
+        <bits name="dst" above="32" width="0.4"/>
       </header>
       <header name="SCTP">
-	<bits name="src" above="16" width=".2"/>
-	<bits name="dst" above="16" width=".2"/>
-	<bits name="..." width=".8"/>
+        <bits name="src" above="16" width=".2"/>
+        <bits name="dst" above="16" width=".2"/>
+        <bits name="..." width=".8"/>
       </header>
       <dots/>
     </diagram>
@@ -4505,20 +4505,20 @@ r r c c c.
     <h2>ICMPv4</h2>
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x800" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x800" width="0.4"/>
       </header>
       <header name="IPv4">
-	<bits name="..." width="0.4"/>
-	<bits name="proto" above="8" below="1" width="0.3"/>
-	<bits name="src" above="32" width="0.4"/>
-	<bits name="dst" above="32" width="0.4"/>
+        <bits name="..." width="0.4"/>
+        <bits name="proto" above="8" below="1" width="0.3"/>
+        <bits name="src" above="32" width="0.4"/>
+        <bits name="dst" above="32" width="0.4"/>
       </header>
       <header name="ICMPv4">
-	<bits name="type" above="8" width=".3"/>
-	<bits name="code" above="8" width=".3"/>
-	<bits name="..." width=".8"/>
+        <bits name="type" above="8" width=".3"/>
+        <bits name="code" above="8" width=".3"/>
+        <bits name="..." width=".8"/>
       </header>
       <dots/>
     </diagram>
@@ -4538,20 +4538,20 @@ r r c c c.
     <h2>ICMPv6</h2>
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x86dd" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x86dd" width="0.4"/>
       </header>
       <header name="IPv6">
-	<bits name="..." width="0.2"/>
-	<bits name="next" above="8" below="58" width="0.3"/>
-	<bits name="src" above="128" width="0.4"/>
-	<bits name="dst" above="128" width="0.4"/>
+        <bits name="..." width="0.2"/>
+        <bits name="next" above="8" below="58" width="0.3"/>
+        <bits name="src" above="128" width="0.4"/>
+        <bits name="dst" above="128" width="0.4"/>
       </header>
       <header name="ICMPv6">
-	<bits name="type" above="8" width=".3"/>
-	<bits name="code" above="8" width=".3"/>
-	<bits name="..." width=".8"/>
+        <bits name="type" above="8" width=".3"/>
+        <bits name="code" above="8" width=".3"/>
+        <bits name="..." width=".8"/>
       </header>
       <dots/>
     </diagram>
@@ -4561,31 +4561,31 @@ r r c c c.
     <h2>ICMPv6 Neighbor Discovery</h2>
     <diagram>
       <header name="Ethernet">
-	<bits name="dst" above="48" width="0.4"/>
-	<bits name="src" above="48" width="0.4"/>
-	<bits name="type" above="16" below="0x86dd" width="0.4"/>
+        <bits name="dst" above="48" width="0.4"/>
+        <bits name="src" above="48" width="0.4"/>
+        <bits name="type" above="16" below="0x86dd" width="0.4"/>
       </header>
       <header name="IPv6">
-	<bits name="..." width="0.2"/>
-	<bits name="next" above="8" below="58" width="0.3"/>
-	<bits name="src" above="128" width="0.4"/>
-	<bits name="dst" above="128" width="0.4"/>
+        <bits name="..." width="0.2"/>
+        <bits name="next" above="8" below="58" width="0.3"/>
+        <bits name="src" above="128" width="0.4"/>
+        <bits name="dst" above="128" width="0.4"/>
       </header>
       <header name="ICMPv6">
-	<bits name="type" above="8" below="135/136" width=".3"/>
-	<bits name="code" above="8" below="0" width=".3"/>
-	<bits name="..." width=".8"/>
+        <bits name="type" above="8" below="135/136" width=".3"/>
+        <bits name="code" above="8" below="0" width=".3"/>
+        <bits name="..." width=".8"/>
       </header>
       <header name="ICMPv6 ND">
-	<bits name="target" above="128" width=".4"/>
-	<bits name="option ..." width=".6"/>
+        <bits name="target" above="128" width=".4"/>
+        <bits name="option ..." width=".6"/>
       </header>
     </diagram>
     <field id="MFF_ND_TARGET" title="ICMPv6 Neighbor Discovery Target IPv6"/>
     <field id="MFF_ND_SLL"
-	   title="ICMPv6 Neighbor Discovery Source Ethernet Address"/>
+           title="ICMPv6 Neighbor Discovery Source Ethernet Address"/>
     <field id="MFF_ND_TLL"
-	   title="ICMPv6 Neighbor Discovery Target Ethernet Address"/>
+           title="ICMPv6 Neighbor Discovery Target Ethernet Address"/>
   </group>
 
   <h1>References</h1>
diff --git a/lib/ofp-print.c b/lib/ofp-print.c
index 68e382471dbd..05a39c22bd0d 100644
--- a/lib/ofp-print.c
+++ b/lib/ofp-print.c
@@ -1634,12 +1634,12 @@ print_tlv_table(struct ds *s, struct ovs_list *mappings)
     struct ofputil_tlv_map *map;
 
     ds_put_cstr(s, " mapping table:\n");
-    ds_put_cstr(s, " class\ttype\tlength\tmatch field\n");
-    ds_put_cstr(s, " -----\t----\t------\t-----------");
+    ds_put_cstr(s, "  class  type  length  match field\n");
+    ds_put_cstr(s, " ------  ----  ------  --------------");
 
     LIST_FOR_EACH (map, list_node, mappings) {
-        ds_put_char(s, '\n');
-        ds_put_format(s, " 0x%"PRIx16"\t0x%"PRIx8"\t%"PRIu8"\ttun_metadata%"PRIu16,
+        ds_put_format(s, "\n %#6"PRIx16"  %#4"PRIx8"  %6"PRIu8"  "
+                      "tun_metadata%"PRIu16,
                       map->option_class, map->option_type, map->option_len,
                       map->index);
     }
diff --git a/ofproto/ofproto-dpif-ipfix.c b/ofproto/ofproto-dpif-ipfix.c
index 4d9fe787f530..40298067884c 100644
--- a/ofproto/ofproto-dpif-ipfix.c
+++ b/ofproto/ofproto-dpif-ipfix.c
@@ -2283,7 +2283,7 @@ ipfix_cache_entry_init(const struct dpif_ipfix *di,
         data_tunnel->tunnel_key_length = tunnel_port->tunnel_key_length;
         /* tun_id is in network order, and tunnel key is in low bits. */
         tun_id = (const uint8_t *) &tunnel_key->tun_id;
-	memcpy(data_tunnel->tunnel_key,
+        memcpy(data_tunnel->tunnel_key,
                &tun_id[8 - tunnel_port->tunnel_key_length],
                tunnel_port->tunnel_key_length);
     }
diff --git a/ofproto/ofproto-dpif-sflow.c b/ofproto/ofproto-dpif-sflow.c
index bbec30e02060..d17d7a8be83c 100644
--- a/ofproto/ofproto-dpif-sflow.c
+++ b/ofproto/ofproto-dpif-sflow.c
@@ -361,50 +361,50 @@ sflow_agent_get_counters(void *ds_, SFLPoller *poller,
 
     /* Include LACP counters and identifiers if this port is part of a LAG. */
     if (ofproto_port_get_lacp_stats(dsp->ofport, &lacp_stats) == 0) {
-	memset(&lacp_elem, 0, sizeof lacp_elem);
-	lacp_elem.tag = SFLCOUNTERS_LACP;
-	lacp_elem.counterBlock.lacp.actorSystemID =
+        memset(&lacp_elem, 0, sizeof lacp_elem);
+        lacp_elem.tag = SFLCOUNTERS_LACP;
+        lacp_elem.counterBlock.lacp.actorSystemID =
         lacp_stats.dot3adAggPortActorSystemID;
-	lacp_elem.counterBlock.lacp.partnerSystemID =
+        lacp_elem.counterBlock.lacp.partnerSystemID =
         lacp_stats.dot3adAggPortPartnerOperSystemID;
-	lacp_elem.counterBlock.lacp.attachedAggID =
-	    lacp_stats.dot3adAggPortAttachedAggID;
-	lacp_elem.counterBlock.lacp.portState.v.actorAdmin =
-	    lacp_stats.dot3adAggPortActorAdminState;
-	lacp_elem.counterBlock.lacp.portState.v.actorOper =
-	    lacp_stats.dot3adAggPortActorOperState;
-	lacp_elem.counterBlock.lacp.portState.v.partnerAdmin =
-	    lacp_stats.dot3adAggPortPartnerAdminState;
-	lacp_elem.counterBlock.lacp.portState.v.partnerOper =
-	    lacp_stats.dot3adAggPortPartnerOperState;
-	lacp_elem.counterBlock.lacp.LACPDUsRx =
-	    lacp_stats.dot3adAggPortStatsLACPDUsRx;
-	SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerPDUsRx);
-	SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerResponsePDUsRx);
-	SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.unknownRx);
-	lacp_elem.counterBlock.lacp.illegalRx =
-	    lacp_stats.dot3adAggPortStatsIllegalRx;
-	lacp_elem.counterBlock.lacp.LACPDUsTx =
-	    lacp_stats.dot3adAggPortStatsLACPDUsTx;
-	SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerPDUsTx);
-	SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerResponsePDUsTx);
-	SFLADD_ELEMENT(cs, &lacp_elem);
+        lacp_elem.counterBlock.lacp.attachedAggID =
+            lacp_stats.dot3adAggPortAttachedAggID;
+        lacp_elem.counterBlock.lacp.portState.v.actorAdmin =
+            lacp_stats.dot3adAggPortActorAdminState;
+        lacp_elem.counterBlock.lacp.portState.v.actorOper =
+            lacp_stats.dot3adAggPortActorOperState;
+        lacp_elem.counterBlock.lacp.portState.v.partnerAdmin =
+            lacp_stats.dot3adAggPortPartnerAdminState;
+        lacp_elem.counterBlock.lacp.portState.v.partnerOper =
+            lacp_stats.dot3adAggPortPartnerOperState;
+        lacp_elem.counterBlock.lacp.LACPDUsRx =
+            lacp_stats.dot3adAggPortStatsLACPDUsRx;
+        SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerPDUsRx);
+        SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerResponsePDUsRx);
+        SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.unknownRx);
+        lacp_elem.counterBlock.lacp.illegalRx =
+            lacp_stats.dot3adAggPortStatsIllegalRx;
+        lacp_elem.counterBlock.lacp.LACPDUsTx =
+            lacp_stats.dot3adAggPortStatsLACPDUsTx;
+        SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerPDUsTx);
+        SFL_UNDEF_COUNTER(lacp_elem.counterBlock.lacp.markerResponsePDUsTx);
+        SFLADD_ELEMENT(cs, &lacp_elem);
     }
 
     /* Include Port name. */
     if ((ifName = netdev_get_name(dsp->ofport->netdev)) != NULL) {
-	memset(&name_elem, 0, sizeof name_elem);
-	name_elem.tag = SFLCOUNTERS_PORTNAME;
-	name_elem.counterBlock.portName.portName.str = (char *)ifName;
-	name_elem.counterBlock.portName.portName.len = strlen(ifName);
-	SFLADD_ELEMENT(cs, &name_elem);
+        memset(&name_elem, 0, sizeof name_elem);
+        name_elem.tag = SFLCOUNTERS_PORTNAME;
+        name_elem.counterBlock.portName.portName.str = (char *)ifName;
+        name_elem.counterBlock.portName.portName.len = strlen(ifName);
+        SFLADD_ELEMENT(cs, &name_elem);
     }
 
     /* Include OpenFlow DPID and openflow port number. */
     memset(&of_elem, 0, sizeof of_elem);
     of_elem.tag = SFLCOUNTERS_OPENFLOWPORT;
     of_elem.counterBlock.ofPort.datapath_id =
-	ofproto_get_datapath_id(dsp->ofport->ofproto);
+        ofproto_get_datapath_id(dsp->ofport->ofproto);
     of_elem.counterBlock.ofPort.port_no =
       (OVS_FORCE uint32_t)dsp->ofport->ofp_port;
     SFLADD_ELEMENT(cs, &of_elem);
@@ -615,15 +615,15 @@ static enum dpif_sflow_tunnel_type
 dpif_sflow_tunnel_type(struct ofport *ofport) {
     const char *type = netdev_get_type(ofport->netdev);
     if (type) {
-	if (strcmp(type, "gre") == 0) {
-	    return DPIF_SFLOW_TUNNEL_GRE;
-	} else if (strcmp(type, "vxlan") == 0) {
-	    return DPIF_SFLOW_TUNNEL_VXLAN;
-	} else if (strcmp(type, "lisp") == 0) {
-	    return DPIF_SFLOW_TUNNEL_LISP;
-	} else if (strcmp(type, "geneve") == 0) {
-	    return DPIF_SFLOW_TUNNEL_GENEVE;
-	}
+        if (strcmp(type, "gre") == 0) {
+            return DPIF_SFLOW_TUNNEL_GRE;
+        } else if (strcmp(type, "vxlan") == 0) {
+            return DPIF_SFLOW_TUNNEL_VXLAN;
+        } else if (strcmp(type, "lisp") == 0) {
+            return DPIF_SFLOW_TUNNEL_LISP;
+        } else if (strcmp(type, "geneve") == 0) {
+            return DPIF_SFLOW_TUNNEL_GENEVE;
+        }
     }
     return DPIF_SFLOW_TUNNEL_UNKNOWN;
 }
@@ -665,10 +665,10 @@ dpif_sflow_add_port(struct dpif_sflow *ds, struct ofport *ofport,
     ifindex = netdev_get_ifindex(ofport->netdev);
 
     if (ifindex <= 0
-	&& tunnel_type == DPIF_SFLOW_TUNNEL_UNKNOWN) {
+        && tunnel_type == DPIF_SFLOW_TUNNEL_UNKNOWN) {
         /* Not an ifindex port, and not a tunnel port either
-	 * so do not add a cross-reference to it here.
-	 */
+         * so do not add a cross-reference to it here.
+         */
         goto out;
     }
 
@@ -680,14 +680,14 @@ dpif_sflow_add_port(struct dpif_sflow *ds, struct ofport *ofport,
     hmap_insert(&ds->ports, &dsp->hmap_node, hash_odp_port(odp_port));
 
     if (ifindex > 0) {
-	/* Add poller for ports that have ifindex. */
-	SFL_DS_SET(dsp->dsi, SFL_DSCLASS_IFINDEX, ifindex, 0);
-	if (ds->sflow_agent) {
-	    dpif_sflow_add_poller(ds, dsp);
-	}
+        /* Add poller for ports that have ifindex. */
+        SFL_DS_SET(dsp->dsi, SFL_DSCLASS_IFINDEX, ifindex, 0);
+        if (ds->sflow_agent) {
+            dpif_sflow_add_poller(ds, dsp);
+        }
     } else {
-	/* Record "ifindex unknown" for the others */
-	SFL_DS_SET(dsp->dsi, SFL_DSCLASS_IFINDEX, 0, 0);
+        /* Record "ifindex unknown" for the others */
+        SFL_DS_SET(dsp->dsi, SFL_DSCLASS_IFINDEX, 0, 0);
     }
 
 out:
@@ -699,9 +699,9 @@ dpif_sflow_del_port__(struct dpif_sflow *ds, struct dpif_sflow_port *dsp)
     OVS_REQUIRES(mutex)
 {
     if (ds->sflow_agent
-	&& SFL_DS_INDEX(dsp->dsi)) {
-	sfl_agent_removePoller(ds->sflow_agent, &dsp->dsi);
-	sfl_agent_removeSampler(ds->sflow_agent, &dsp->dsi);
+        && SFL_DS_INDEX(dsp->dsi)) {
+        sfl_agent_removePoller(ds->sflow_agent, &dsp->dsi);
+        sfl_agent_removeSampler(ds->sflow_agent, &dsp->dsi);
     }
     hmap_remove(&ds->ports, &dsp->hmap_node);
     free(dsp);
@@ -826,7 +826,7 @@ dpif_sflow_set_options(struct dpif_sflow *ds,
     HMAP_FOR_EACH (dsp, hmap_node, &ds->ports) {
         if (SFL_DS_INDEX(dsp->dsi)) {
             dpif_sflow_add_poller(ds, dsp);
-	}
+        }
     }
 
 
@@ -867,8 +867,8 @@ dpif_sflow_push_mpls_lse(struct dpif_sflow_actions *sflow_actions,
                          ovs_be32 lse)
 {
     if (sflow_actions->mpls_stack_depth >= FLOW_MAX_MPLS_LABELS) {
-	sflow_actions->mpls_err = true;
-	return;
+        sflow_actions->mpls_err = true;
+        return;
     }
 
     /* Record the new lse in host-byte-order. */
@@ -880,25 +880,25 @@ static void
 dpif_sflow_pop_mpls_lse(struct dpif_sflow_actions *sflow_actions)
 {
     if (sflow_actions->mpls_stack_depth == 0) {
-	sflow_actions->mpls_err = true;
-	return;
+        sflow_actions->mpls_err = true;
+        return;
     }
     sflow_actions->mpls_stack_depth--;
 }
 
 static void
 dpif_sflow_set_mpls(struct dpif_sflow_actions *sflow_actions,
-		    const struct ovs_key_mpls *mpls_key, int n)
+                    const struct ovs_key_mpls *mpls_key, int n)
 {
     int ii;
     if (n > FLOW_MAX_MPLS_LABELS) {
-	sflow_actions->mpls_err = true;
-	return;
+        sflow_actions->mpls_err = true;
+        return;
     }
 
     for (ii = 0; ii < n; ii++) {
-	/* Reverse stack order, and use host-byte-order for each lse. */
-	sflow_actions->mpls_lse[n - ii - 1] = ntohl(mpls_key[ii].mpls_lse);
+        /* Reverse stack order, and use host-byte-order for each lse. */
+        sflow_actions->mpls_lse[n - ii - 1] = ntohl(mpls_key[ii].mpls_lse);
     }
     sflow_actions->mpls_stack_depth = n;
 }
@@ -1108,123 +1108,123 @@ dpif_sflow_read_actions(const struct flow *flow,
     unsigned int left;
 
     if (actions_len == 0) {
-	/* Packet dropped.*/
-	return;
+        /* Packet dropped.*/
+        return;
     }
 
     if (flow != NULL && capture_mpls == true) {
-	/* Make sure the MPLS output stack
-	 * is seeded with the input stack.
-	 */
-	dpif_sflow_capture_input_mpls(flow, sflow_actions);
-
-	/* XXX when 802.1AD(QinQ) is supported then
-	 * we can do the same with VLAN stacks here
-	 */
+        /* Make sure the MPLS output stack
+         * is seeded with the input stack.
+         */
+        dpif_sflow_capture_input_mpls(flow, sflow_actions);
+
+        /* XXX when 802.1AD(QinQ) is supported then
+         * we can do the same with VLAN stacks here
+         */
     }
 
     NL_ATTR_FOR_EACH (a, left, actions, actions_len) {
-	enum ovs_action_attr type = nl_attr_type(a);
-	switch (type) {
-	case OVS_ACTION_ATTR_OUTPUT:
-	    /* Capture the output port in case we need it
-	     * to get the output tunnel type.
-	     */
-	    sflow_actions->out_port = nl_attr_get_odp_port(a);
-	    break;
-
-	case OVS_ACTION_ATTR_TUNNEL_POP:
-	    /* XXX: Do not handle this for now.  It's not clear
-	     * if we should start with encap_depth == 1 when we
-	     * see an input tunnel,  or if we should assume
-	     * that the input tunnel was always "popped" if it
-	     * was presented to us decoded in flow->tunnel?
-	     *
-	     * If we do handle this it might look like this,
-	     * as we clear the captured tunnel info and decrement
-	     * the encap_depth:
-	     *
-	     * memset(&sflow_actions->tunnel, 0, sizeof struct flow_tnl);
-	     * sflow_actions->tunnel_ipproto = 0;
-	     * --sflow_actions->encap_depth;
-	     *
-	     * but for now just disable the tunnel annotation:
-	     */
-	    sflow_actions->tunnel_err = true;
-	    break;
-
-	case OVS_ACTION_ATTR_TUNNEL_PUSH:
-	    /* XXX: This actions appears to come with it's own
-	     * OUTPUT action, so should it be regarded as having
-	     * an implicit "pop" following it too?  Put another
-	     * way, would two tnl_push() actions in succession
-	     * result in a packet with two layers of encap?
-	     */
-	    if (++sflow_actions->encap_depth > 1) {
-		/* Do not handle multi-encap for now. */
-		sflow_actions->tunnel_err = true;
-	    } else {
-		sflow_read_tnl_push_action(a, sflow_actions);
-	    }
-	    break;
-
-	case OVS_ACTION_ATTR_TRUNC:
-	case OVS_ACTION_ATTR_USERSPACE:
-	case OVS_ACTION_ATTR_RECIRC:
-	case OVS_ACTION_ATTR_HASH:
+        enum ovs_action_attr type = nl_attr_type(a);
+        switch (type) {
+        case OVS_ACTION_ATTR_OUTPUT:
+            /* Capture the output port in case we need it
+             * to get the output tunnel type.
+             */
+            sflow_actions->out_port = nl_attr_get_odp_port(a);
+            break;
+
+        case OVS_ACTION_ATTR_TUNNEL_POP:
+            /* XXX: Do not handle this for now.  It's not clear
+             * if we should start with encap_depth == 1 when we
+             * see an input tunnel,  or if we should assume
+             * that the input tunnel was always "popped" if it
+             * was presented to us decoded in flow->tunnel?
+             *
+             * If we do handle this it might look like this,
+             * as we clear the captured tunnel info and decrement
+             * the encap_depth:
+             *
+             * memset(&sflow_actions->tunnel, 0, sizeof struct flow_tnl);
+             * sflow_actions->tunnel_ipproto = 0;
+             * --sflow_actions->encap_depth;
+             *
+             * but for now just disable the tunnel annotation:
+             */
+            sflow_actions->tunnel_err = true;
+            break;
+
+        case OVS_ACTION_ATTR_TUNNEL_PUSH:
+            /* XXX: This actions appears to come with it's own
+             * OUTPUT action, so should it be regarded as having
+             * an implicit "pop" following it too?  Put another
+             * way, would two tnl_push() actions in succession
+             * result in a packet with two layers of encap?
+             */
+            if (++sflow_actions->encap_depth > 1) {
+                /* Do not handle multi-encap for now. */
+                sflow_actions->tunnel_err = true;
+            } else {
+                sflow_read_tnl_push_action(a, sflow_actions);
+            }
+            break;
+
+        case OVS_ACTION_ATTR_TRUNC:
+        case OVS_ACTION_ATTR_USERSPACE:
+        case OVS_ACTION_ATTR_RECIRC:
+        case OVS_ACTION_ATTR_HASH:
         case OVS_ACTION_ATTR_CT:
     case OVS_ACTION_ATTR_CT_CLEAR:
         case OVS_ACTION_ATTR_METER:
-	    break;
-
-	case OVS_ACTION_ATTR_SET_MASKED:
-	    /* TODO: apply mask. XXX: Are we likely to see this? */
-	    break;
-
-	case OVS_ACTION_ATTR_SET:
-	    sflow_read_set_action(nl_attr_get(a), sflow_actions);
-	    break;
-
-	case OVS_ACTION_ATTR_PUSH_VLAN:
-	case OVS_ACTION_ATTR_POP_VLAN:
-	    /* TODO: 802.1AD(QinQ) is not supported by OVS (yet), so do not
-	     * construct a VLAN-stack. The sFlow user-action cookie already
-	     * captures the egress VLAN ID so there is nothing more to do here.
-	     */
-	    break;
-
-	case OVS_ACTION_ATTR_PUSH_MPLS: {
-	    const struct ovs_action_push_mpls *mpls = nl_attr_get(a);
-	    if (mpls) {
-		dpif_sflow_push_mpls_lse(sflow_actions, mpls->mpls_lse);
-	    }
-	    break;
-	}
-	case OVS_ACTION_ATTR_POP_MPLS: {
-	    dpif_sflow_pop_mpls_lse(sflow_actions);
-	    break;
-	}
-	case OVS_ACTION_ATTR_PUSH_ETH:
-	case OVS_ACTION_ATTR_POP_ETH:
-	    /* TODO: SFlow does not currently define a MAC-in-MAC
-	     * encapsulation structure.  We could use an extension
-	     * structure to report this.
-	     */
-	    break;
+            break;
+
+        case OVS_ACTION_ATTR_SET_MASKED:
+            /* TODO: apply mask. XXX: Are we likely to see this? */
+            break;
+
+        case OVS_ACTION_ATTR_SET:
+            sflow_read_set_action(nl_attr_get(a), sflow_actions);
+            break;
+
+        case OVS_ACTION_ATTR_PUSH_VLAN:
+        case OVS_ACTION_ATTR_POP_VLAN:
+            /* TODO: 802.1AD(QinQ) is not supported by OVS (yet), so do not
+             * construct a VLAN-stack. The sFlow user-action cookie already
+             * captures the egress VLAN ID so there is nothing more to do here.
+             */
+            break;
+
+        case OVS_ACTION_ATTR_PUSH_MPLS: {
+            const struct ovs_action_push_mpls *mpls = nl_attr_get(a);
+            if (mpls) {
+                dpif_sflow_push_mpls_lse(sflow_actions, mpls->mpls_lse);
+            }
+            break;
+        }
+        case OVS_ACTION_ATTR_POP_MPLS: {
+            dpif_sflow_pop_mpls_lse(sflow_actions);
+            break;
+        }
+        case OVS_ACTION_ATTR_PUSH_ETH:
+        case OVS_ACTION_ATTR_POP_ETH:
+            /* TODO: SFlow does not currently define a MAC-in-MAC
+             * encapsulation structure.  We could use an extension
+             * structure to report this.
+             */
+            break;
     case OVS_ACTION_ATTR_CLONE:
         if (flow != NULL) {
             dpif_sflow_read_actions(flow, nl_attr_get(a), nl_attr_get_size(a),
                                     sflow_actions, false);
         }
         break;
-	case OVS_ACTION_ATTR_SAMPLE:
+        case OVS_ACTION_ATTR_SAMPLE:
         case OVS_ACTION_ATTR_PUSH_NSH:
         case OVS_ACTION_ATTR_POP_NSH:
-	case OVS_ACTION_ATTR_UNSPEC:
-	case __OVS_ACTION_ATTR_MAX:
-	default:
-	    break;
-	}
+        case OVS_ACTION_ATTR_UNSPEC:
+        case __OVS_ACTION_ATTR_MAX:
+        default:
+            break;
+        }
     }
 }
 
@@ -1336,63 +1336,63 @@ dpif_sflow_received(struct dpif_sflow *ds, const struct dp_packet *packet,
 
     /* Input tunnel. */
     if (flow->tunnel.ip_dst) {
-	memset(&tnlInElem, 0, sizeof(tnlInElem));
-	tnlInElem.tag = SFLFLOW_EX_IPV4_TUNNEL_INGRESS;
-	tnlInProto = in_dsp ? dpif_sflow_tunnel_proto(in_dsp->tunnel_type) : 0;
-	dpif_sflow_tunnel_v4(tnlInProto,
-			     &flow->tunnel,
-			     &tnlInElem.flowType.ipv4);
-	SFLADD_ELEMENT(&fs, &tnlInElem);
-	if (flow->tunnel.tun_id) {
-	    memset(&vniInElem, 0, sizeof(vniInElem));
-	    vniInElem.tag = SFLFLOW_EX_VNI_INGRESS;
-	    vniInElem.flowType.tunnel_vni.vni
-		= ntohll(flow->tunnel.tun_id);
-	    SFLADD_ELEMENT(&fs, &vniInElem);
-	}
+        memset(&tnlInElem, 0, sizeof(tnlInElem));
+        tnlInElem.tag = SFLFLOW_EX_IPV4_TUNNEL_INGRESS;
+        tnlInProto = in_dsp ? dpif_sflow_tunnel_proto(in_dsp->tunnel_type) : 0;
+        dpif_sflow_tunnel_v4(tnlInProto,
+                             &flow->tunnel,
+                             &tnlInElem.flowType.ipv4);
+        SFLADD_ELEMENT(&fs, &tnlInElem);
+        if (flow->tunnel.tun_id) {
+            memset(&vniInElem, 0, sizeof(vniInElem));
+            vniInElem.tag = SFLFLOW_EX_VNI_INGRESS;
+            vniInElem.flowType.tunnel_vni.vni
+                = ntohll(flow->tunnel.tun_id);
+            SFLADD_ELEMENT(&fs, &vniInElem);
+        }
     }
 
     /* Output tunnel. */
     if (sflow_actions
-	&& sflow_actions->encap_depth == 1
-	&& !sflow_actions->tunnel_err
-	&& dpif_sflow_cookie_num_outputs(cookie) == 1) {
-	tnlOutProto = sflow_actions->tunnel_ipproto;
-	if (tnlOutProto == 0) {
-	    /* Try to infer the ip-protocol from the output port. */
-	    if (sflow_actions->out_port != ODPP_NONE) {
-		out_dsp = dpif_sflow_find_port(ds, sflow_actions->out_port);
-		if (out_dsp) {
-		    tnlOutProto = dpif_sflow_tunnel_proto(out_dsp->tunnel_type);
-		}
-	    }
-	}
-	memset(&tnlOutElem, 0, sizeof(tnlOutElem));
-	tnlOutElem.tag = SFLFLOW_EX_IPV4_TUNNEL_EGRESS;
-	dpif_sflow_tunnel_v4(tnlOutProto,
-			     &sflow_actions->tunnel,
-			     &tnlOutElem.flowType.ipv4);
-	SFLADD_ELEMENT(&fs, &tnlOutElem);
-	if (sflow_actions->tunnel.tun_id) {
-	    memset(&vniOutElem, 0, sizeof(vniOutElem));
-	    vniOutElem.tag = SFLFLOW_EX_VNI_EGRESS;
-	    vniOutElem.flowType.tunnel_vni.vni
-		= ntohll(sflow_actions->tunnel.tun_id);
-	    SFLADD_ELEMENT(&fs, &vniOutElem);
-	}
+        && sflow_actions->encap_depth == 1
+        && !sflow_actions->tunnel_err
+        && dpif_sflow_cookie_num_outputs(cookie) == 1) {
+        tnlOutProto = sflow_actions->tunnel_ipproto;
+        if (tnlOutProto == 0) {
+            /* Try to infer the ip-protocol from the output port. */
+            if (sflow_actions->out_port != ODPP_NONE) {
+                out_dsp = dpif_sflow_find_port(ds, sflow_actions->out_port);
+                if (out_dsp) {
+                    tnlOutProto = dpif_sflow_tunnel_proto(out_dsp->tunnel_type);
+                }
+            }
+        }
+        memset(&tnlOutElem, 0, sizeof(tnlOutElem));
+        tnlOutElem.tag = SFLFLOW_EX_IPV4_TUNNEL_EGRESS;
+        dpif_sflow_tunnel_v4(tnlOutProto,
+                             &sflow_actions->tunnel,
+                             &tnlOutElem.flowType.ipv4);
+        SFLADD_ELEMENT(&fs, &tnlOutElem);
+        if (sflow_actions->tunnel.tun_id) {
+            memset(&vniOutElem, 0, sizeof(vniOutElem));
+            vniOutElem.tag = SFLFLOW_EX_VNI_EGRESS;
+            vniOutElem.flowType.tunnel_vni.vni
+                = ntohll(sflow_actions->tunnel.tun_id);
+            SFLADD_ELEMENT(&fs, &vniOutElem);
+        }
     }
 
     /* MPLS output label stack. */
     if (sflow_actions
-	&& sflow_actions->mpls_stack_depth > 0
-	&& !sflow_actions->mpls_err
-	&& dpif_sflow_cookie_num_outputs(cookie) == 1) {
-	memset(&mplsElem, 0, sizeof(mplsElem));
-	mplsElem.tag = SFLFLOW_EX_MPLS;
-	dpif_sflow_encode_mpls_stack(&mplsElem.flowType.mpls.out_stack,
-				     mpls_lse_buf,
-				     sflow_actions);
-	SFLADD_ELEMENT(&fs, &mplsElem);
+        && sflow_actions->mpls_stack_depth > 0
+        && !sflow_actions->mpls_err
+        && dpif_sflow_cookie_num_outputs(cookie) == 1) {
+        memset(&mplsElem, 0, sizeof(mplsElem));
+        mplsElem.tag = SFLFLOW_EX_MPLS;
+        dpif_sflow_encode_mpls_stack(&mplsElem.flowType.mpls.out_stack,
+                                     mpls_lse_buf,
+                                     sflow_actions);
+        SFLADD_ELEMENT(&fs, &mplsElem);
     }
 
     /* Submit the flow sample to be encoded into the next datagram. */
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index c990d8a679c0..c02a0327a580 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -3432,7 +3432,7 @@ native_tunnel_output(struct xlate_ctx *ctx, const struct xport *xport,
     /* Backup flow & base_flow data. */
     memcpy(&old_base_flow, &ctx->base_flow, sizeof old_base_flow);
     memcpy(&old_flow, &ctx->xin->flow, sizeof old_flow);
-	
+
     if (flow->tunnel.ip_src) {
         in6_addr_set_mapped_ipv4(&s_ip6, flow->tunnel.ip_src);
     }
diff --git a/ovn/utilities/ovn-detrace.in b/ovn/utilities/ovn-detrace.in
index e2e5b4c2f7af..c842adc3212c 100755
--- a/ovn/utilities/ovn-detrace.in
+++ b/ovn/utilities/ovn-detrace.in
@@ -192,8 +192,8 @@ def main():
             # print lflow info when the current flow block ends
             if regex_table_id.match(line) or line.strip() == '':
                 lflow = get_lflow_from_cookie(ovsdb_ovnsb, cookie)
-                print_lflow(lflow, "\t* ")
-                print_lflow_nb_hint(lflow, "\t\t* ", ovsdb_ovnnb)
+                print_lflow(lflow, "  * ")
+                print_lflow_nb_hint(lflow, "    * ", ovsdb_ovnnb)
                 cookie = None
 
         print line.strip()
diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c
index 95a7772416f0..5f2eac413a5a 100644
--- a/ovsdb/ovsdb-tool.c
+++ b/ovsdb/ovsdb-tool.c
@@ -677,7 +677,7 @@ print_db_changes(struct shash *tables, struct smap *names,
                 }
             }
 
-            printf("\ttable %s", table);
+            printf("  table %s", table);
 
             if (!old_name) {
                 if (new_name) {
@@ -722,7 +722,7 @@ print_db_changes(struct shash *tables, struct smap *names,
                         if (!value_string) {
                             value_string = json_to_string(value, JSSF_SORT);
                         }
-                        printf("\t\t%s=%s\n", column, value_string);
+                        printf("    %s=%s\n", column, value_string);
                         free(value_string);
                     }
                 }
@@ -735,7 +735,7 @@ print_db_changes(struct shash *tables, struct smap *names,
                                     xmemdup0(row_uuid, 8));
                 }
             } else if (columns->type == JSON_NULL) {
-                printf("\t\tdelete row\n");
+                printf("    delete row\n");
                 smap_remove(names, row_uuid);
             }
 
diff --git a/rhel/etc_init.d_openvswitch b/rhel/etc_init.d_openvswitch
old mode 100755
new mode 100644
index caf24cce8bb2..20d556803656
--- a/rhel/etc_init.d_openvswitch
+++ b/rhel/etc_init.d_openvswitch
@@ -36,16 +36,16 @@ start () {
     set ovs_ctl ${1-start}
     set "$@" --system-id=random
     if test X"$FORCE_COREFILES" != X; then
-	set "$@" --force-corefiles="$FORCE_COREFILES"
+        set "$@" --force-corefiles="$FORCE_COREFILES"
     fi
     if test X"$OVSDB_SERVER_PRIORITY" != X; then
-	set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY"
+        set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY"
     fi
     if test X"$VSWITCHD_PRIORITY" != X; then
-	set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY"
+        set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY"
     fi
     if test X"$VSWITCHD_MLOCKALL" != X; then
-	set "$@" --mlockall="$VSWITCHD_MLOCKALL"
+        set "$@" --mlockall="$VSWITCHD_MLOCKALL"
     fi
     set "$@" $OVS_CTL_OPTS
     "$@"
diff --git a/rhel/etc_sysconfig_network-scripts_ifdown-ovs b/rhel/etc_sysconfig_network-scripts_ifdown-ovs
old mode 100755
new mode 100644
index 8c9f3694cc07..63d048b22f9d
--- a/rhel/etc_sysconfig_network-scripts_ifdown-ovs
+++ b/rhel/etc_sysconfig_network-scripts_ifdown-ovs
@@ -36,36 +36,36 @@ fi
 
 SERVICE_UNIT=/usr/lib/systemd/system/ovsdb-server.service
 if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
-	if ! systemctl --quiet is-active ovsdb-server.service; then
-		systemctl start ovsdb-server.service
-	fi
+        if ! systemctl --quiet is-active ovsdb-server.service; then
+                systemctl start ovsdb-server.service
+        fi
 else
-	if [ ! -f /var/lock/subsys/openvswitch ]; then
-		/sbin/service openvswitch start
-	fi
+        if [ ! -f /var/lock/subsys/openvswitch ]; then
+                /sbin/service openvswitch start
+        fi
 fi
 
 case "$TYPE" in
-	OVSBridge|OVSUserBridge)
-		${OTHERSCRIPT} ${CONFIG} $2
-		retval=$?
-		ovs-vsctl -t ${TIMEOUT} -- --if-exists del-br "$DEVICE"
-		;;
-	OVSPort|OVSIntPort|OVSBond)
-		${OTHERSCRIPT} ${CONFIG} $2
-		retval=$?
-		ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
-		;;
-	OVSPatchPort|OVSTunnel)
-		ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
-		;;
-	OVSDPDKPort|OVSDPDKRPort|OVSDPDKVhostUserPort|OVSDPDKBond)
-		ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
-		;;
-	*)
-		echo $"Invalid OVS interface type $TYPE"
-		exit 1
-		;;
+        OVSBridge|OVSUserBridge)
+                ${OTHERSCRIPT} ${CONFIG} $2
+                retval=$?
+                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-br "$DEVICE"
+                ;;
+        OVSPort|OVSIntPort|OVSBond)
+                ${OTHERSCRIPT} ${CONFIG} $2
+                retval=$?
+                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
+                ;;
+        OVSPatchPort|OVSTunnel)
+                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
+                ;;
+        OVSDPDKPort|OVSDPDKRPort|OVSDPDKVhostUserPort|OVSDPDKBond)
+                ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
+                ;;
+        *)
+                echo $"Invalid OVS interface type $TYPE"
+                exit 1
+                ;;
 esac
 
 exit $retval
diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs b/rhel/etc_sysconfig_network-scripts_ifup-ovs
old mode 100755
new mode 100644
index 1c65f13e6535..b01461cc42e2
--- a/rhel/etc_sysconfig_network-scripts_ifup-ovs
+++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs
@@ -31,196 +31,196 @@ source_config
 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${REAL_DEVICETYPE}"
 
 if [ ! -x ${OTHERSCRIPT} ]; then
-	OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
+        OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
 fi
 
 check_recursion ()
 {
-	[ -n "${UPPEDSTACK}" ] && for _r in ${UPPEDSTACK}; do
-		[ "$_r" = "$1" ] && return 1
-	done
+        [ -n "${UPPEDSTACK}" ] && for _r in ${UPPEDSTACK}; do
+                [ "$_r" = "$1" ] && return 1
+        done
 
-	return 0
+        return 0
 }
 
 ifup_ovs_bridge ()
 {
-	if ovs-vsctl br-exists "${OVS_BRIDGE}"; then :; else
-		/sbin/ifup "${OVS_BRIDGE}"
-	fi
+        if ovs-vsctl br-exists "${OVS_BRIDGE}"; then :; else
+                /sbin/ifup "${OVS_BRIDGE}"
+        fi
 }
 
 if [ -z "${UPPEDSTACK}" ]; then
-	UPPEDSTACK="${DEVICE}"
+        UPPEDSTACK="${DEVICE}"
 fi
 
 [ -n "${OVSREQUIRES}" ] && for _i in ${OVSREQUIRES}; do
-	if ( check_recursion "$_i" ); then
-		UPPEDSTACK="${UPPEDSTACK} $_i" /sbin/ifup "$_i"
-	fi
+        if ( check_recursion "$_i" ); then
+                UPPEDSTACK="${UPPEDSTACK} $_i" /sbin/ifup "$_i"
+        fi
 done
 
 SERVICE_UNIT=/usr/lib/systemd/system/openvswitch.service
 if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
-	if ! systemctl --quiet is-active openvswitch.service; then
-		systemctl start openvswitch.service
-	fi
+        if ! systemctl --quiet is-active openvswitch.service; then
+                systemctl start openvswitch.service
+        fi
 else
-	if [ ! -f /var/lock/subsys/openvswitch ]; then
-		/sbin/service openvswitch start
-	fi
+        if [ ! -f /var/lock/subsys/openvswitch ]; then
+                /sbin/service openvswitch start
+        fi
 fi
 
 case "$TYPE" in
-	OVSBridge|OVSUserBridge)
-		# If bridge already exists and is up, it has been configured through
-		# other cases like OVSPort, OVSIntPort and OVSBond. If it is down or
-		# it does not exist, create it. It is possible for a bridge to exist
-		# because it remained in the OVSDB for some reason, but it won't be up.
-		if [ "${TYPE}" = "OVSUserBridge" ]; then
-			DATAPATH="netdev"
-		fi
-		if check_device_down "${DEVICE}"; then
-			ovs-vsctl -t ${TIMEOUT} -- --may-exist add-br "$DEVICE" $OVS_OPTIONS \
-			${OVS_EXTRA+-- $OVS_EXTRA} \
-			${STP+-- set bridge "$DEVICE" stp_enable="${STP}"} \
-			${DATAPATH+-- set bridge "$DEVICE" datapath_type="$DATAPATH"}
-		else
-			OVSBRIDGECONFIGURED="yes"
-		fi
-
-		# If MACADDR is provided in the interface configuration file,
-		# we need to set it using ovs-vsctl; setting it with the "ip"
-		# command in ifup-eth does not make the change persistent.
-		if [ -n "$MACADDR" ]; then
-			ovs-vsctl -t ${TIMEOUT} -- set bridge "$DEVICE" \
-				other-config:hwaddr="$MACADDR"
-		fi
-
-		# When dhcp is enabled, the assumption is that there will be a port to
-		# attach (otherwise, we can't reach out for dhcp). So, we do not
-		# configure the bridge through rhel's ifup infrastructure unless
-		# it is being configured after the port has been configured.
-		# The "OVSINTF" is set only after the port is configured.
-		if [ "${OVSBOOTPROTO}" = "dhcp" ] && [ -n "${OVSINTF}" ]; then
-			case " ${OVSDHCPINTERFACES} " in
-				*" ${OVSINTF} "*)
-					BOOTPROTO=dhcp ${OTHERSCRIPT} ${CONFIG}
-				;;
-			esac
-		fi
-
-		# When dhcp is not enabled, it is possible that someone may want
-		# a standalone bridge (i.e it may not have any ports). Configure it.
-		if [ "${OVSBOOTPROTO}" != "dhcp" ] && [ -z "${OVSINTF}" ] && \
-			[ "${OVSBRIDGECONFIGURED}" != "yes" ]; then
-			${OTHERSCRIPT} ${CONFIG}
-		fi
-		exit 0
-		;;
-	OVSPort)
-		ifup_ovs_bridge
-		${OTHERSCRIPT} ${CONFIG} ${2}
-		# The port might be already in the database but not yet
-		# in the datapath.  So, remove the stale interface first.
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
-		OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE"
-		;;
-	OVSIntPort)
-		ifup_ovs_bridge
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
-		if [ -n "${OVSDHCPINTERFACES}" ]; then
-			for _iface in ${OVSDHCPINTERFACES}; do
-				/sbin/ifup ${_iface}
-			done
-		fi
-		BOOTPROTO="${OVSBOOTPROTO}" ${OTHERSCRIPT} ${CONFIG} ${2}
-		;;
-	OVSBond)
-		ifup_ovs_bridge
-		for _iface in $BOND_IFACES; do
-			/sbin/ifup ${_iface}
-		done
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
-		OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE"
-		;;
-	OVSTunnel)
-		ifup_ovs_bridge
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=$OVS_TUNNEL_TYPE $OVS_TUNNEL_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
-		;;
-	OVSPatchPort)
-		ifup_ovs_bridge
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=patch options:peer="${OVS_PATCH_PEER}" ${OVS_EXTRA+-- $OVS_EXTRA}
-		;;
-	OVSDPDKPort)
-		ifup_ovs_bridge
-		BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=dpdk ${OVS_EXTRA+-- $OVS_EXTRA}
-		BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
-		# The bridge may change its MAC to be the lower one among all its
-		# ports. If that happens, bridge configuration (e.g. routes) will
-		# be lost. Restore the post-up bridge configuration again.
-		if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
-			${OTHERSCRIPT} "$OVS_BRIDGE"
-		fi
-		;;
-	OVSDPDKRPort)
-		ifup_ovs_bridge
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=dpdkr ${OVS_EXTRA+-- $OVS_EXTRA}
-		;;
-	OVSDPDKVhostUserPort)
-		ifup_ovs_bridge
-		PORT_TYPE="dpdkvhostuser"
-		PORT_PATH=""
-		if [ "$OVS_PORT_MODE" == "client" ]; then
-			PORT_TYPE="dpdkvhostuserclient"
-			PORT_PATH="options:vhost-server-path=${OVS_PORT_PATH}"
-		fi
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
-			-- set Interface "$DEVICE" type=$PORT_TYPE \
-			$PORT_PATH \
-			${OVS_EXTRA+-- $OVS_EXTRA}
-		;;
-	OVSDPDKBond)
-		ifup_ovs_bridge
-		BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
-		for _iface in $BOND_IFACES; do
-			IFACE_TYPES="${IFACE_TYPES} -- set interface ${_iface} type=dpdk"
-		done
-		ovs-vsctl -t ${TIMEOUT} \
-			-- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
-			-- add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${IFACE_TYPES} ${OVS_EXTRA+-- $OVS_EXTRA}
-		BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
-		# The bridge may change its MAC to be the lower one among all its
-		# ports. If that happens, bridge configuration (e.g. routes) will
-		# be lost. Restore the post-up bridge configuration again.
-		if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
-			${OTHERSCRIPT} "$OVS_BRIDGE"
-		fi
-		;;
-	*)
-		echo $"Invalid OVS interface type $TYPE"
-		exit 1
-		;;
+        OVSBridge|OVSUserBridge)
+                # If bridge already exists and is up, it has been configured through
+                # other cases like OVSPort, OVSIntPort and OVSBond. If it is down or
+                # it does not exist, create it. It is possible for a bridge to exist
+                # because it remained in the OVSDB for some reason, but it won't be up.
+                if [ "${TYPE}" = "OVSUserBridge" ]; then
+                        DATAPATH="netdev"
+                fi
+                if check_device_down "${DEVICE}"; then
+                        ovs-vsctl -t ${TIMEOUT} -- --may-exist add-br "$DEVICE" $OVS_OPTIONS \
+                        ${OVS_EXTRA+-- $OVS_EXTRA} \
+                        ${STP+-- set bridge "$DEVICE" stp_enable="${STP}"} \
+                        ${DATAPATH+-- set bridge "$DEVICE" datapath_type="$DATAPATH"}
+                else
+                        OVSBRIDGECONFIGURED="yes"
+                fi
+
+                # If MACADDR is provided in the interface configuration file,
+                # we need to set it using ovs-vsctl; setting it with the "ip"
+                # command in ifup-eth does not make the change persistent.
+                if [ -n "$MACADDR" ]; then
+                        ovs-vsctl -t ${TIMEOUT} -- set bridge "$DEVICE" \
+                                other-config:hwaddr="$MACADDR"
+                fi
+
+                # When dhcp is enabled, the assumption is that there will be a port to
+                # attach (otherwise, we can't reach out for dhcp). So, we do not
+                # configure the bridge through rhel's ifup infrastructure unless
+                # it is being configured after the port has been configured.
+                # The "OVSINTF" is set only after the port is configured.
+                if [ "${OVSBOOTPROTO}" = "dhcp" ] && [ -n "${OVSINTF}" ]; then
+                        case " ${OVSDHCPINTERFACES} " in
+                                *" ${OVSINTF} "*)
+                                        BOOTPROTO=dhcp ${OTHERSCRIPT} ${CONFIG}
+                                ;;
+                        esac
+                fi
+
+                # When dhcp is not enabled, it is possible that someone may want
+                # a standalone bridge (i.e it may not have any ports). Configure it.
+                if [ "${OVSBOOTPROTO}" != "dhcp" ] && [ -z "${OVSINTF}" ] && \
+                        [ "${OVSBRIDGECONFIGURED}" != "yes" ]; then
+                        ${OTHERSCRIPT} ${CONFIG}
+                fi
+                exit 0
+                ;;
+        OVSPort)
+                ifup_ovs_bridge
+                ${OTHERSCRIPT} ${CONFIG} ${2}
+                # The port might be already in the database but not yet
+                # in the datapath.  So, remove the stale interface first.
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
+                OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE"
+                ;;
+        OVSIntPort)
+                ifup_ovs_bridge
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
+                if [ -n "${OVSDHCPINTERFACES}" ]; then
+                        for _iface in ${OVSDHCPINTERFACES}; do
+                                /sbin/ifup ${_iface}
+                        done
+                fi
+                BOOTPROTO="${OVSBOOTPROTO}" ${OTHERSCRIPT} ${CONFIG} ${2}
+                ;;
+        OVSBond)
+                ifup_ovs_bridge
+                for _iface in $BOND_IFACES; do
+                        /sbin/ifup ${_iface}
+                done
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
+                OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE"
+                ;;
+        OVSTunnel)
+                ifup_ovs_bridge
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=$OVS_TUNNEL_TYPE $OVS_TUNNEL_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        OVSPatchPort)
+                ifup_ovs_bridge
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=patch options:peer="${OVS_PATCH_PEER}" ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        OVSDPDKPort)
+                ifup_ovs_bridge
+                BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=dpdk ${OVS_EXTRA+-- $OVS_EXTRA}
+                BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
+                # The bridge may change its MAC to be the lower one among all its
+                # ports. If that happens, bridge configuration (e.g. routes) will
+                # be lost. Restore the post-up bridge configuration again.
+                if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
+                        ${OTHERSCRIPT} "$OVS_BRIDGE"
+                fi
+                ;;
+        OVSDPDKRPort)
+                ifup_ovs_bridge
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=dpdkr ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        OVSDPDKVhostUserPort)
+                ifup_ovs_bridge
+                PORT_TYPE="dpdkvhostuser"
+                PORT_PATH=""
+                if [ "$OVS_PORT_MODE" == "client" ]; then
+                        PORT_TYPE="dpdkvhostuserclient"
+                        PORT_PATH="options:vhost-server-path=${OVS_PORT_PATH}"
+                fi
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS \
+                        -- set Interface "$DEVICE" type=$PORT_TYPE \
+                        $PORT_PATH \
+                        ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        OVSDPDKBond)
+                ifup_ovs_bridge
+                BRIDGE_MAC_ORIG=$(get_hwaddr $OVS_BRIDGE)
+                for _iface in $BOND_IFACES; do
+                        IFACE_TYPES="${IFACE_TYPES} -- set interface ${_iface} type=dpdk"
+                done
+                ovs-vsctl -t ${TIMEOUT} \
+                        -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" \
+                        -- add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${IFACE_TYPES} ${OVS_EXTRA+-- $OVS_EXTRA}
+                BRIDGE_MAC=$(get_hwaddr $OVS_BRIDGE)
+                # The bridge may change its MAC to be the lower one among all its
+                # ports. If that happens, bridge configuration (e.g. routes) will
+                # be lost. Restore the post-up bridge configuration again.
+                if [ "$BRIDGE_MAC_ORIG" != "$BRIDGE_MAC" ]; then
+                        ${OTHERSCRIPT} "$OVS_BRIDGE"
+                fi
+                ;;
+        *)
+                echo $"Invalid OVS interface type $TYPE"
+                exit 1
+                ;;
 esac
diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
index 64a87a79388a..22d0235f7131 100644
--- a/rhel/openvswitch-fedora.spec.in
+++ b/rhel/openvswitch-fedora.spec.in
@@ -214,30 +214,30 @@ Docker network plugins for OVN.
 %build
 %configure \
 %if %{with libcapng}
-	--enable-libcapng \
+        --enable-libcapng \
 %else
-	--disable-libcapng \
+        --disable-libcapng \
 %endif
 %if %{with dpdk}
-	--with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \
+        --with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \
 %endif
-	--enable-ssl \
-	--with-pkidir=%{_sharedstatedir}/openvswitch/pki \
+        --enable-ssl \
+        --with-pkidir=%{_sharedstatedir}/openvswitch/pki \
 %if 0%{?fedora} > 22 || %{with build_python3}
-	PYTHON3=%{__python3} \
-	PYTHON=%{__python2}
+        PYTHON3=%{__python3} \
+        PYTHON=%{__python2}
 %else
-	PYTHON=%{__python}
+        PYTHON=%{__python}
 %endif
 
 build-aux/dpdkstrip.py \
 %if %{with dpdk}
-	--dpdk \
+        --dpdk \
 %else
-	--nodpdk \
+        --nodpdk \
 %endif
-	< rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
-	> rhel/usr_lib_systemd_system_ovs-vswitchd.service
+        < rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
+        > rhel/usr_lib_systemd_system_ovs-vswitchd.service
 
 make %{?_smp_mflags}
 make selinux-policy
@@ -259,10 +259,10 @@ install -p -D -m 0644 \
         rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
 for service in openvswitch ovsdb-server ovs-vswitchd ovs-delete-transient-ports \
-		ovn-controller ovn-controller-vtep ovn-northd; do
-	install -p -D -m 0644 \
-			rhel/usr_lib_systemd_system_${service}.service \
-			$RPM_BUILD_ROOT%{_unitdir}/${service}.service
+                ovn-controller ovn-controller-vtep ovn-northd; do
+        install -p -D -m 0644 \
+                        rhel/usr_lib_systemd_system_${service}.service \
+                        $RPM_BUILD_ROOT%{_unitdir}/${service}.service
 done
 install -m 0755 rhel/etc_init.d_openvswitch \
         $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init
diff --git a/rhel/openvswitch-kmod-rhel6.spec.in b/rhel/openvswitch-kmod-rhel6.spec.in
index c6e6db5d0938..daa3dade1f6c 100644
--- a/rhel/openvswitch-kmod-rhel6.spec.in
+++ b/rhel/openvswitch-kmod-rhel6.spec.in
@@ -46,9 +46,9 @@ Open vSwitch Linux kernel module.
 
 %build
 for flavor in %flavors_to_build; do
-	mkdir _$flavor
-	(cd _$flavor && ../configure --with-linux="%{kernel_source $flavor}")
-	%{__make} -C _$flavor/datapath/linux %{?_smp_mflags}
+        mkdir _$flavor
+        (cd _$flavor && ../configure --with-linux="%{kernel_source $flavor}")
+        %{__make} -C _$flavor/datapath/linux %{?_smp_mflags}
 done
 
 %install
diff --git a/tests/bfd.at b/tests/bfd.at
index 97da74217256..7af7be54aa44 100644
--- a/tests/bfd.at
+++ b/tests/bfd.at
@@ -846,12 +846,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -917,12 +917,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -988,12 +988,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
diff --git a/tests/cfm.at b/tests/cfm.at
index 8c8bd20adec1..053be5d56d01 100644
--- a/tests/cfm.at
+++ b/tests/cfm.at
@@ -331,12 +331,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -393,12 +393,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -455,12 +455,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
diff --git a/tests/classifier.at b/tests/classifier.at
index 2362948e3ba2..86f872db6bff 100644
--- a/tests/classifier.at
+++ b/tests/classifier.at
@@ -278,7 +278,7 @@ for src in 0 1 2 3; do
             [[12]][[123]]) out=1 ;;
             32) out=2 ;;
             [[13]][[234]]) out=3 ;;
-	    ?1) out=4 ;;
+            ?1) out=4 ;;
             15) out=5 ;;
             *) out=6
         esac
diff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at
index c6f6a6695444..fff395d56fee 100644
--- a/tests/dpif-netdev.at
+++ b/tests/dpif-netdev.at
@@ -36,8 +36,8 @@ filter_flow_install () {
 
 filter_flow_dump () {
     grep 'flow_dump ' | sed '
-	s/.*flow_dump //
-	s/used:[0-9]*\.[0-9]*/used:0.0/
+        s/.*flow_dump //
+        s/used:[0-9]*\.[0-9]*/used:0.0/
     ' | sort | uniq
 }
 
diff --git a/tests/interface-reconfigure.at b/tests/interface-reconfigure.at
index f3914a4f46b5..035b0095642a 100644
--- a/tests/interface-reconfigure.at
+++ b/tests/interface-reconfigure.at
@@ -60,10 +60,10 @@ while test ${#} -ge 4; do
        test X"${2}" = Xinterface && \
        test X"${4}" = Xofport; then
           if test X"${3}" = Xeth2; then
-	      echo 5
-	  else
-	      echo -1
-	  fi
+              echo 5
+          else
+              echo -1
+          fi
     fi
 
     shift
@@ -109,566 +109,566 @@ EOF
         cat > var/xapi/network.dbcache <<'EOF'
 <?xml version="1.0" ?>
 <xenserver-network-configuration>
-	<pif ref="OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6">
-		<VLAN_slave_of/>
+        <pif ref="OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
-		</bond_slave_of>
-		<uuid>
-			bd62a141-091f-3909-e334-0334f67ff3be
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:22:19:22:4b:af
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth0
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			False
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806">
-		<VLAN_slave_of/>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+                </bond_slave_of>
+                <uuid>
+                        bd62a141-091f-3909-e334-0334f67ff3be
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:22:19:22:4b:af
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth0
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        False
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			df8d35c2-cc3a-a623-7065-d987a29feb75
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:1b:21:29:ce:51
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth4
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			False
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768">
-		<VLAN_slave_of/>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        df8d35c2-cc3a-a623-7065-d987a29feb75
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:1b:21:29:ce:51
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth4
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        False
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
-		</bond_slave_of>
-		<uuid>
-			2f87fc95-5ab4-571a-2487-3f4ac1985663
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:22:19:22:4b:b1
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth1
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			False
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e">
-		<VLAN_slave_of/>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+                </bond_slave_of>
+                <uuid>
+                        2f87fc95-5ab4-571a-2487-3f4ac1985663
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:22:19:22:4b:b1
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth1
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        False
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			d2dfdab3-daf4-afea-f055-a25a0d24d714
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
-		</VLAN_master_of>
-		<VLAN>
-			4
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			fe:ff:ff:ff:ff:ff
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			bond0
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			True
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc">
-		<VLAN_slave_of>
-			<master>
-				OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
-			</master>
-		</VLAN_slave_of>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        d2dfdab3-daf4-afea-f055-a25a0d24d714
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
+                </VLAN_master_of>
+                <VLAN>
+                        4
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        fe:ff:ff:ff:ff:ff
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        bond0
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        True
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc">
+                <VLAN_slave_of>
+                        <master>
+                                OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
+                        </master>
+                </VLAN_slave_of>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			f4ba396e-a993-a592-5fbc-a1d566afb59e
-		</uuid>
-		<IP>
-			10.0.0.188
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			255.0.0.0
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:15:17:a0:29:81
-		</MAC>
-		<ip_configuration_mode>
-			Static
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth3
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			True
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15">
-		<VLAN_slave_of/>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        f4ba396e-a993-a592-5fbc-a1d566afb59e
+                </uuid>
+                <IP>
+                        10.0.0.188
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        255.0.0.0
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:15:17:a0:29:81
+                </MAC>
+                <ip_configuration_mode>
+                        Static
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth3
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        True
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			True
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			646ca9a1-36ad-e2f9-3ecc-1e5622c201c2
-		</uuid>
-		<IP>
-			172.18.3.188
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			255.255.0.0
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:15:17:a0:29:80
-		</MAC>
-		<ip_configuration_mode>
-			DHCP
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth2
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			True
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3">
-		<VLAN_slave_of/>
+                <management>
+                        True
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        646ca9a1-36ad-e2f9-3ecc-1e5622c201c2
+                </uuid>
+                <IP>
+                        172.18.3.188
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        255.255.0.0
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:15:17:a0:29:80
+                </MAC>
+                <ip_configuration_mode>
+                        DHCP
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth2
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        True
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3">
+                <VLAN_slave_of/>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			3941edd2-865b-8dd8-61f0-199f5e1fa652
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
-		</VLAN_master_of>
-		<VLAN>
-			123
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			fe:ff:ff:ff:ff:ff
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			eth3
-		</device>
-		<bond_master_of/>
-		<currently_attached>
-			True
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17
-		</network>
-	</pif>
-	<pif ref="OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11">
-		<VLAN_slave_of>
-			<master>
-				OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
-			</master>
-		</VLAN_slave_of>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        3941edd2-865b-8dd8-61f0-199f5e1fa652
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
+                </VLAN_master_of>
+                <VLAN>
+                        123
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        fe:ff:ff:ff:ff:ff
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        eth3
+                </device>
+                <bond_master_of/>
+                <currently_attached>
+                        True
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17
+                </network>
+        </pif>
+        <pif ref="OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11">
+                <VLAN_slave_of>
+                        <master>
+                                OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
+                        </master>
+                </VLAN_slave_of>
                 <tunnel_access_PIF_of/>
-		<management>
-			False
-		</management>
-		<bond_slave_of>
-			OpaqueRef:NULL
-		</bond_slave_of>
-		<uuid>
-			6c0327a9-afa3-fc19-6798-a1bfe20095ed
-		</uuid>
-		<IP>
-			
-		</IP>
-		<VLAN_master_of>
-			OpaqueRef:NULL
-		</VLAN_master_of>
-		<VLAN>
-			-1
-		</VLAN>
-		<netmask>
-			
-		</netmask>
-		<other_config/>
-		<MAC>
-			00:22:19:22:4b:af
-		</MAC>
-		<ip_configuration_mode>
-			None
-		</ip_configuration_mode>
-		<DNS>
-			
-		</DNS>
-		<device>
-			bond0
-		</device>
-		<bond_master_of>
-			<slave>
-				OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
-			</slave>
-		</bond_master_of>
-		<currently_attached>
-			True
-		</currently_attached>
-		<gateway>
-			
-		</gateway>
-		<network>
-			OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a
-		</network>
-	</pif>
-	<bond ref="OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e">
-		<master>
-			OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
-		</master>
-		<uuid>
-			dad825f1-6d81-386e-849c-5589281e53e1
-		</uuid>
-		<slaves>
-			<slave>
-				OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
-			</slave>
-			<slave>
-				OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
-			</slave>
-		</slaves>
-	</bond>
-	<vlan ref="OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c">
-		<tagged_PIF>
-			OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
-		</tagged_PIF>
-		<uuid>
-			841814da-d0d2-9da4-0b2e-b6143480bbfb
-		</uuid>
-		<untagged_PIF>
-			OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
-		</untagged_PIF>
-	</vlan>
-	<vlan ref="OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297">
-		<tagged_PIF>
-			OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
-		</tagged_PIF>
-		<uuid>
-			399279a2-5ccd-5368-9af3-8622a1f1ac82
-		</uuid>
-		<untagged_PIF>
-			OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
-		</untagged_PIF>
-	</vlan>
-	<network ref="OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47">
-		<PIFs>
-			<PIF>
-				OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
-			</PIF>
-		</PIFs>
-		<bridge>
-			xapi2
-		</bridge>
-		<other_config/>
-		<uuid>
-			99be2da4-6c33-6f8e-49ea-3bc592fe3c85
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32">
-		<PIFs>
-			<PIF>
-				OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
-			</PIF>
-		</PIFs>
-		<bridge>
-			xenbr3
-		</bridge>
-		<other_config/>
-		<uuid>
-			2902ae1b-8013-897a-b697-0b200ea3aaa5
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a">
-		<PIFs>
-			<PIF>
-				OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
-			</PIF>
-		</PIFs>
-		<bridge>
-			xapi1
-		</bridge>
-		<other_config/>
-		<uuid>
-			45cbbb43-113d-a712-3231-c6463f253cef
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d">
-		<PIFs>
-			<PIF>
-				OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
-			</PIF>
-		</PIFs>
-		<bridge>
-			xenbr1
-		</bridge>
-		<other_config/>
-		<uuid>
-			99f8771a-645a-26a3-e06c-30a401f1d009
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe">
-		<PIFs>
-			<PIF>
-				OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15
-			</PIF>
-		</PIFs>
-		<bridge>
-			xenbr2
-		</bridge>
-		<other_config/>
-		<uuid>
-			d08c8749-0c8f-9e8d-ce25-fd364661ee99
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5">
-		<PIFs>
-			<PIF>
-				OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
-			</PIF>
-		</PIFs>
-		<bridge>
-			xenbr0
-		</bridge>
-		<other_config>
-			<vswitch-disable-in-band>
-				true
-			</vswitch-disable-in-band>
-		</other_config>
-		<uuid>
-			c9eecb03-560d-61de-b6a8-56dfc766f67e
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531">
-		<PIFs>
-			<PIF>
-				OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806
-			</PIF>
-		</PIFs>
-		<bridge>
-			xenbr4
-		</bridge>
-		<other_config/>
-		<uuid>
-			d2c14c89-29cc-51d4-7664-633eff02b2ad
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:0b7354a4-8f4b-aa08-2f16-a22c117e4211">
-		<PIFs/>
-		<bridge>
-			xapi0
-		</bridge>
-		<other_config/>
-		<uuid>
-			dc0f0632-c2aa-1b78-2fea-0d3a23c51740
-		</uuid>
-	</network>
-	<network ref="OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17">
-		<PIFs>
-			<PIF>
-				OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
-			</PIF>
-		</PIFs>
-		<bridge>
-			xapi3
-		</bridge>
-		<other_config/>
-		<uuid>
-			db7bdc03-074d-42ae-fc73-9b06de1d57f6
-		</uuid>
-	</network>
+                <management>
+                        False
+                </management>
+                <bond_slave_of>
+                        OpaqueRef:NULL
+                </bond_slave_of>
+                <uuid>
+                        6c0327a9-afa3-fc19-6798-a1bfe20095ed
+                </uuid>
+                <IP>
+                        
+                </IP>
+                <VLAN_master_of>
+                        OpaqueRef:NULL
+                </VLAN_master_of>
+                <VLAN>
+                        -1
+                </VLAN>
+                <netmask>
+                        
+                </netmask>
+                <other_config/>
+                <MAC>
+                        00:22:19:22:4b:af
+                </MAC>
+                <ip_configuration_mode>
+                        None
+                </ip_configuration_mode>
+                <DNS>
+                        
+                </DNS>
+                <device>
+                        bond0
+                </device>
+                <bond_master_of>
+                        <slave>
+                                OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+                        </slave>
+                </bond_master_of>
+                <currently_attached>
+                        True
+                </currently_attached>
+                <gateway>
+                        
+                </gateway>
+                <network>
+                        OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a
+                </network>
+        </pif>
+        <bond ref="OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e">
+                <master>
+                        OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+                </master>
+                <uuid>
+                        dad825f1-6d81-386e-849c-5589281e53e1
+                </uuid>
+                <slaves>
+                        <slave>
+                                OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
+                        </slave>
+                        <slave>
+                                OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
+                        </slave>
+                </slaves>
+        </bond>
+        <vlan ref="OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c">
+                <tagged_PIF>
+                        OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+                </tagged_PIF>
+                <uuid>
+                        841814da-d0d2-9da4-0b2e-b6143480bbfb
+                </uuid>
+                <untagged_PIF>
+                        OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
+                </untagged_PIF>
+        </vlan>
+        <vlan ref="OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297">
+                <tagged_PIF>
+                        OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
+                </tagged_PIF>
+                <uuid>
+                        399279a2-5ccd-5368-9af3-8622a1f1ac82
+                </uuid>
+                <untagged_PIF>
+                        OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
+                </untagged_PIF>
+        </vlan>
+        <network ref="OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xapi2
+                </bridge>
+                <other_config/>
+                <uuid>
+                        99be2da4-6c33-6f8e-49ea-3bc592fe3c85
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xenbr3
+                </bridge>
+                <other_config/>
+                <uuid>
+                        2902ae1b-8013-897a-b697-0b200ea3aaa5
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xapi1
+                </bridge>
+                <other_config/>
+                <uuid>
+                        45cbbb43-113d-a712-3231-c6463f253cef
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xenbr1
+                </bridge>
+                <other_config/>
+                <uuid>
+                        99f8771a-645a-26a3-e06c-30a401f1d009
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xenbr2
+                </bridge>
+                <other_config/>
+                <uuid>
+                        d08c8749-0c8f-9e8d-ce25-fd364661ee99
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xenbr0
+                </bridge>
+                <other_config>
+                        <vswitch-disable-in-band>
+                                true
+                        </vswitch-disable-in-band>
+                </other_config>
+                <uuid>
+                        c9eecb03-560d-61de-b6a8-56dfc766f67e
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xenbr4
+                </bridge>
+                <other_config/>
+                <uuid>
+                        d2c14c89-29cc-51d4-7664-633eff02b2ad
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:0b7354a4-8f4b-aa08-2f16-a22c117e4211">
+                <PIFs/>
+                <bridge>
+                        xapi0
+                </bridge>
+                <other_config/>
+                <uuid>
+                        dc0f0632-c2aa-1b78-2fea-0d3a23c51740
+                </uuid>
+        </network>
+        <network ref="OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17">
+                <PIFs>
+                        <PIF>
+                                OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
+                        </PIF>
+                </PIFs>
+                <bridge>
+                        xapi3
+                </bridge>
+                <other_config/>
+                <uuid>
+                        db7bdc03-074d-42ae-fc73-9b06de1d57f6
+                </uuid>
+        </network>
         <pool ref="OpaqueRef:a765d06c-fc82-cc67-8f6c-fd8db45f6a84">
                 <other_config>
                         <vswitch-controller-fail-mode>
diff --git a/tests/lacp.at b/tests/lacp.at
index ee8100858541..a7f75ac67acb 100644
--- a/tests/lacp.at
+++ b/tests/lacp.at
@@ -735,12 +735,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.3): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -831,12 +831,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
@@ -927,12 +927,12 @@ check_liveness () {
     printf '\n\n--- check_liveness %d ---\n\n\n' $1
     shift
 
-	echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
+        echo >>expout "OFPT_PORT_STATUS (OF1.5): MOD: 1(p0): addr:
      config:     0
      state:      $1
      speed: 0 Mbps now, 0 Mbps max"
 
-	AT_CHECK(
+        AT_CHECK(
       [[sed '
 s/ (xid=0x[0-9a-fA-F]*)//
 s/ *duration.*//
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
index 50e827e8e36c..d7989259b922 100644
--- a/tests/ofproto-dpif.at
+++ b/tests/ofproto-dpif.at
@@ -2537,8 +2537,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:01:00 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2564,8 +2564,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:01:01 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2591,8 +2591,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:01:02 > 50:54:00:00:00:07, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2618,8 +2618,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:02:00 > 50:54:00:00:02:00, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2645,8 +2645,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:02:01 > 50:54:00:00:02:01, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2673,8 +2673,8 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with two MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:02:10 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, [S], ttl 31)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, [S], ttl 31)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2700,9 +2700,9 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:03:00 > 50:54:00:00:00:07, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, ttl 31)
-dnl		(label 20, exp 0, [S], ttl 30)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, ttl 31)
+dnl             (label 20, exp 0, [S], ttl 30)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2728,9 +2728,9 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:03:01 > 50:54:00:00:00:00, ethertype MPLS multicast (0x8848), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, ttl 31)
-dnl		(label 20, exp 0, [S], ttl 30)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, ttl 31)
+dnl             (label 20, exp 0, [S], ttl 30)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -2756,9 +2756,9 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore])
 dnl Modified MPLS pop action.
 dnl The input is a frame with three MPLS label stack entries which tcpdump -vve shows as:
 dnl 60:66:66:66:03:10 > 50:54:00:00:00:00, ethertype MPLS unicast (0x8847), length 66: MPLS (label 20, exp 0, ttl 32)
-dnl		(label 20, exp 0, ttl 31)
-dnl		(label 20, exp 0, [S], ttl 30)
-dnl		(tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
+dnl             (label 20, exp 0, ttl 31)
+dnl             (label 20, exp 0, [S], ttl 30)
+dnl             (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto TCP (6), length 44)
 dnl        192.168.0.1.80 > 192.168.0.2.0: Flags [none], cksum 0x7744 (correct), seq 42:46, win 10000, length 4
 AT_CHECK([ovs-ofctl monitor br0 65534 -P nxt_packet_in --detach --pidfile 2> ofctl_monitor.log])
 
@@ -4771,12 +4771,12 @@ OVS_VSWITCHD_START
 add_of_ports br0 1 2 3
 ovs-vsctl \
         -- set Bridge br0 fail-mode=standalone mirrors=@m1, at m2 \
-	-- --id=@m1 create Mirror name=m1 select_all=true output_vlan=500 \
-	-- --id=@m2 create Mirror name=m2 select_all=true output_vlan=501 \
-	-- set Port br0 tag=0 \
-	-- set Port p1 tag=0 \
-	-- set Port p2 tag=500 \
-	-- set Port p3 tag=501
+        -- --id=@m1 create Mirror name=m1 select_all=true output_vlan=500 \
+        -- --id=@m2 create Mirror name=m2 select_all=true output_vlan=501 \
+        -- set Port br0 tag=0 \
+        -- set Port p1 tag=0 \
+        -- set Port p2 tag=500 \
+        -- set Port p3 tag=501
 
 flow='in_port=1'
 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout])
@@ -5993,363 +5993,363 @@ m4_define([CHECK_SFLOW_SAMPLING_PACKET],
   OVS_APP_EXIT_AND_WAIT([test-sflow])
 
   AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=1
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=1
-	dropEvents=0
-	in_ifindex=1004
-	in_format=0
-	out_ifindex=2
-	out_format=2
-	hdr_prot=1
-	pkt_len=46
-	stripped=4
-	hdr_len=42
-	hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-05-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-05-C0-A8-00-02-00-00-00-00-00-00-C0-A8-00-01
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=1
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=1
+        dropEvents=0
+        in_ifindex=1004
+        in_format=0
+        out_ifindex=2
+        out_format=2
+        hdr_prot=1
+        pkt_len=46
+        stripped=4
+        hdr_len=42
+        hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-05-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-05-C0-A8-00-02-00-00-00-00-00-00-C0-A8-00-01
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=2
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=2
-	dropEvents=0
-	in_ifindex=1003
-	in_format=0
-	out_ifindex=2
-	out_format=2
-	hdr_prot=1
-	pkt_len=46
-	stripped=4
-	hdr_len=42
-	hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-07-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-07-C0-A8-00-01-00-00-00-00-00-00-C0-A8-00-02
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=2
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=2
+        dropEvents=0
+        in_ifindex=1003
+        in_format=0
+        out_ifindex=2
+        out_format=2
+        hdr_prot=1
+        pkt_len=46
+        stripped=4
+        hdr_len=42
+        hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-07-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-07-C0-A8-00-01-00-00-00-00-00-00-C0-A8-00-02
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=3
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=3
-	dropEvents=0
-	in_ifindex=1004
-	in_format=0
-	out_ifindex=1003
-	out_format=0
-	hdr_prot=1
-	pkt_len=110
-	stripped=4
-	hdr_len=106
-	hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-5C-00-00-00-00-40-01-F9-4D-C0-A8-00-01-C0-A8-00-02-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=3
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=3
+        dropEvents=0
+        in_ifindex=1004
+        in_format=0
+        out_ifindex=1003
+        out_format=0
+        hdr_prot=1
+        pkt_len=110
+        stripped=4
+        hdr_len=106
+        hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-5C-00-00-00-00-40-01-F9-4D-C0-A8-00-01-C0-A8-00-02-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=4
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=4
-	dropEvents=0
-	in_ifindex=1003
-	in_format=0
-	out_ifindex=1004
-	out_format=0
-	hdr_prot=1
-	pkt_len=110
-	stripped=4
-	hdr_len=106
-	hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-5C-00-00-00-00-40-01-F9-4D-C0-A8-00-02-C0-A8-00-01-00-00-1B-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=4
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=4
+        dropEvents=0
+        in_ifindex=1003
+        in_format=0
+        out_ifindex=1004
+        out_format=0
+        hdr_prot=1
+        pkt_len=110
+        stripped=4
+        hdr_len=106
+        hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-5C-00-00-00-00-40-01-F9-4D-C0-A8-00-02-C0-A8-00-01-00-00-1B-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=5
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=5
-	dropEvents=0
-	in_ifindex=1003
-	in_format=0
-	out_ifindex=1004
-	out_format=0
-	hdr_prot=1
-	pkt_len=58
-	stripped=4
-	hdr_len=54
-	hdr=50-54-00-00-00-05-50-54-00-00-00-07-86-DD-67-00-00-00-00-00-0A-80-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-01-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-02
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=5
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=5
+        dropEvents=0
+        in_ifindex=1003
+        in_format=0
+        out_ifindex=1004
+        out_format=0
+        hdr_prot=1
+        pkt_len=58
+        stripped=4
+        hdr_len=54
+        hdr=50-54-00-00-00-05-50-54-00-00-00-07-86-DD-67-00-00-00-00-00-0A-80-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-01-FE-80-00-00-00-00-00-00-00-00-00-00-00-00-00-02
 ])
 
   AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'ETHCOUNTERS|IFCOUNTERS|ERROR|PORTNAME|OPENFLOWPORT' | head -24 | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 ETHCOUNTERS
-	dot3StatsAlignmentErrors=4294967295
-	dot3StatsFCSErrors=4294967295
-	dot3StatsSingleCollisionFrames=4294967295
-	dot3StatsMultipleCollisionFrames=4294967295
-	dot3StatsSQETestErrors=4294967295
-	dot3StatsDeferredTransmissions=4294967295
-	dot3StatsLateCollisions=4294967295
-	dot3StatsExcessiveCollisions=4294967295
-	dot3StatsInternalMacTransmitErrors=4294967295
-	dot3StatsCarrierSenseErrors=4294967295
-	dot3StatsFrameTooLongs=4294967295
-	dot3StatsInternalMacReceiveErrors=4294967295
-	dot3StatsSymbolErrors=4294967295
+        dot3StatsAlignmentErrors=4294967295
+        dot3StatsFCSErrors=4294967295
+        dot3StatsSingleCollisionFrames=4294967295
+        dot3StatsMultipleCollisionFrames=4294967295
+        dot3StatsSQETestErrors=4294967295
+        dot3StatsDeferredTransmissions=4294967295
+        dot3StatsLateCollisions=4294967295
+        dot3StatsExcessiveCollisions=4294967295
+        dot3StatsInternalMacTransmitErrors=4294967295
+        dot3StatsCarrierSenseErrors=4294967295
+        dot3StatsFrameTooLongs=4294967295
+        dot3StatsInternalMacReceiveErrors=4294967295
+        dot3StatsSymbolErrors=4294967295
 IFCOUNTERS
-	dgramSeqNo=1
-	ds=127.0.0.1>0:1003
-	csSeqNo=1
-	ifindex=1003
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=202
-	in_unicasts=3
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=148
-	out_unicasts=2
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=1
+        ds=127.0.0.1>0:1003
+        csSeqNo=1
+        ifindex=1003
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=202
+        in_unicasts=3
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=148
+        out_unicasts=2
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 IFCOUNTERS
-	dgramSeqNo=1
-	ds=127.0.0.1>0:1004
-	csSeqNo=1
-	ifindex=1004
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=148
-	in_unicasts=2
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=202
-	out_unicasts=3
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=1
+        ds=127.0.0.1>0:1004
+        csSeqNo=1
+        ifindex=1004
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=148
+        in_unicasts=2
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=202
+        out_unicasts=3
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 IFCOUNTERS
-	dgramSeqNo=2
-	ds=127.0.0.1>0:1002
-	csSeqNo=1
-	ifindex=1002
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=0
-	in_unicasts=0
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=84
-	out_unicasts=2
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=2
+        ds=127.0.0.1>0:1002
+        csSeqNo=1
+        ifindex=1002
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=0
+        in_unicasts=0
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=84
+        out_unicasts=2
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 IFCOUNTERS
-	dgramSeqNo=3
-	ds=127.0.0.1>0:1002
-	csSeqNo=2
-	ifindex=1002
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=0
-	in_unicasts=0
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=84
-	out_unicasts=2
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=3
+        ds=127.0.0.1>0:1002
+        csSeqNo=2
+        ifindex=1002
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=0
+        in_unicasts=0
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=84
+        out_unicasts=2
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 IFCOUNTERS
-	dgramSeqNo=3
-	ds=127.0.0.1>0:1003
-	csSeqNo=2
-	ifindex=1003
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=202
-	in_unicasts=3
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=148
-	out_unicasts=2
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=3
+        ds=127.0.0.1>0:1003
+        csSeqNo=2
+        ifindex=1003
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=202
+        in_unicasts=3
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=148
+        out_unicasts=2
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 IFCOUNTERS
-	dgramSeqNo=3
-	ds=127.0.0.1>0:1004
-	csSeqNo=2
-	ifindex=1004
-	type=6
-	ifspeed=100000000
-	direction=0
-	status=0
-	in_octets=148
-	in_unicasts=2
-	in_multicasts=4294967295
-	in_broadcasts=4294967295
-	in_discards=4294967295
-	in_errors=4294967295
-	in_unknownprotos=4294967295
-	out_octets=202
-	out_unicasts=3
-	out_multicasts=4294967295
-	out_broadcasts=4294967295
-	out_discards=4294967295
-	out_errors=4294967295
-	promiscuous=0
+        dgramSeqNo=3
+        ds=127.0.0.1>0:1004
+        csSeqNo=2
+        ifindex=1004
+        type=6
+        ifspeed=100000000
+        direction=0
+        status=0
+        in_octets=148
+        in_unicasts=2
+        in_multicasts=4294967295
+        in_broadcasts=4294967295
+        in_discards=4294967295
+        in_errors=4294967295
+        in_unknownprotos=4294967295
+        out_octets=202
+        out_unicasts=3
+        out_multicasts=4294967295
+        out_broadcasts=4294967295
+        out_discards=4294967295
+        out_errors=4294967295
+        promiscuous=0
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=1
+        datapath_id=18364758544493064720
+        port_no=1
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=1
+        datapath_id=18364758544493064720
+        port_no=1
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=2
+        datapath_id=18364758544493064720
+        port_no=2
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=2
+        datapath_id=18364758544493064720
+        port_no=2
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=65534
+        datapath_id=18364758544493064720
+        port_no=65534
 OPENFLOWPORT
-	datapath_id=18364758544493064720
-	port_no=65534
+        datapath_id=18364758544493064720
+        port_no=65534
 PORTNAME
-	portName=br0
+        portName=br0
 PORTNAME
-	portName=br0
+        portName=br0
 PORTNAME
-	portName=p1
+        portName=p1
 PORTNAME
-	portName=p1
+        portName=p1
 PORTNAME
-	portName=p2
+        portName=p2
 PORTNAME
-	portName=p2
+        portName=p2
 ])])
 
 AT_SETUP([ofproto-dpif - basic truncate action])
@@ -6489,19 +6489,19 @@ dnl Test sFlow LAG structures
 AT_SETUP([ofproto-dpif - sFlow packet sampling - LACP structures])
 AT_SKIP_IF([test "$IS_WIN32" = "yes"])
 OVS_VSWITCHD_START([dnl
-		    add-bond br0 bond p1 p2 --				\
-		    set Port bond lacp=active bond-mode=active-backup	\
-		    other_config:lacp-time="fast"			\
-		    other_config:lacp-system-id=11:22:33:44:55:66	\
-		    other_config:lacp-system-priority=54321 --		\
-		    set Interface p1 type=dummy				\
-		    other_config:lacp-port-id=11			\
-		    other_config:lacp-port-priority=111			\
-		    other_config:lacp-aggregation-key=3333 --		\
-		    set Interface p2 type=dummy				\
-		    other_config:lacp-port-id=22			\
-		    other_config:lacp-port-priority=222			\
-		    other_config:lacp-aggregation-key=3333 ])
+                    add-bond br0 bond p1 p2 --                          \
+                    set Port bond lacp=active bond-mode=active-backup   \
+                    other_config:lacp-time="fast"                       \
+                    other_config:lacp-system-id=11:22:33:44:55:66       \
+                    other_config:lacp-system-priority=54321 --          \
+                    set Interface p1 type=dummy                         \
+                    other_config:lacp-port-id=11                        \
+                    other_config:lacp-port-priority=111                 \
+                    other_config:lacp-aggregation-key=3333 --           \
+                    set Interface p2 type=dummy                         \
+                    other_config:lacp-port-id=22                        \
+                    other_config:lacp-port-priority=222                 \
+                    other_config:lacp-aggregation-key=3333 ])
 
 on_exit 'kill `cat test-sflow.pid`'
 AT_CHECK([ovstest test-sflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > sflow.log], [0], [], [ignore])
@@ -6511,9 +6511,9 @@ PARSE_LISTENING_PORT([test-sflow.log], [SFLOW_PORT])
 ovs-appctl time/stop
 
 ovs-vsctl \
-      set Interface p1 options:ifindex=1003 --			\
-      set Bridge br0 sflow=@sf --				\
-      --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\"	\
+      set Interface p1 options:ifindex=1003 --                  \
+      set Bridge br0 sflow=@sf --                               \
+      --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\"   \
       header=128 sampling=1 polling=1 agent=127.0.0.1
 
 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second)
@@ -6522,23 +6522,23 @@ AT_CHECK([ovs-appctl revalidator/purge], [0])
 OVS_VSWITCHD_STOP
 OVS_APP_EXIT_AND_WAIT([test-sflow])
 AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 LACPCOUNTERS
-	sysID=11:22:33:44:55:66
-	partnerID=00:00:00:00:00:00
-	aggID=3333
-	actorAdmin=0x7
-	actorOper=0xbf
-	partnerAdmin=0x0
-	partnerOper=0x2
-	LACPDUsRx=0
-	markerPDUsRx=4294967295
-	markerRespPDUsRx=4294967295
-	unknownRx=4294967295
-	illegalRx=0
-	LACPDUsTx=1
-	markerPDUsTx=4294967295
-	markerRespPDUsTx=4294967295
+        sysID=11:22:33:44:55:66
+        partnerID=00:00:00:00:00:00
+        aggID=3333
+        actorAdmin=0x7
+        actorOper=0xbf
+        partnerAdmin=0x0
+        partnerOper=0x2
+        LACPDUsRx=0
+        markerPDUsRx=4294967295
+        markerRespPDUsRx=4294967295
+        unknownRx=4294967295
+        illegalRx=0
+        LACPDUsTx=1
+        markerPDUsTx=4294967295
+        markerRespPDUsTx=4294967295
 ])
 
 AT_CLEANUP
@@ -6555,7 +6555,7 @@ ovs-appctl time/stop
 
 OVS_VSWITCHD_DISABLE_TUNNEL_PUSH_POP
 AT_CHECK([ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre \
-     		    options:remote_ip=1.1.1.1 options:key=456 ofport_request=3])
+                    options:remote_ip=1.1.1.1 options:key=456 ofport_request=3])
 AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy ofport_request=4])
 
 AT_CHECK([ovs-ofctl add-flow br0 action=3])
@@ -6577,36 +6577,36 @@ done
 OVS_APP_EXIT_AND_WAIT([test-sflow])
 
 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=1
-	tunnel4_out_length=0
-	tunnel4_out_protocol=47
-	tunnel4_out_src=0.0.0.0
-	tunnel4_out_dst=1.1.1.1
-	tunnel4_out_src_port=0
-	tunnel4_out_dst_port=0
-	tunnel4_out_tcp_flags=0
-	tunnel4_out_tos=1
-	tunnel_out_vni=456
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=1
-	dropEvents=0
-	in_ifindex=0
-	in_format=0
-	out_ifindex=1
-	out_format=2
-	hdr_prot=1
-	pkt_len=110
-	stripped=4
-	hdr_len=106
-	hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-01-00-5C-00-00-00-00-80-01-12-8A-0A-0A-0A-02-0A-0A-0A-01-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=1
+        tunnel4_out_length=0
+        tunnel4_out_protocol=47
+        tunnel4_out_src=0.0.0.0
+        tunnel4_out_dst=1.1.1.1
+        tunnel4_out_src_port=0
+        tunnel4_out_dst_port=0
+        tunnel4_out_tcp_flags=0
+        tunnel4_out_tos=1
+        tunnel_out_vni=456
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=1
+        dropEvents=0
+        in_ifindex=0
+        in_format=0
+        out_ifindex=1
+        out_format=2
+        hdr_prot=1
+        pkt_len=110
+        stripped=4
+        hdr_len=106
+        hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-01-00-5C-00-00-00-00-80-01-12-8A-0A-0A-0A-02-0A-0A-0A-01-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
 ])
 
 OVS_VSWITCHD_STOP
@@ -6679,36 +6679,36 @@ done
 OVS_APP_EXIT_AND_WAIT([test-sflow])
 
 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=1
-	tunnel4_out_length=0
-	tunnel4_out_protocol=47
-	tunnel4_out_src=1.1.2.88
-	tunnel4_out_dst=1.1.2.92
-	tunnel4_out_src_port=0
-	tunnel4_out_dst_port=0
-	tunnel4_out_tcp_flags=0
-	tunnel4_out_tos=0
-	tunnel_out_vni=456
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=1
-	dropEvents=0
-	in_ifindex=2011
-	in_format=0
-	out_ifindex=1
-	out_format=2
-	hdr_prot=1
-	pkt_len=110
-	stripped=4
-	hdr_len=106
-	hdr=50-54-00-00-00-0A-50-54-00-00-00-05-08-00-45-00-00-5C-00-00-00-00-80-01-B6-4D-C0-A8-01-01-C0-A8-02-02-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=1
+        tunnel4_out_length=0
+        tunnel4_out_protocol=47
+        tunnel4_out_src=1.1.2.88
+        tunnel4_out_dst=1.1.2.92
+        tunnel4_out_src_port=0
+        tunnel4_out_dst_port=0
+        tunnel4_out_tcp_flags=0
+        tunnel4_out_tos=0
+        tunnel_out_vni=456
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=1
+        dropEvents=0
+        in_ifindex=2011
+        in_format=0
+        out_ifindex=1
+        out_format=2
+        hdr_prot=1
+        pkt_len=110
+        stripped=4
+        hdr_len=106
+        hdr=50-54-00-00-00-0A-50-54-00-00-00-05-08-00-45-00-00-5C-00-00-00-00-80-01-B6-4D-C0-A8-01-01-C0-A8-02-02-08-00-13-FC-00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-38-39-3A-3B-3C-3D-3E-3F
 ])
 
 OVS_VSWITCHD_STOP
@@ -6748,59 +6748,59 @@ done
 OVS_APP_EXIT_AND_WAIT([test-sflow])
 
 AT_CHECK_UNQUOTED([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\
-	/g']], [0], [dnl
+        /g']], [0], [dnl
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=1
-	mpls_label_0=789
-	mpls_tc_0=4
-	mpls_ttl_0=32
-	mpls_bos_0=0
-	mpls_label_1=11
-	mpls_tc_1=3
-	mpls_ttl_1=64
-	mpls_bos_1=1
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=1
-	dropEvents=0
-	in_ifindex=0
-	in_format=0
-	out_ifindex=1
-	out_format=2
-	hdr_prot=1
-	pkt_len=22
-	stripped=4
-	hdr_len=18
-	hdr=50-54-00-00-00-0A-50-54-00-00-00-09-88-47-00-00-B7-40
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=1
+        mpls_label_0=789
+        mpls_tc_0=4
+        mpls_ttl_0=32
+        mpls_bos_0=0
+        mpls_label_1=11
+        mpls_tc_1=3
+        mpls_ttl_1=64
+        mpls_bos_1=1
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=1
+        dropEvents=0
+        in_ifindex=0
+        in_format=0
+        out_ifindex=1
+        out_format=2
+        hdr_prot=1
+        pkt_len=22
+        stripped=4
+        hdr_len=18
+        hdr=50-54-00-00-00-0A-50-54-00-00-00-09-88-47-00-00-B7-40
 HEADER
-	dgramSeqNo=1
-	ds=127.0.0.1>2:1000
-	fsSeqNo=2
-	mpls_label_0=789
-	mpls_tc_0=4
-	mpls_ttl_0=32
-	mpls_bos_0=1
-	in_vlan=0
-	in_priority=0
-	out_vlan=0
-	out_priority=0
-	meanSkip=1
-	samplePool=2
-	dropEvents=0
-	in_ifindex=0
-	in_format=0
-	out_ifindex=1
-	out_format=2
-	hdr_prot=1
-	pkt_len=38
-	stripped=4
-	hdr_len=34
-	hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-00-00-14-00-00-00-00-00-00-BA-EB-00-00-00-00-00-00-00-00
+        dgramSeqNo=1
+        ds=127.0.0.1>2:1000
+        fsSeqNo=2
+        mpls_label_0=789
+        mpls_tc_0=4
+        mpls_ttl_0=32
+        mpls_bos_0=1
+        in_vlan=0
+        in_priority=0
+        out_vlan=0
+        out_priority=0
+        meanSkip=1
+        samplePool=2
+        dropEvents=0
+        in_ifindex=0
+        in_format=0
+        out_ifindex=1
+        out_format=2
+        hdr_prot=1
+        pkt_len=38
+        stripped=4
+        hdr_len=34
+        hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-00-00-14-00-00-00-00-00-00-BA-EB-00-00-00-00-00-00-00-00
 ])
 
 OVS_VSWITCHD_STOP
@@ -8855,7 +8855,7 @@ AT_CAPTURE_FILE([ofctl_monitor.log])
 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log])
 
 for i in 1 2 3; do
-	AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER controller '50540000000a5054000000091234'])
+        AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER controller '50540000000a5054000000091234'])
 done
 
 OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
@@ -8906,7 +8906,7 @@ AT_CAPTURE_FILE([ofctl_monitor.log])
 AT_CHECK([ovs-ofctl monitor br1 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log])
 
 for i in 1 2 3; do
-	AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER output:1 '50540000000a5054000000091234'])
+        AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 CONTROLLER output:1 '50540000000a5054000000091234'])
 done
 
 OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at
index 8aa69ee95834..7388a20a2236 100644
--- a/tests/ofproto-macros.at
+++ b/tests/ofproto-macros.at
@@ -421,11 +421,11 @@ add_of_br () {
     local mac=aa:55:aa:55:00:0$brnum
     ovs-vsctl --timeout=20 \
         -- add-br $br \
-	-- set bridge $br datapath-type=dummy \
-			  fail-mode=secure \
-			  other-config:datapath-id=$dpid \
-			  other-config:hwaddr=$mac \
-			  protocols="[[OpenFlow10,OpenFlow11,OpenFlow12,\
+        -- set bridge $br datapath-type=dummy \
+                          fail-mode=secure \
+                          other-config:datapath-id=$dpid \
+                          other-config:hwaddr=$mac \
+                          protocols="[[OpenFlow10,OpenFlow11,OpenFlow12,\
                                        OpenFlow13,OpenFlow14,OpenFlow15,\
                                        OpenFlow16]]" \
         -- "$@"
@@ -497,7 +497,7 @@ m4_define([OVS_VSWITCHD_DISABLE_TUNNEL_PUSH_POP],
 m4_define([WAIT_FOR_DUMMY_PORTS], \
   [m4_foreach([dummy_port], [$@],
       [  \
-	 OVS_WAIT_WHILE([ovs-appctl netdev-dummy/conn-state dummy_port \
+         OVS_WAIT_WHILE([ovs-appctl netdev-dummy/conn-state dummy_port \
                   | grep 'unknown\|disconnected'])])])
 
 
diff --git a/tests/ofproto.at b/tests/ofproto.at
index 26a6ff698deb..9819bc577bdd 100644
--- a/tests/ofproto.at
+++ b/tests/ofproto.at
@@ -3692,10 +3692,10 @@ OFPT_PORT_STATUS (OF1.4): MOD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
     if test X"$1" = X"OFPTR_VACANCY_UP"; then shift;
         ovs-vsctl -- --id=@t1 create Flow_Table flow-limit=10 -- set bridge br0 flow_tables:1=@t1
 
-	# Turn on vacancy events, then add flows until we're full.
-	# With initial vacancy of 100% and vacancy_up of 80%, so that
-	# vacancy >= vacancy_up, this enables VACANY_DOWN events, so
-	# we get a single such message when vacancy dips below 20%.
+        # Turn on vacancy events, then add flows until we're full.
+        # With initial vacancy of 100% and vacancy_up of 80%, so that
+        # vacancy >= vacancy_up, this enables VACANY_DOWN events, so
+        # we get a single such message when vacancy dips below 20%.
         ovs-ofctl -O OpenFlow14 mod-table br0 1 vacancy:20,80
         ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=1,actions=2
         ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=2,actions=2
@@ -3713,8 +3713,8 @@ table_desc:-
    eviction=off eviction_flags=OTHER|IMPORTANCE|LIFETIME
    vacancy=on vacancy_down=20% vacancy_up=80% vacancy=10%"
         # Then delete flows until we're empty.  Sending the
-	# VACANCY_DOWN message enabled VACANCY_UP events, so we get a
-	# single such message when vacancy rises above 80%.
+        # VACANCY_DOWN message enabled VACANCY_UP events, so we get a
+        # single such message when vacancy rises above 80%.
         ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=1
         ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=2
         ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=3
@@ -3732,11 +3732,11 @@ table_desc:-
    vacancy=on vacancy_down=20% vacancy_up=80% vacancy=90%"
 
         # Now approach vacancy from the other direction.  First
-	# disable vacancy events.  With initial vacancy of 70%, so
-	# that vacancy < vacancy_up, this enables VACANCY_UP events.
-	# That means that filling up the table generates no message,
-	# but deleting all the flows generates VACANCY_UP at the point
-	# vacancy rises above 80%.
+        # disable vacancy events.  With initial vacancy of 70%, so
+        # that vacancy < vacancy_up, this enables VACANCY_UP events.
+        # That means that filling up the table generates no message,
+        # but deleting all the flows generates VACANCY_UP at the point
+        # vacancy rises above 80%.
         ovs-ofctl -O OpenFlow14 mod-table br0 1 novacancy
         ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=1,actions=2
         ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=2,actions=2
@@ -4924,11 +4924,11 @@ add_of_ports br0 1 2 3
 
 set_and_check_specific_ofports () {
     ovs-vsctl set Interface p1 ofport_request="$1" -- \
-	      set Interface p2 ofport_request="$2" -- \
-	      set Interface p3 ofport_request="$3"
+              set Interface p2 ofport_request="$2" -- \
+              set Interface p3 ofport_request="$3"
     ofports=`ovs-vsctl get Interface p1 ofport -- \
-		       get Interface p2 ofport -- \
-		       get Interface p3 ofport`
+                       get Interface p2 ofport -- \
+                       get Interface p3 ofport`
     AT_CHECK_UNQUOTED([echo $ofports], [0], [$1 $2 $3
 ])
 }
@@ -4936,8 +4936,8 @@ for pre in      '1 2 3' '1 3 2' '2 1 3' '2 3 1' '3 1 2' '3 2 1'; do
     for post in '1 2 3' '1 3 2' '2 1 3' '2 3 1' '3 1 2' '3 2 1'; do
         echo -----------------------------------------------------------
         echo "Check changing port numbers from $pre to $post"
-	set_and_check_specific_ofports $pre
-	set_and_check_specific_ofports $post
+        set_and_check_specific_ofports $pre
+        set_and_check_specific_ofports $post
     done
 done
 
@@ -4945,7 +4945,7 @@ ovs-vsctl del-port p3
 
 set_and_check_poorly_specified_ofports () {
     ovs-vsctl set Interface p1 ofport_request="$1" -- \
-	      set Interface p2 ofport_request="$2"
+              set Interface p2 ofport_request="$2"
     p1=`ovs-vsctl get Interface p1 ofport`
     p2=`ovs-vsctl get Interface p2 ofport`
     echo $p1 $p2
@@ -4953,8 +4953,8 @@ set_and_check_poorly_specified_ofports () {
     AT_CHECK([test "$p1" != "$p2"])
     if test "$1" = "$2" && test "$1" != '[[]]'; then
         # One port number must be the requested one.
-	AT_CHECK([test "$p1" = "$1" || test "$p2" = "$1"])
-	# The other port number must be different (already tested above).
+        AT_CHECK([test "$p1" = "$1" || test "$p2" = "$1"])
+        # The other port number must be different (already tested above).
     else
         AT_CHECK([test "$1" = '[[]]' || test "$p1" = "$1"])
         AT_CHECK([test "$2" = '[[]]' || test "$p2" = "$2"])
diff --git a/tests/ovn.at b/tests/ovn.at
index f12c24c17bc4..155150e02713 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -1873,10 +1873,10 @@ done
 # Prints the name of the logical switch that contains LSP.
 lsp_to_ls () {
     case $1 in dnl (
-	lp?[[12]]) echo ls1 ;; dnl (
-	lp?[[34]]) echo ls2 ;; dnl (
-	lp?5) echo ls3 ;; dnl (
-	*) AT_FAIL_IF([:]) ;;
+        lp?[[12]]) echo ls1 ;; dnl (
+        lp?[[34]]) echo ls2 ;; dnl (
+        lp?5) echo ls3 ;; dnl (
+        *) AT_FAIL_IF([:]) ;;
     esac
 }
 
@@ -1896,7 +1896,7 @@ for i in 1 2; do
                                   ofport-request=$i$j
 
         lsp_name=lp$i$j
-	ls_name=$(lsp_to_ls $lsp_name)
+        ls_name=$(lsp_to_ls $lsp_name)
 
         ovn-nbctl lsp-add $ls_name $lsp_name
         ovn-nbctl lsp-set-addresses $lsp_name f0:00:00:00:00:$i$j
@@ -6191,7 +6191,7 @@ get_final_nw_tos() {
     tos=$(echo "$flow" | sed -n 's/.*nw_tos=\([[0-9]]\{1,\}\).*/\1/p')
     case $tos in
         '') echo none ;;
-	*) echo $tos ;;
+        *) echo $tos ;;
     esac
 }
 
diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at
index f3ab3548a7fe..677eea753275 100644
--- a/tests/ovs-macros.at
+++ b/tests/ovs-macros.at
@@ -227,12 +227,12 @@ uuidfilt () {
 # Not all shells support "exec -a NAME", so test for it.
 if (exec -a myname true); then
     run_as () {
-	(exec -a "$@")
+        (exec -a "$@")
     }
 else
     run_as () {
         shift
-	(exec "$@")
+        (exec "$@")
     }
 fi
 ]
diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at
index 72e845237783..06597d7b59a9 100644
--- a/tests/ovs-ofctl.at
+++ b/tests/ovs-ofctl.at
@@ -2934,13 +2934,13 @@ AT_SETUP([tcp flags - filtering])
 OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 \
                     -- add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
 AT_DATA([flows.txt], [dnl
-	in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2  # Allow outbound web traffic bare-SYN
-	in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2  # Allow outbound web traffic with ACK bit
-	in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2  # Allow outbound web traffic with RST bit
-	in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1  # Allow inbound web traffic with ACK bit
-	in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1  # Allow inbound web traffic with RST bit
-	priority=0,in_port=1,action=drop  # Default drop outbound
-	priority=0,in_port=2,action=drop  # Default drop inbound
+        in_port=1,tcp,tp_dst=80,tcp_flags=+syn-rst-ack-fin,action=2  # Allow outbound web traffic bare-SYN
+        in_port=1,tcp,tp_dst=80,tcp_flags=+ack,action=2  # Allow outbound web traffic with ACK bit
+        in_port=1,tcp,tp_dst=80,tcp_flags=+rst,action=2  # Allow outbound web traffic with RST bit
+        in_port=2,tcp,tp_src=80,tcp_flags=+ack,action=1  # Allow inbound web traffic with ACK bit
+        in_port=2,tcp,tp_src=80,tcp_flags=+rst,action=1  # Allow inbound web traffic with RST bit
+        priority=0,in_port=1,action=drop  # Default drop outbound
+        priority=0,in_port=2,action=drop  # Default drop inbound
 ])
 
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
diff --git a/tests/ovs-router.at b/tests/ovs-router.at
index 843776257998..6dacc2954bc6 100644
--- a/tests/ovs-router.at
+++ b/tests/ovs-router.at
@@ -3,8 +3,8 @@ AT_BANNER([ovs-router])
 AT_SETUP([appctl - route/add with gateway])
 AT_KEYWORDS([ovs_router])
 OVS_VSWITCHD_START([add-port br0 p2 -- set Interface p2 type=gre \
-			options:local_ip=2.2.2.2 options:remote_ip=1.1.1.1 \
-			-- add-port br0 p1  -- set interface p1 type=dummy])
+                        options:local_ip=2.2.2.2 options:remote_ip=1.1.1.1 \
+                        -- add-port br0 p1  -- set interface p1 type=dummy])
 AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 2.2.2.2/24], [0], [OK
 ])
 AT_CHECK([ovs-appctl ovs/route/add 1.1.1.0/24 br0 2.2.2.10], [0], [OK
diff --git a/tests/ovsdb-client.at b/tests/ovsdb-client.at
index 467175f1a7eb..8d777a0275a1 100644
--- a/tests/ovsdb-client.at
+++ b/tests/ovsdb-client.at
@@ -57,8 +57,8 @@ AT_CHECK(
       ["ordinals",
        {"op": "update",
         "table": "ordinals",
-	"where": [],
-	"row": {"name": ""}}]']],
+        "where": [],
+        "row": {"name": ""}}]']],
   [0],
   [[[{"count":6}]
 ]])
@@ -138,10 +138,10 @@ dnl Use "query" for some of them, which won't have any effect.
 AT_CHECK(
   [[for txn in 'transact zero 0' \
                'query one 1' \
-	       'transact two 2' \
-	       'query three 3' \
-	       'transact four 4' \
-	       'query five 5'
+               'transact two 2' \
+               'query three 3' \
+               'transact four 4' \
+               'query five 5'
     do
       set -- $txn
       ovsdb-client $1 '
diff --git a/tests/ovsdb-cluster.at b/tests/ovsdb-cluster.at
index b23adc6a52e0..1c4149155dda 100644
--- a/tests/ovsdb-cluster.at
+++ b/tests/ovsdb-cluster.at
@@ -15,10 +15,10 @@ ovsdb_check_cluster () {
 
     on_exit 'kill `cat *.pid`'
     for i in `seq $n`; do
-	AT_CHECK([ovsdb-server -vraft -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db])
+        AT_CHECK([ovsdb-server -vraft -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db])
     done
     for i in `seq $n`; do
-	AT_CHECK([ovsdb-client --timeout=30 wait unix:s$i.ovsdb $schema connected])
+        AT_CHECK([ovsdb-client --timeout=30 wait unix:s$i.ovsdb $schema connected])
     done
 
     for txn
@@ -28,7 +28,7 @@ ovsdb_check_cluster () {
     done
     AT_CHECK_UNQUOTED([uuidfilt output], [0], [$output])
     for i in `seq $n`; do
-	OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid])
+        OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid])
     done
 
     AT_CHECK([ovsdb-tool check-cluster s*.db])
@@ -67,8 +67,8 @@ AT_BANNER([OVSDB - cluster tests])
 # Torture test.
 OVS_START_SHELL_HELPERS
 ovsdb_torture_test () {
-    local n=$1			# Number of cluster members
-    local victim=$2		# Cluster member to kill or remove
+    local n=$1                  # Number of cluster members
+    local victim=$2             # Cluster member to kill or remove
     local variant=$3            # 'kill' and restart or 'remove' and add
     cp $top_srcdir/ovn/ovn-sb.ovsschema schema
     schema=`ovsdb-tool schema-name schema`
@@ -78,44 +78,44 @@ ovsdb|WARN|schema: changed 2 columns in 'OVN_Southbound' database from ephemeral
 
     join_cluster() {
         local i=$1
-	others=
-	for j in `seq 1 $n`; do
-	    if test $i != $j; then
-	        others="$others unix:s$j.raft"
+        others=
+        for j in `seq 1 $n`; do
+            if test $i != $j; then
+                others="$others unix:s$j.raft"
             fi
-	done
-	AT_CHECK([ovsdb-tool join-cluster s$i.db $schema unix:s$i.raft $others])
+        done
+        AT_CHECK([ovsdb-tool join-cluster s$i.db $schema unix:s$i.raft $others])
     }
 
     start_server() {
         local i=$1
-	printf "\ns$i: starting\n"
-	AT_CHECK([ovsdb-server -vjsonrpc -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db])
+        printf "\ns$i: starting\n"
+        AT_CHECK([ovsdb-server -vjsonrpc -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db])
     }
     stop_server() {
         local i=$1
-	printf "\ns$i: stopping\n"
+        printf "\ns$i: stopping\n"
         OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid])
     }
     connect_server() {
         local i=$1
-	printf "\ns$i: waiting to connect to storage\n"
-	AT_CHECK([ovsdb-client --timeout=30 -vfile -vsyslog:off -vvlog:off --log-file=connect$i.log wait unix:s$i.ovsdb $schema connected])
+        printf "\ns$i: waiting to connect to storage\n"
+        AT_CHECK([ovsdb-client --timeout=30 -vfile -vsyslog:off -vvlog:off --log-file=connect$i.log wait unix:s$i.ovsdb $schema connected])
     }
     remove_server() {
         local i=$1
-	printf "\ns$i: removing from cluster\n"
-	AT_CHECK([ovs-appctl --timeout=30 -t "`pwd`"/s$i cluster/leave OVN_Southbound])
-	printf "\ns$i: waiting for removal to complete\n"
-	AT_CHECK([ovsdb-client --timeout=30 -vfile -vsyslog:off -vvlog:off --log-file=remove$i.log wait unix:s$i.ovsdb $schema removed])
-	stop_server $victim
+        printf "\ns$i: removing from cluster\n"
+        AT_CHECK([ovs-appctl --timeout=30 -t "`pwd`"/s$i cluster/leave OVN_Southbound])
+        printf "\ns$i: waiting for removal to complete\n"
+        AT_CHECK([ovsdb-client --timeout=30 -vfile -vsyslog:off -vvlog:off --log-file=remove$i.log wait unix:s$i.ovsdb $schema removed])
+        stop_server $victim
     }
     add_server() {
         local i=$1
-	rm s$i.db
+        rm s$i.db
         join_cluster $i
-	start_server $i
-	connect_server $i
+        start_server $i
+        connect_server $i
     }
 
     cid=`ovsdb-tool db-cid s1.db`
@@ -134,16 +134,16 @@ ovsdb|WARN|schema: changed 2 columns in 'OVN_Southbound' database from ephemeral
     n1=10 n2=5
     echo "starting $n1*$n2 ovn-sbctl processes..."
     for i in $(seq 0 $(expr $n1 - 1) ); do
-	(for j in $(seq $n2); do
+        (for j in $(seq $n2); do
              : > $i-$j.running
-	     run_as "ovn-sbctl($i-$j)" ovn-sbctl "-vPATTERN:console:ovn-sbctl($i-$j)|%D{%H:%M:%S}|%05N|%c|%p|%m" --log-file=$i-$j.log -vfile -vsyslog:off -vtimeval:off --timeout=120 --no-leader-only add SB_Global . external_ids $i-$j=$i-$j
-	     status=$?
-	     if test $status != 0; then
-	         echo "$i-$j exited with status $status" > $i-$j:$status
+             run_as "ovn-sbctl($i-$j)" ovn-sbctl "-vPATTERN:console:ovn-sbctl($i-$j)|%D{%H:%M:%S}|%05N|%c|%p|%m" --log-file=$i-$j.log -vfile -vsyslog:off -vtimeval:off --timeout=120 --no-leader-only add SB_Global . external_ids $i-$j=$i-$j
+             status=$?
+             if test $status != 0; then
+                 echo "$i-$j exited with status $status" > $i-$j:$status
              fi
              rm $i-$j.running
-	 done
-	 : > $i.done)&
+         done
+         : > $i.done)&
     done
     echo "...done"
     sleep 2
@@ -153,44 +153,44 @@ ovsdb|WARN|schema: changed 2 columns in 'OVN_Southbound' database from ephemeral
     i=0
     (while :; do echo; sleep 1; done) | while read; do
         printf "t=%2d s:" $i
-	done=0
+        done=0
         for j in $(seq 0 $(expr $n1 - 1)); do
-	    if test -f $j.done; then
-	        printf " $j"
-		done=$(expr $done + 1)
+            if test -f $j.done; then
+                printf " $j"
+                done=$(expr $done + 1)
             fi
-	done
-	printf '\n'
-	if test $done = $n1; then
-	    break
+        done
+        printf '\n'
+        if test $done = $n1; then
+            break
         fi
 
         case $phase in # (
-	0)
+        0)
             if test $done -ge $(expr $n1 / 4); then
-	        if test $variant = kill; then
-		    stop_server $victim
-		else
-		    remove_server $victim
-		fi
-		phase=1
-		next=$(expr $i + 2)
+                if test $variant = kill; then
+                    stop_server $victim
+                else
+                    remove_server $victim
+                fi
+                phase=1
+                next=$(expr $i + 2)
             fi
-	    ;; # (
+            ;; # (
         1)
-	    if test $i -ge $next; then
-	        if test $variant = kill; then
-		    start_server $victim
-		    connect_server $victim
-		else
-		    add_server $victim
-		fi
-		phase=2
-	    fi
-	    ;;
-	esac
+            if test $i -ge $next; then
+                if test $variant = kill; then
+                    start_server $victim
+                    connect_server $victim
+                else
+                    add_server $victim
+                fi
+                phase=2
+            fi
+            ;;
+        esac
 
-	i=$(expr $i + 1)
+        i=$(expr $i + 1)
     done
     echo "...done"
     AT_CHECK([if test $phase != 2; then exit 77; fi])
@@ -203,9 +203,9 @@ ovsdb|WARN|schema: changed 2 columns in 'OVN_Southbound' database from ephemeral
     AT_CHECK([ovn-sbctl --timeout=30 --log-file=finalize.log -vtimeval:off -vfile -vsyslog:off --bare get SB_Global . external-ids | sed 's/, /\n/g; s/[[{}""]]//g;' | sort], [0], [expout])
 
     for i in `seq $n`; do
-	if test $i != $victim || test $phase != 1; then
-	    stop_server $i
-	fi
+        if test $i != $victim || test $phase != 1; then
+            stop_server $i
+        fi
     done
 
     # We ignore stdout because non-fatal warnings get printed there.
diff --git a/tests/ovsdb-condition.at b/tests/ovsdb-condition.at
index e7182c558aff..4b613e5f62bf 100644
--- a/tests/ovsdb-condition.at
+++ b/tests/ovsdb-condition.at
@@ -12,7 +12,7 @@ OVSDB_CHECK_POSITIVE([conditions on scalars],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[["i", "==", 0]]' \
     '[["i", "!=", 1]]' \
@@ -79,7 +79,7 @@ AT_CHECK([[test-ovsdb parse-conditions \
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[["b", ">", true]]' \
     '[["b", ">=", false]]' \
@@ -115,7 +115,7 @@ OVSDB_CHECK_POSITIVE([conditions on sets],
         {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}},
          "r": {"type": {"key": "real", "min": 0, "max": "unlimited"}},
          "b": {"type": {"key": "boolean", "min": 0, "max": "unlimited"}},
-	 "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
+         "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
          "u": {"type": {"key": "uuid", "min": 0, "max": "unlimited"}}}}' \
     '[["i", "==", ["set", []]]]' \
     '[["i", "!=", ["set", [1]]]]' \
diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
index 9caa02aad845..cff08b183378 100644
--- a/tests/ovsdb-idl.at
+++ b/tests/ovsdb-idl.at
@@ -844,7 +844,7 @@ AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl uni
        "table": "link1",
        "where": [],
        "row": {"k": ["uuid", "#0#"]}}]']],
-	 [0], [stdout], [stderr])
+         [0], [stdout], [stderr])
 AT_CHECK([sort stdout | uuidfilt], [0],
     [[000: empty
 001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]}
diff --git a/tests/ovsdb-log.at b/tests/ovsdb-log.at
index 4577558dfcd4..00a244ba4adb 100644
--- a/tests/ovsdb-log.at
+++ b/tests/ovsdb-log.at
@@ -85,14 +85,14 @@ for option in '' --no-rename-open-files; do
     rm -f file
     AT_CHECK(
       [[test-ovsdb $option log-io file create \
-	  'write:{"x":0}' \
-	  'replace_start' \
-	  'new-write:{"x":1}' \
-	  'new-write:{"x":2}' \
-	  'old-write:{"x":4}' \
-	  'replace_commit' \
-	  'read' \
-	  'write:{"x":3}']], [0],
+          'write:{"x":0}' \
+          'replace_start' \
+          'new-write:{"x":1}' \
+          'new-write:{"x":2}' \
+          'old-write:{"x":4}' \
+          'replace_commit' \
+          'read' \
+          'write:{"x":3}']], [0],
       [[file: open successful
 file: write:{"x":0} successful
 file: replace_start successful
@@ -122,14 +122,14 @@ for option in '' --no-rename-open-files; do
     rm -f file
     AT_CHECK(
       [[test-ovsdb $option log-io file create \
-	  'write:{"x":0}' \
-	  'replace_start' \
-	  'new-write:{"x":1}' \
-	  'new-write:{"x":2}' \
-	  'old-write:{"x":4}' \
-	  'replace_abort' \
-	  'read' \
-	  'write:{"x":3}']], [0],
+          'write:{"x":0}' \
+          'replace_start' \
+          'new-write:{"x":1}' \
+          'new-write:{"x":2}' \
+          'old-write:{"x":4}' \
+          'replace_abort' \
+          'read' \
+          'write:{"x":3}']], [0],
       [[file: open successful
 file: write:{"x":0} successful
 file: replace_start successful
diff --git a/tests/ovsdb-monitor.at b/tests/ovsdb-monitor.at
index c06dbb27231f..5458d422e240 100644
--- a/tests/ovsdb-monitor.at
+++ b/tests/ovsdb-monitor.at
@@ -9,20 +9,20 @@ ovsdb_check_monitor () {
     $schema_func > schema
     AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore])
     while test "$1" != "--"; do
-	AT_CHECK([ovsdb-tool transact db "$1"], [0], [ignore], [ignore])
-	shift
+        AT_CHECK([ovsdb-tool transact db "$1"], [0], [ignore], [ignore])
+        shift
     done
     shift
     AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket --log-file db > ovsdb-server.stdout 2> ovsdb-server.stderr],
-	     [0], [], [])
+             [0], [], [])
     on_exit 'kill `cat ovsdb-server.pid`'
     if test "$IS_WIN32" = "yes"; then
       AT_CHECK([ovsdb-client -vjsonrpc --pidfile --log-file -d json monitor --format=csv unix:socket $db $table $columns > output 2> ovsdb-client.stderr &],
-	       [0], [ignore], [ignore])
+               [0], [ignore], [ignore])
       sleep 1
     else
       AT_CHECK([ovsdb-client -vjsonrpc --detach --pidfile --log-file -d json monitor --format=csv unix:socket $db $table $columns > output 2> ovsdb-client.stderr],
-	     [0], [ignore], [ignore])
+             [0], [ignore], [ignore])
     fi
     on_exit 'kill `cat ovsdb-client.pid`'
     for txn in ${1+"$@"} '[["'$db'"]]'; do
@@ -92,7 +92,7 @@ m4_define([OVSDB_CHECK_MONITOR_COND],
    AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket --log-file="`pwd`"/ovsdb-server-log db >/dev/null 2>&1])
    on_exit 'kill `cat ovsdb-server.pid`'
    AT_CHECK([ovsdb-client -vjsonrpc --pidfile --detach --no-chdir -d json monitor-cond --format=csv unix:socket $4 '[$8]' $5 $9 > output],
-	  [0], [ignore], [ignore])
+          [0], [ignore], [ignore])
    on_exit 'kill `cat ovsdb-client.pid`'
    for txn in m4_foreach([txn], [$6], ['txn' ]); do
      AT_CHECK([ovsdb-client transact unix:socket "$txn"], [0],
diff --git a/tests/ovsdb-mutation.at b/tests/ovsdb-mutation.at
index fc898b56d92a..2981c5393c01 100644
--- a/tests/ovsdb-mutation.at
+++ b/tests/ovsdb-mutation.at
@@ -12,7 +12,7 @@ OVSDB_CHECK_POSITIVE([mutations on scalars],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[["i", "+=", 0]]' \
     '[["i", "-=", 1]]' \
@@ -41,7 +41,7 @@ AT_CHECK([[test-ovsdb parse-mutations \
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[["i", "xxx", 1]]' \
     '[["i", "insert", 1]]' \
@@ -117,7 +117,7 @@ OVSDB_CHECK_POSITIVE([mutations on sets],
         {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}},
          "r": {"type": {"key": "real", "min": 0, "max": "unlimited"}},
          "b": {"type": {"key": "boolean", "min": 0, "max": "unlimited"}},
-	 "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
+         "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
          "u": {"type": {"key": "uuid", "min": 0, "max": "unlimited"}}}}' \
     '[["i", "+=", 1]]' \
     '[["i", "-=", 2]]' \
diff --git a/tests/ovsdb-query.at b/tests/ovsdb-query.at
index 2c2b648d80da..0814fda2ab75 100644
--- a/tests/ovsdb-query.at
+++ b/tests/ovsdb-query.at
@@ -6,7 +6,7 @@ OVSDB_CHECK_POSITIVE([queries on scalars],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[{"i": 0,
        "r": 0.5,
@@ -354,7 +354,7 @@ OVSDB_CHECK_POSITIVE([UUID-distinct queries on scalars],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[{"i": 0,
        "r": 0.5,
@@ -447,7 +447,7 @@ OVSDB_CHECK_POSITIVE([Boolean-distinct queries on scalars],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
     '[{"i": 0,
        "r": 0.5,
diff --git a/tests/ovsdb-row.at b/tests/ovsdb-row.at
index 0b2ae77b1a41..891f95329430 100644
--- a/tests/ovsdb-row.at
+++ b/tests/ovsdb-row.at
@@ -116,7 +116,7 @@ OVSDB_CHECK_POSITIVE([row hashing (scalars)],
         {"i": {"type": "integer"},
          "r": {"type": "real"},
          "b": {"type": "boolean"},
-	 "s": {"type": "string"},
+         "s": {"type": "string"},
          "u": {"type": "uuid"}}}' \
      '["null", {}]' \
      '["i1", {"i": 1}]' \
@@ -185,7 +185,7 @@ OVSDB_CHECK_POSITIVE([row hashing (sets)],
         {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}},
          "r": {"type": {"key": "real", "min": 0, "max": "unlimited"}},
          "b": {"type": {"key": "boolean", "min": 0, "max": "unlimited"}},
-	 "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
+         "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
          "u": {"type": {"key": "uuid", "min": 0, "max": "unlimited"}}}}' \
     '["null0", {"i": ["set", []]}]' \
     '["i0", {"i": ["set", [0]]}]' \
@@ -241,7 +241,7 @@ OVSDB_CHECK_POSITIVE([row hashing (maps)],
                          "min": 0, "max": "unlimited"}},
          "bb": {"type": {"key": "boolean", "value": "boolean",
                          "min": 0, "max": "unlimited"}},
-	 "ss": {"type": {"key": "string", "value": "string",
+         "ss": {"type": {"key": "string", "value": "string",
                          "min": 0, "max": "unlimited"}}}}' \
     '["null", {}]' \
     '["ii0", {"ii": ["map", [[0, 0]]]}]' \
diff --git a/tests/ovsdb-schema.at b/tests/ovsdb-schema.at
index 9957ebdd4d35..d606d718d08b 100644
--- a/tests/ovsdb-schema.at
+++ b/tests/ovsdb-schema.at
@@ -60,17 +60,17 @@ dnl Immutable weak references are forced to be mutable.
 OVSDB_CHECK_POSITIVE_CPY([schema with immutable weak references],
   [[parse-schema \
       '{"name": "mydb",
-	"version": "4.2.1",
-	"tables": {
-	  "a": {
-	    "columns": {
-	      "x": {
-		"type": {
-		  "key": {
-		    "type": "uuid",
-		    "refTable": "a",
-		    "refType": "weak"}},
-		"mutable": false}}}}}']],
+        "version": "4.2.1",
+        "tables": {
+          "a": {
+            "columns": {
+              "x": {
+                "type": {
+                  "key": {
+                    "type": "uuid",
+                    "refTable": "a",
+                    "refType": "weak"}},
+                "mutable": false}}}}}']],
   [[{"name":"mydb","tables":{"a":{"columns":{"x":{"type":{"key":{"refTable":"a","refType":"weak","type":"uuid"}}}}}},"version":"4.2.1"}]])
 
 dnl Schemas without version numbers are accepted for backward
diff --git a/tests/ovsdb-server.at b/tests/ovsdb-server.at
index cbbccab5e5db..edffae1bc075 100644
--- a/tests/ovsdb-server.at
+++ b/tests/ovsdb-server.at
@@ -532,7 +532,7 @@ AT_SKIP_IF([test "$HAVE_OPENSSL" = no])
 # msys on Windows does not convert the path style automatically.
 # So, do that forcefully with a 'pwd -W' (called through pwd() function).
 PKIDIR="$(cd $abs_top_builddir/tests && pwd)"
-AT_SKIP_IF([expr "$PKIDIR" : ".*[ 	'\"
+AT_SKIP_IF([expr "$PKIDIR" : ".*[       '\"
 \\]"])
 AT_DATA([schema],
   [[{"name": "mydb",
@@ -657,9 +657,9 @@ ovsdb_check_online_compaction() {
     dnl than replacing the symlinks with regular files.
     mkdir dir
     if test "$IS_WIN32" = "no"; then
-	ln -s dir/db db
-	ln -s dir/.db.~lock~ .db.~lock~
-	AT_SKIP_IF([test ! -h db || test ! -h .db.~lock~])
+        ln -s dir/db db
+        ln -s dir/.db.~lock~ .db.~lock~
+        AT_SKIP_IF([test ! -h db || test ! -h .db.~lock~])
     fi
     AT_CHECK([if test $model = standalone; then
                   ovsdb-tool create db schema
@@ -673,33 +673,33 @@ ovsdb_check_online_compaction() {
     dnl Do a bunch of random transactions that put crap in the database log.
     AT_CHECK(
       [[for pair in 'zero 0' 'one 1' 'two 2' 'three 3' 'four 4' 'five 5'; do
-	  set -- $pair
-	  ovsdb-client transact unix:socket '
-	    ["ordinals",
-	     {"op": "insert",
-	      "table": "ordinals",
-	      "row": {"name": "'$1'", "number": '$2'}},
-	     {"op": "comment",
-	      "comment": "add row for '"$pair"'"}]'
-	  ovsdb-client transact unix:socket '
-	    ["ordinals",
-	     {"op": "delete",
-	      "table": "ordinals",
-	      "where": [["number", "==", '$2']]},
-	     {"op": "comment",
-	      "comment": "delete row for '"$2"'"}]'
-	  ovsdb-client transact unix:socket '
-	    ["ordinals",
-	     {"op": "insert",
-	      "table": "ordinals",
-	      "row": {"name": "'$1'", "number": '$2'}},
-	     {"op": "comment",
-	      "comment": "add back row for '"$pair"'"}]'
-	done]],
+          set -- $pair
+          ovsdb-client transact unix:socket '
+            ["ordinals",
+             {"op": "insert",
+              "table": "ordinals",
+              "row": {"name": "'$1'", "number": '$2'}},
+             {"op": "comment",
+              "comment": "add row for '"$pair"'"}]'
+          ovsdb-client transact unix:socket '
+            ["ordinals",
+             {"op": "delete",
+              "table": "ordinals",
+              "where": [["number", "==", '$2']]},
+             {"op": "comment",
+              "comment": "delete row for '"$2"'"}]'
+          ovsdb-client transact unix:socket '
+            ["ordinals",
+             {"op": "insert",
+              "table": "ordinals",
+              "row": {"name": "'$1'", "number": '$2'}},
+             {"op": "comment",
+              "comment": "add back row for '"$pair"'"}]'
+        done]],
       [0], [stdout])
     if test $model = standalone; then
-	dnl Check that all the crap is in fact in the database log.
-	AT_CHECK([[uuidfilt db | grep -v ^OVSDB | sed 's/"_date":[0-9]*/"_date":0/' | ovstest test-json --multiple -]], [0],
+        dnl Check that all the crap is in fact in the database log.
+        AT_CHECK([[uuidfilt db | grep -v ^OVSDB | sed 's/"_date":[0-9]*/"_date":0/' | ovstest test-json --multiple -]], [0],
 [[{"cksum":"12345678 9","name":"ordinals","tables":{"ordinals":{"columns":{"name":{"type":"string"},"number":{"type":"integer"}},"indexes":[["number"]]}},"version":"5.1.3"}
 {"_comment":"add row for zero 0","_date":0,"ordinals":{"<0>":{"name":"zero"}}}
 {"_comment":"delete row for 0","_date":0,"ordinals":{"<0>":null}}
@@ -722,7 +722,7 @@ ovsdb_check_online_compaction() {
 ]])
     else
         dnl Check that at least there's a lot of transactions.
-	AT_CHECK([test `wc -l < db` -gt 50])
+        AT_CHECK([test `wc -l < db` -gt 50])
     fi
     dnl Dump out and check the actual database contents.
     AT_CHECK([ovsdb-client dump unix:socket ordinals], [0], [stdout])
@@ -749,10 +749,10 @@ ovs-appctl: ovsdb-server: server returned an error
     dnl Make sure that "db" is still a symlink to dir/db instead of getting
     dnl replaced by a regular file, ditto for .db.~lock~.
     if test "$IS_WIN32" = "no"; then
-	AT_CHECK([test -h db])
-	AT_CHECK([test -h .db.~lock~])
-	AT_CHECK([test -f dir/db])
-	AT_CHECK([test -f dir/.db.~lock~])
+        AT_CHECK([test -h db])
+        AT_CHECK([test -h .db.~lock~])
+        AT_CHECK([test -f dir/db])
+        AT_CHECK([test -f dir/.db.~lock~])
     fi
 
     # We can't fully re-check the contents of the database log, because the
@@ -781,10 +781,10 @@ _uuid                                name  number
     dnl Now do some more transactions.
     AT_CHECK(
       [[ovsdb-client transact unix:socket '
-	 ["ordinals",
-	  {"op": "delete",
-	   "table": "ordinals",
-	   "where": [["number", "<", 3]]}]']],
+         ["ordinals",
+          {"op": "delete",
+           "table": "ordinals",
+           "where": [["number", "<", 3]]}]']],
       [0], [[[{"count":3}]
 ]], [ignore])
 
@@ -838,17 +838,17 @@ ovsdb_check_online_conversion() {
       [[{"name": "ordinals",
      "tables": {
        "ordinals": {
-	 "columns": {
-	   "number": {"type": "integer"}}}}}
+         "columns": {
+           "number": {"type": "integer"}}}}}
 ]])
     dnl Make sure that "ovsdb-tool create" works with a dangling symlink for
     dnl the database and the lockfile, creating the target of each symlink
     dnl rather than replacing the symlinks with regular files.
     mkdir dir
     if test "$IS_WIN32" = "no"; then
-	ln -s dir/db db
-	ln -s dir/.db.~lock~ .db.~lock~
-	AT_SKIP_IF([test ! -h db || test ! -h .db.~lock~])
+        ln -s dir/db db
+        ln -s dir/.db.~lock~ .db.~lock~
+        AT_SKIP_IF([test ! -h db || test ! -h .db.~lock~])
     fi
     AT_CHECK([if test $model = standalone; then
                   ovsdb-tool create db schema
@@ -863,15 +863,15 @@ ovsdb_check_online_conversion() {
     dnl Put some data in the database.
     AT_CHECK(
       [[for pair in 'zero 0' 'one 1' 'two 2' 'three 3' 'four 4' 'five 5'; do
-	  set -- $pair
-	  ovsdb-client transact '
-	    ["ordinals",
-	     {"op": "insert",
-	      "table": "ordinals",
-	      "row": {"name": "'$1'", "number": '$2'}},
-	     {"op": "comment",
-	      "comment": "add row for '"$pair"'"}]'
-	done | uuidfilt]], [0],
+          set -- $pair
+          ovsdb-client transact '
+            ["ordinals",
+             {"op": "insert",
+              "table": "ordinals",
+              "row": {"name": "'$1'", "number": '$2'}},
+             {"op": "comment",
+              "comment": "add row for '"$pair"'"}]'
+        done | uuidfilt]], [0],
     [[[{"uuid":["uuid","<0>"]},{}]
 [{"uuid":["uuid","<1>"]},{}]
 [{"uuid":["uuid","<2>"]},{}]
@@ -913,12 +913,12 @@ ovsdb_check_online_conversion() {
     dnl Start two long-running transactions (triggers) on the 'ordinals' db,
     dnl one that is database change aware and one that is not.
     ordinals_txn='[["ordinals",
-		    {"op": "wait",
-		     "table": "ordinals",
-		     "where": [["name", "==", "seven"]],
-		     "columns": ["name", "number"],
-		     "rows": [],
-		     "until": "!="}]]'
+                    {"op": "wait",
+                     "table": "ordinals",
+                     "where": [["name", "==", "seven"]],
+                     "columns": ["name", "number"],
+                     "rows": [],
+                     "until": "!="}]]'
     AT_CHECK([ovsdb-client -vfile -vvlog:off --detach --pidfile=trigger-ordinals-aware.pid --log-file=trigger-ordinals-aware.log --db-change-aware transact "$ordinals_txn"  > trigger-ordinals-aware.stdout 2> trigger-ordinals-aware.stderr])
     AT_CAPTURE_FILE([trigger-ordinals-aware.stdout])
     AT_CAPTURE_FILE([trigger-ordinals-aware.log])
@@ -932,12 +932,12 @@ ovsdb_check_online_conversion() {
     dnl Start two long-running transactions (triggers) on the _Server db,
     dnl one that is database change aware and one that is not.
     server_txn='[["_Server",
-		  {"op": "wait",
-		   "table": "Database",
-		   "where": [["name", "==", "xyzzy"]],
-		   "columns": ["name"],
-		   "rows": [],
-		   "until": "!="}]]'
+                  {"op": "wait",
+                   "table": "Database",
+                   "where": [["name", "==", "xyzzy"]],
+                   "columns": ["name"],
+                   "rows": [],
+                   "until": "!="}]]'
     AT_CHECK([ovsdb-client -vfile -vvlog:off --detach --pidfile=trigger-server-aware.pid --log-file=trigger-server-aware.log --db-change-aware transact "$server_txn"  > trigger-server-aware.stdout 2> trigger-server-aware.stderr])
     AT_CAPTURE_FILE([trigger-server-aware.stdout])
     AT_CAPTURE_FILE([trigger-server-aware.log])
@@ -974,9 +974,9 @@ _uuid                                name  number
     dnl Verify that the "ordinals" monitors behaved as they should have.
     dnl Both should have exited, for different reasons.
     for x in aware unaware; do
-	echo $x
-	OVS_WAIT_WHILE([test -e monitor-ordinals-$x.pid])
-	AT_CHECK([sort -k 3 monitor-ordinals-$x.stdout | uuidfilt], [0],
+        echo $x
+        OVS_WAIT_WHILE([test -e monitor-ordinals-$x.pid])
+        AT_CHECK([sort -k 3 monitor-ordinals-$x.stdout | uuidfilt], [0],
     [<0> initial 0 zero
 <1> initial 1 one
 <2> initial 2 two
@@ -993,7 +993,7 @@ _uuid                                name  number
     dnl Verify that the _Server monitors behaved as they should have.
     dnl The db-aware monitor should still be running, but not the unaware one.
     for x in aware unaware; do
-	AT_CHECK([sort -k 3 monitor-server-$x.stdout | uuidfilt], [0],
+        AT_CHECK([sort -k 3 monitor-server-$x.stdout | uuidfilt], [0],
     [<0> initial _Server
 <1> initial ordinals
 ])
@@ -1006,8 +1006,8 @@ _uuid                                name  number
     dnl Verify that the "ordinals" triggers behaved as they should have:
     dnl Both should have exited, for different reasons.
     for x in unaware aware; do
-	OVS_WAIT_WHILE([test -e trigger-ordinals-$x.pid])
-	AT_CHECK([cat trigger-ordinals-$x.stdout])
+        OVS_WAIT_WHILE([test -e trigger-ordinals-$x.pid])
+        AT_CHECK([cat trigger-ordinals-$x.stdout])
     done
     AT_CHECK([cat trigger-ordinals-unaware.stderr], [0], [ovsdb-client: transaction failed (End of file)
 ])
@@ -1017,7 +1017,7 @@ _uuid                                name  number
     dnl Verify that the _Server triggers behaved as they should have:
     dnl The db-aware trigger should still be waiting, but not the unaware one.
     for x in aware unaware; do
-	AT_CHECK([cat trigger-server-$x.stdout])
+        AT_CHECK([cat trigger-server-$x.stdout])
     done
     OVS_WAIT_WHILE([test -e trigger-server-unaware.pid])
     AT_CHECK([sed 's/.*: //' trigger-ordinals-unaware.stderr], [0], [transaction failed (End of file)
@@ -1026,10 +1026,10 @@ _uuid                                name  number
 
     AT_CAPTURE_FILE([db])
     if test $model = standalone; then
-	dnl We can't fully re-check the contents of the database log, because the
-	dnl order of the records is not predictable, but there should only be 4 lines
-	dnl in it now.
-	AT_CHECK([test `wc -l < db` -eq 4])
+        dnl We can't fully re-check the contents of the database log, because the
+        dnl order of the records is not predictable, but there should only be 4 lines
+        dnl in it now.
+        AT_CHECK([test `wc -l < db` -eq 4])
     fi
     dnl Check that the dumped data is the same except for the removed column:
     AT_CHECK([ovsdb-client dump unix:db.sock ordinals | uuidfilt], [0], [dnl
@@ -1048,12 +1048,12 @@ _uuid                                number
     dnl is as expected.
     AT_CHECK(
       [[ovsdb-client transact '
-	 ["ordinals",
-	  {"op": "insert",
-	   "table": "ordinals",
-	   "row": {"number": 6}},
-	  {"op": "comment",
-	   "comment": "add row for 6"}]' | uuidfilt]], [0],
+         ["ordinals",
+          {"op": "insert",
+           "table": "ordinals",
+           "row": {"number": 6}},
+          {"op": "comment",
+           "comment": "add row for 6"}]' | uuidfilt]], [0],
       [[[{"uuid":["uuid","<0>"]},{}]
 ]])
     if test $model = standalone; then
@@ -1092,10 +1092,10 @@ _uuid                                number
     dnl Make sure that "db" is still a symlink to dir/db instead of getting
     dnl replaced by a regular file, ditto for .db.~lock~.
     if test "$IS_WIN32" = "no"; then
-	AT_CHECK([test -h db])
-	AT_CHECK([test -h .db.~lock~])
-	AT_CHECK([test -f dir/db])
-	AT_CHECK([test -f dir/.db.~lock~])
+        AT_CHECK([test -h db])
+        AT_CHECK([test -h .db.~lock~])
+        AT_CHECK([test -f dir/db])
+        AT_CHECK([test -f dir/.db.~lock~])
     fi
 
     OVS_APP_EXIT_AND_WAIT([ovsdb-server])
diff --git a/tests/ovsdb-tool.at b/tests/ovsdb-tool.at
index a27a239ea2b3..359d1f063ee1 100644
--- a/tests/ovsdb-tool.at
+++ b/tests/ovsdb-tool.at
@@ -118,9 +118,9 @@ AT_CHECK([[uuidfilt db | grep -v ^OVSDB | sed 's/"_date":[0-9]*/"_date":0/' | ov
 dnl Dump out and check the actual database contents.
 on_exit 'kill `cat ovsdb-server.pid`'
 AT_CHECK([[ovsdb-server --detach --pidfile --no-chdir --remote=punix:socket db]],
-	 [0], [stdout], [ignore])
+         [0], [stdout], [ignore])
 AT_CHECK([[ovsdb-client dump unix:socket ordinals]],
-	 [0], [stdout], [ignore])
+         [0], [stdout], [ignore])
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
 
 AT_CHECK([uuidfilt stdout], [0], [dnl
@@ -151,9 +151,9 @@ AT_CAPTURE_FILE([db])
 AT_CHECK([test `wc -l < db` -eq 4])
 dnl And check that the dumped data is the same too:
 AT_CHECK([[ovsdb-server --detach --pidfile --no-chdir --remote=punix:socket db]],
-	 [0], [stdout], [ignore])
+         [0], [stdout], [ignore])
 AT_CHECK([[ovsdb-client dump unix:socket ordinals]],
-	 [0], [stdout], [ignore])
+         [0], [stdout], [ignore])
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
 
 AT_CHECK([uuidfilt stdout], [0], [dnl
@@ -427,12 +427,12 @@ AT_CHECK(
   [[for pair in 'zero 0' 'one 1' 'two 2' 'three 3' 'four 4' 'five 5'; do
       set -- $pair
       ovsdb-tool transact db1 '
-	["ordinals",
-	 {"op": "insert",
-	  "table": "ordinals",
-	  "row": {"name": "'$1'", "number": '$2'}},
-	 {"op": "comment",
-	  "comment": "add row for '"$pair"'"}]'
+        ["ordinals",
+         {"op": "insert",
+          "table": "ordinals",
+          "row": {"name": "'$1'", "number": '$2'}},
+         {"op": "comment",
+          "comment": "add row for '"$pair"'"}]'
     done | uuidfilt]], [0],
 [[[{"uuid":["uuid","<0>"]},{}]
 [{"uuid":["uuid","<1>"]},{}]
diff --git a/tests/pmd.at b/tests/pmd.at
index 0c8829f49fa9..f3fac6385b62 100644
--- a/tests/pmd.at
+++ b/tests/pmd.at
@@ -6,7 +6,7 @@ m4_divert_push([PREPARE_TESTS])
 # of every rxq (one per line) in the form:
 # port_name rxq_id numa_id core_id
 parse_pmd_rxq_show () {
-    awk '/pmd thread/ {numa=$4; core=substr($6, 1, length($6) - 1)} /\tport:/ {print  $2, $4, numa, core}' | sort
+    awk '/pmd thread/ {numa=$4; core=substr($6, 1, length($6) - 1)} /^  port:/ {print  $2, $4, numa, core}' | sort
 }
 
 # Given the output of `ovs-appctl dpif-netdev/pmd-rxq-show`,
@@ -72,8 +72,8 @@ CHECK_PMD_THREADS_CREATED()
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	isolated : false
-	port: p0              	queue-id:  0	pmd usage: NOT AVAIL
+  isolated : false
+  port: p0                queue-id:  0  pmd usage: NOT AVAIL
 ])
 
 AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl
@@ -103,15 +103,15 @@ dummy at ovs-dummy: hit:0 missed:0
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	isolated : false
-	port: p0              	queue-id:  0	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  1	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  2	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  3	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  4	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  5	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  6	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  7	pmd usage: NOT AVAIL
+  isolated : false
+  port: p0                queue-id:  0  pmd usage: NOT AVAIL
+  port: p0                queue-id:  1  pmd usage: NOT AVAIL
+  port: p0                queue-id:  2  pmd usage: NOT AVAIL
+  port: p0                queue-id:  3  pmd usage: NOT AVAIL
+  port: p0                queue-id:  4  pmd usage: NOT AVAIL
+  port: p0                queue-id:  5  pmd usage: NOT AVAIL
+  port: p0                queue-id:  6  pmd usage: NOT AVAIL
+  port: p0                queue-id:  7  pmd usage: NOT AVAIL
 ])
 
 OVS_VSWITCHD_STOP
@@ -134,15 +134,15 @@ dummy at ovs-dummy: hit:0 missed:0
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	isolated : false
-	port: p0              	queue-id:  0	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  1	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  2	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  3	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  4	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  5	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  6	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  7	pmd usage: NOT AVAIL
+  isolated : false
+  port: p0                queue-id:  0  pmd usage: NOT AVAIL
+  port: p0                queue-id:  1  pmd usage: NOT AVAIL
+  port: p0                queue-id:  2  pmd usage: NOT AVAIL
+  port: p0                queue-id:  3  pmd usage: NOT AVAIL
+  port: p0                queue-id:  4  pmd usage: NOT AVAIL
+  port: p0                queue-id:  5  pmd usage: NOT AVAIL
+  port: p0                queue-id:  6  pmd usage: NOT AVAIL
+  port: p0                queue-id:  7  pmd usage: NOT AVAIL
 ])
 
 TMP=$(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])
@@ -160,15 +160,15 @@ CHECK_PMD_THREADS_CREATED([1], [], [+$TMP])
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	isolated : false
-	port: p0              	queue-id:  0	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  1	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  2	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  3	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  4	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  5	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  6	pmd usage: NOT AVAIL
-	port: p0              	queue-id:  7	pmd usage: NOT AVAIL
+  isolated : false
+  port: p0                queue-id:  0  pmd usage: NOT AVAIL
+  port: p0                queue-id:  1  pmd usage: NOT AVAIL
+  port: p0                queue-id:  2  pmd usage: NOT AVAIL
+  port: p0                queue-id:  3  pmd usage: NOT AVAIL
+  port: p0                queue-id:  4  pmd usage: NOT AVAIL
+  port: p0                queue-id:  5  pmd usage: NOT AVAIL
+  port: p0                queue-id:  6  pmd usage: NOT AVAIL
+  port: p0                queue-id:  7  pmd usage: NOT AVAIL
 ])
 
 OVS_VSWITCHD_STOP
@@ -197,14 +197,14 @@ dummy at ovs-dummy: hit:0 missed:0
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 8], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	packets received: 0
-	packet recirculations: 0
-	avg. datapath passes per packet: 0.00
-	emc hits: 0
-	megaflow hits: 0
-	avg. subtable lookups per megaflow hit: 0.00
-	miss with success upcall: 0
-	miss with failed upcall: 0
+  packets received: 0
+  packet recirculations: 0
+  avg. datapath passes per packet: 0.00
+  emc hits: 0
+  megaflow hits: 0
+  avg. subtable lookups per megaflow hit: 0.00
+  miss with success upcall: 0
+  miss with failed upcall: 0
 ])
 
 ovs-appctl time/stop
@@ -227,14 +227,14 @@ recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:77,dst=50:
 
 AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 8], [0], [dnl
 pmd thread numa_id <cleared> core_id <cleared>:
-	packets received: 20
-	packet recirculations: 0
-	avg. datapath passes per packet: 1.00
-	emc hits: 19
-	megaflow hits: 0
-	avg. subtable lookups per megaflow hit: 0.00
-	miss with success upcall: 1
-	miss with failed upcall: 0
+  packets received: 20
+  packet recirculations: 0
+  avg. datapath passes per packet: 1.00
+  emc hits: 19
+  megaflow hits: 0
+  avg. subtable lookups per megaflow hit: 0.00
+  miss with success upcall: 1
+  miss with failed upcall: 0
 ])
 
 OVS_VSWITCHD_STOP
diff --git a/tests/run-oftest b/tests/run-oftest
old mode 100755
new mode 100644
index d5701d6c1976..63d07c652066
--- a/tests/run-oftest
+++ b/tests/run-oftest
@@ -69,8 +69,8 @@ run ovs-vsctl --no-wait \
     -- set bridge br0 datapath-type=dummy fail-mode=secure
 for port in p1 p2 p3 p4; do
     run ovs-vsctl --no-wait \
-	-- add-port br0 $port \
-	-- set interface $port type=dummy \
+        -- add-port br0 $port \
+        -- set interface $port type=dummy \
                                options:pstream=punix:$OVS_RUNDIR/$port
 done
 run ovs-vsctl \
@@ -84,9 +84,9 @@ cat <<EOF
 
 ----------------------------------------------------------------------
 Logs may be found under $sandbox, e.g.:
-	$sandbox/oft.log
-	$sandbox/ovs-vswitchd.log
-	$sandbox/ovsdb-server.log
+        $sandbox/oft.log
+        $sandbox/ovs-vswitchd.log
+        $sandbox/ovsdb-server.log
 ----------------------------------------------------------------------
 EOF
 
diff --git a/tests/run-ryu b/tests/run-ryu
old mode 100755
new mode 100644
index 2aea14db5207..fedf73d9492c
--- a/tests/run-ryu
+++ b/tests/run-ryu
@@ -81,7 +81,7 @@ do
         -- set controller $bridge connection-mode=out-of-band \
                                   max-backoff=1000 \
         -- add-port $bridge $port1 \
-	-- set interface $port1 ofport_request=1 type=dummy \
+        -- set interface $port1 ofport_request=1 type=dummy \
                                 options:${stream_mode}:"$sandbox"/p1.sock \
         -- add-port $bridge $port2 \
         -- set interface $port2 ofport_request=2 type=dummy \
@@ -144,7 +144,7 @@ cat <<EOF
 
 ----------------------------------------------------------------------
 Logs may be found under $sandbox, e.g.:$logs
-	$sandbox/ovs-vswitchd.log
-	$sandbox/ovsdb-server.log
+        $sandbox/ovs-vswitchd.log
+        $sandbox/ovsdb-server.log
 ----------------------------------------------------------------------
 EOF
diff --git a/tests/test-lib.c b/tests/test-lib.c
index 059dd04baad4..bcb5bb782622 100644
--- a/tests/test-lib.c
+++ b/tests/test-lib.c
@@ -49,7 +49,7 @@ parse_options(int argc, char *argv[])
     static const struct option long_options[] = {
         {"help", no_argument, NULL, 'h'},
         {"version", no_argument, NULL, 'V'},
-		{"verbose", optional_argument, NULL, 'v'},
+        {"verbose", optional_argument, NULL, 'v'},
         {NULL, 0, NULL, 0},
     };
     char *short_options = "hVv";
diff --git a/tests/test-sflow.c b/tests/test-sflow.c
index 82e950273c4b..460d4d6c54d0 100644
--- a/tests/test-sflow.c
+++ b/tests/test-sflow.c
@@ -113,16 +113,16 @@ struct sflow_xdr {
     struct {
         uint32_t HEADER;
         uint32_t SWITCH;
-	uint32_t TUNNEL4_OUT;
-	uint32_t TUNNEL4_IN;
-	uint32_t TUNNEL_VNI_OUT;
-	uint32_t TUNNEL_VNI_IN;
-	uint32_t MPLS;
-	uint32_t IFCOUNTERS;
-	uint32_t ETHCOUNTERS;
-	uint32_t LACPCOUNTERS;
-	uint32_t OPENFLOWPORT;
-	uint32_t PORTNAME;
+        uint32_t TUNNEL4_OUT;
+        uint32_t TUNNEL4_IN;
+        uint32_t TUNNEL_VNI_OUT;
+        uint32_t TUNNEL_VNI_IN;
+        uint32_t MPLS;
+        uint32_t IFCOUNTERS;
+        uint32_t ETHCOUNTERS;
+        uint32_t LACPCOUNTERS;
+        uint32_t OPENFLOWPORT;
+        uint32_t PORTNAME;
     } offset;
 
     /* Flow sample fields. */
@@ -245,39 +245,39 @@ process_counter_sample(struct sflow_xdr *x)
         printf("\n");
     }
     if (x->offset.LACPCOUNTERS) {
-	struct eth_addr *mac;
-	union {
-	    ovs_be32 all;
-	    struct {
-		uint8_t actorAdmin;
-		uint8_t actorOper;
-		uint8_t partnerAdmin;
-		uint8_t partnerOper;
-	    } v;
-	} state;
+        struct eth_addr *mac;
+        union {
+            ovs_be32 all;
+            struct {
+                uint8_t actorAdmin;
+                uint8_t actorOper;
+                uint8_t partnerAdmin;
+                uint8_t partnerOper;
+            } v;
+        } state;
 
         sflowxdr_setc(x, x->offset.LACPCOUNTERS);
         printf("LACPCOUNTERS");
-	mac = (void *)sflowxdr_str(x);
-	printf(" sysID="ETH_ADDR_FMT, ETH_ADDR_ARGS(*mac));
-	sflowxdr_skip(x, 2);
-	mac = (void *)sflowxdr_str(x);
-	printf(" partnerID="ETH_ADDR_FMT, ETH_ADDR_ARGS(*mac));
-	sflowxdr_skip(x, 2);
-	printf(" aggID=%"PRIu32, sflowxdr_next(x));
-	state.all = sflowxdr_next_n(x);
-	printf(" actorAdmin=0x%"PRIx32, state.v.actorAdmin);
-	printf(" actorOper=0x%"PRIx32, state.v.actorOper);
-	printf(" partnerAdmin=0x%"PRIx32, state.v.partnerAdmin);
-	printf(" partnerOper=0x%"PRIx32, state.v.partnerOper);
-	printf(" LACPDUsRx=%"PRIu32, sflowxdr_next(x));
-	printf(" markerPDUsRx=%"PRIu32, sflowxdr_next(x));
-	printf(" markerRespPDUsRx=%"PRIu32, sflowxdr_next(x));
-	printf(" unknownRx=%"PRIu32, sflowxdr_next(x));
-	printf(" illegalRx=%"PRIu32, sflowxdr_next(x));
-	printf(" LACPDUsTx=%"PRIu32, sflowxdr_next(x));
-	printf(" markerPDUsTx=%"PRIu32, sflowxdr_next(x));
-	printf(" markerRespPDUsTx=%"PRIu32, sflowxdr_next(x));
+        mac = (void *)sflowxdr_str(x);
+        printf(" sysID="ETH_ADDR_FMT, ETH_ADDR_ARGS(*mac));
+        sflowxdr_skip(x, 2);
+        mac = (void *)sflowxdr_str(x);
+        printf(" partnerID="ETH_ADDR_FMT, ETH_ADDR_ARGS(*mac));
+        sflowxdr_skip(x, 2);
+        printf(" aggID=%"PRIu32, sflowxdr_next(x));
+        state.all = sflowxdr_next_n(x);
+        printf(" actorAdmin=0x%"PRIx32, state.v.actorAdmin);
+        printf(" actorOper=0x%"PRIx32, state.v.actorOper);
+        printf(" partnerAdmin=0x%"PRIx32, state.v.partnerAdmin);
+        printf(" partnerOper=0x%"PRIx32, state.v.partnerOper);
+        printf(" LACPDUsRx=%"PRIu32, sflowxdr_next(x));
+        printf(" markerPDUsRx=%"PRIu32, sflowxdr_next(x));
+        printf(" markerRespPDUsRx=%"PRIu32, sflowxdr_next(x));
+        printf(" unknownRx=%"PRIu32, sflowxdr_next(x));
+        printf(" illegalRx=%"PRIu32, sflowxdr_next(x));
+        printf(" LACPDUsTx=%"PRIu32, sflowxdr_next(x));
+        printf(" markerPDUsTx=%"PRIu32, sflowxdr_next(x));
+        printf(" markerRespPDUsTx=%"PRIu32, sflowxdr_next(x));
         printf("\n");
     }
     if (x->offset.OPENFLOWPORT) {
@@ -285,21 +285,21 @@ process_counter_sample(struct sflow_xdr *x)
         printf("OPENFLOWPORT");
         printf(" datapath_id=%"PRIu64, sflowxdr_next_int64(x));
         printf(" port_no=%"PRIu32, sflowxdr_next(x));
-	printf("\n");
+        printf("\n");
     }
     if (x->offset.PORTNAME) {
-	uint32_t pnLen;
-	const char *pnBytes;
-	char portName[SFL_MAX_PORTNAME_LEN + 1];
+        uint32_t pnLen;
+        const char *pnBytes;
+        char portName[SFL_MAX_PORTNAME_LEN + 1];
         sflowxdr_setc(x, x->offset.PORTNAME);
         printf("PORTNAME");
-	pnLen = sflowxdr_next(x);
-	SFLOWXDR_assert(x, (pnLen <= SFL_MAX_PORTNAME_LEN));
-	pnBytes = sflowxdr_str(x);
-	memcpy(portName, pnBytes, pnLen);
-	portName[pnLen] = '\0';
-	printf(" portName=%s", portName);
-	printf("\n");
+        pnLen = sflowxdr_next(x);
+        SFLOWXDR_assert(x, (pnLen <= SFL_MAX_PORTNAME_LEN));
+        pnBytes = sflowxdr_str(x);
+        memcpy(portName, pnBytes, pnLen);
+        portName[pnLen] = '\0';
+        printf(" portName=%s", portName);
+        printf("\n");
     }
     if (x->offset.ETHCOUNTERS) {
         sflowxdr_setc(x, x->offset.ETHCOUNTERS);
@@ -386,22 +386,22 @@ process_flow_sample(struct sflow_xdr *x)
 
         if (x->offset.TUNNEL4_IN) {
             sflowxdr_setc(x, x->offset.TUNNEL4_IN);
-	    print_struct_ipv4(x, "tunnel4_in");
+            print_struct_ipv4(x, "tunnel4_in");
         }
 
         if (x->offset.TUNNEL4_OUT) {
             sflowxdr_setc(x, x->offset.TUNNEL4_OUT);
-	    print_struct_ipv4(x, "tunnel4_out");
+            print_struct_ipv4(x, "tunnel4_out");
         }
 
         if (x->offset.TUNNEL_VNI_IN) {
             sflowxdr_setc(x, x->offset.TUNNEL_VNI_IN);
-	    printf( " tunnel_in_vni=%"PRIu32, sflowxdr_next(x));
+            printf( " tunnel_in_vni=%"PRIu32, sflowxdr_next(x));
         }
 
         if (x->offset.TUNNEL_VNI_OUT) {
             sflowxdr_setc(x, x->offset.TUNNEL_VNI_OUT);
-	    printf( " tunnel_out_vni=%"PRIu32, sflowxdr_next(x));
+            printf( " tunnel_out_vni=%"PRIu32, sflowxdr_next(x));
         }
 
         if (x->offset.MPLS) {
@@ -616,23 +616,23 @@ process_datagram(struct sflow_xdr *x)
                     sflowxdr_mark_unique(x, &x->offset.SWITCH);
                     break;
 
-		case SFLOW_TAG_PKT_TUNNEL4_OUT:
+                case SFLOW_TAG_PKT_TUNNEL4_OUT:
                     sflowxdr_mark_unique(x, &x->offset.TUNNEL4_OUT);
                     break;
 
-		case SFLOW_TAG_PKT_TUNNEL4_IN:
+                case SFLOW_TAG_PKT_TUNNEL4_IN:
                     sflowxdr_mark_unique(x, &x->offset.TUNNEL4_IN);
                     break;
 
-		case SFLOW_TAG_PKT_TUNNEL_VNI_OUT:
+                case SFLOW_TAG_PKT_TUNNEL_VNI_OUT:
                     sflowxdr_mark_unique(x, &x->offset.TUNNEL_VNI_OUT);
                     break;
 
-		case SFLOW_TAG_PKT_TUNNEL_VNI_IN:
+                case SFLOW_TAG_PKT_TUNNEL_VNI_IN:
                     sflowxdr_mark_unique(x, &x->offset.TUNNEL_VNI_IN);
                     break;
 
-		case SFLOW_TAG_PKT_MPLS:
+                case SFLOW_TAG_PKT_MPLS:
                     sflowxdr_mark_unique(x, &x->offset.MPLS);
                     break;
 
diff --git a/tests/tunnel.at b/tests/tunnel.at
index c8fc2f7ac327..ae379db120fb 100644
--- a/tests/tunnel.at
+++ b/tests/tunnel.at
@@ -662,10 +662,10 @@ AT_CHECK([ovs-ofctl add-tlv-map br0 "{class=0xffff,type=2,len=124}->tun_metadata
 [OFPT_ERROR (xid=0x4): NXTTMFC_TABLE_FULL
 NXT_TLV_TABLE_MOD (xid=0x4):
  ADD mapping table:
- class	type	length	match field
- -----	----	------	-----------
- 0xffff	0x2	124	tun_metadata2
- 0xffff	0x3	124	tun_metadata3
+  class  type  length  match field
+ ------  ----  ------  --------------
+ 0xffff   0x2     124  tun_metadata2
+ 0xffff   0x3     124  tun_metadata3
 ])
 
 AT_CHECK([ovs-ofctl add-flow br0 "tun_metadata0,tun_metadata0,actions=drop"], [1], [ignore],
@@ -723,9 +723,9 @@ AT_CHECK([ovs-ofctl del-tlv-map br0 "{class=0xffff,type=3,len=4}->tun_metadata2"
 OFPT_ERROR (xid=0x4): NXTTMFC_INVALID_TLV_DEL
 NXT_TLV_TABLE_MOD (xid=0x4):
  DEL mapping table:
- class	type	length	match field
- -----	----	------	-----------
- 0xffff	0x3	4	tun_metadata2
+  class  type  length  match field
+ ------  ----  ------  --------------
+ 0xffff   0x3       4  tun_metadata2
 ])
 
 AT_CHECK([ovs-ofctl del-flows br0], [0])
@@ -748,9 +748,9 @@ AT_CHECK([ovs-ofctl del-tlv-map br0 "{class=0xffff,type=1,len=4}->tun_metadata1"
 OFPT_ERROR (xid=0x4): NXTTMFC_INVALID_TLV_DEL
 NXT_TLV_TABLE_MOD (xid=0x4):
  DEL mapping table:
- class	type	length	match field
- -----	----	------	-----------
- 0xffff	0x1	4	tun_metadata1
+  class  type  length  match field
+ ------  ----  ------  --------------
+ 0xffff   0x1       4  tun_metadata1
 ])
 AT_CHECK([ovs-ofctl del-flows br0 "tun_metadata1"])
 AT_CHECK([ovs-ofctl del-tlv-map br0 "{class=0xffff,type=1,len=4}->tun_metadata1"])
@@ -759,9 +759,9 @@ AT_CHECK([ovs-ofctl del-tlv-map br0 "{class=0xffff,type=2,len=4}->tun_metadata2"
 OFPT_ERROR (xid=0x4): NXTTMFC_INVALID_TLV_DEL
 NXT_TLV_TABLE_MOD (xid=0x4):
  DEL mapping table:
- class	type	length	match field
- -----	----	------	-----------
- 0xffff	0x2	4	tun_metadata2
+  class  type  length  match field
+ ------  ----  ------  --------------
+ 0xffff   0x2       4  tun_metadata2
 ])
 AT_CHECK([ovs-ofctl del-flows br0 "reg1=0xFF"])
 AT_CHECK([ovs-ofctl del-tlv-map br0], [0])
diff --git a/tutorial/ovs-sandbox b/tutorial/ovs-sandbox
index bea0604795aa..781bedbc6e35 100755
--- a/tutorial/ovs-sandbox
+++ b/tutorial/ovs-sandbox
@@ -393,9 +393,9 @@ if $ovn; then
         $OVS_PKI -B 1024 init
         $OVS_PKI -B 1024 req+sign ovnsb switch
         $OVS_PKI -B 1024 req+sign ovnnb switch
-	for i in $(seq $n_controllers); do
+        for i in $(seq $n_controllers); do
             $OVS_PKI -B 1024 -u req+sign chassis-$i switch
-	done
+        done
     fi
 fi
 rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file -vsyslog:off \
@@ -428,7 +428,7 @@ if $ovn; then
             local i=$1; shift
             rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir \
                    --pidfile=$db$i.pid -vconsole:off --log-file=$db$i.log \
-		   -vsyslog:off \
+                   -vsyslog:off \
                    --remote=db:$schema_name,${DB}_Global,connections \
                    --private-key=db:$schema_name,SSL,private_key \
                    --certificate=db:$schema_name,SSL,certificate \
@@ -535,14 +535,14 @@ if $ovn; then
                --ovnsb-db="$OVN_SB_DB" --ovnnb-db="$OVN_NB_DB"
     done
     for i in $(seq $n_controllers); do
-	rungdb $gdb_ovn_controller $gdb_ovn_controller_ex ovn-controller \
+        rungdb $gdb_ovn_controller $gdb_ovn_controller_ex ovn-controller \
                $OVN_CTRLR_PKI --detach --no-chdir -vsyslog:off \
-	       --pidfile=ovn-controller$i.pid -vconsole:off --log-file
+               --pidfile=ovn-controller$i.pid -vconsole:off --log-file
     done
     rungdb $gdb_ovn_controller_vtep $gdb_ovn_controller_vtep_ex \
         ovn-controller-vtep --detach --no-chdir --pidfile -vconsole:off \
         $OVN_CTRLR_PKI --log-file -vsyslog:off \
-	--ovnsb-db=unix:"$sandbox"/ovnsb_db.sock
+        --ovnsb-db=unix:"$sandbox"/ovnsb_db.sock
 fi
 
 cat <<EOF
diff --git a/utilities/bugtool/ovs-bugtool-tc-class-show b/utilities/bugtool/ovs-bugtool-tc-class-show
old mode 100755
new mode 100644
index 5e6ae0a1bd78..904789f11abe
--- a/utilities/bugtool/ovs-bugtool-tc-class-show
+++ b/utilities/bugtool/ovs-bugtool-tc-class-show
@@ -18,8 +18,8 @@
 
 for iface in $(cd /sys/class/net && echo *); do
     if [ -d /sys/class/net/$iface ]; then
-	echo Interface $iface:
-	# indent tc output so it's clear which interface it pertains to
-	/sbin/tc -s -d class show dev $iface | /bin/sed 's/^/ /'
+        echo Interface $iface:
+        # indent tc output so it's clear which interface it pertains to
+        /sbin/tc -s -d class show dev $iface | /bin/sed 's/^/ /'
     fi
 done
diff --git a/utilities/nlmon.c b/utilities/nlmon.c
index 448b5eb5d212..32aa948c6bbc 100644
--- a/utilities/nlmon.c
+++ b/utilities/nlmon.c
@@ -119,7 +119,7 @@ main(int argc OVS_UNUSED, char *argv[])
                     : nlh->nlmsg_type == RTM_GETLINK ? "RTM_GETLINK"
                     : nlh->nlmsg_type == RTM_SETLINK ? "RTM_SETLINK"
                     : "other"));
-            printf("\tflags:");
+            printf("  flags:");
             for (i = 0; i < ARRAY_SIZE(flags); i++) {
                 if (iim->ifi_flags & flags[i].flag) {
                     printf(" %s", flags[i].name);
@@ -127,9 +127,9 @@ main(int argc OVS_UNUSED, char *argv[])
             }
             printf("\n");
             if (netnsid_is_remote(nsid)) {
-                printf("\tnetns id: %d\n", nsid);
+                printf("  netns id: %d\n", nsid);
             } else {
-                printf("\tnetns id: local\n");
+                printf("  netns id: local\n");
             }
             if (attrs[IFLA_MASTER]) {
                 uint32_t idx = nl_attr_get_u32(attrs[IFLA_MASTER]);
@@ -137,7 +137,7 @@ main(int argc OVS_UNUSED, char *argv[])
                 if (!if_indextoname(idx, ifname)) {
                     strcpy(ifname, "unknown");
                 }
-                printf("\tmaster=%"PRIu32" (%s)\n", idx, ifname);
+                printf("  master=%"PRIu32" (%s)\n", idx, ifname);
             }
         }
 
diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
index ef06dd967e1e..79b8fa853b2e 100755
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -539,7 +539,7 @@ case $command in
         done
         ;;
     force-reload-kmod)
-	    force_reload_kmod
+            force_reload_kmod
         ;;
     load-kmod)
         insert_mod_if_required
diff --git a/utilities/ovs-sim.in b/utilities/ovs-sim.in
old mode 100755
new mode 100644
index 24c1da0a93e3..72436c08941b
--- a/utilities/ovs-sim.in
+++ b/utilities/ovs-sim.in
@@ -241,82 +241,82 @@ ovn_start_db() {
     local schema_name=$(ovsdb-tool schema-name $schema)
 
     case $model in
-	standalone | backup) ;;
-	clustered)
-	    case $servers in
-		[1-9] | [1-9][0-9]) ;;
-		*) echo "${db}db servers must be between 1 and 99" >&2
-		   exit 1
-		   ;;
-	    esac
-	    ;;
-	*)
-	    echo "unknown ${db}db model \"$model\"" >&2
-	    exit 1
-	    ;;
+        standalone | backup) ;;
+        clustered)
+            case $servers in
+                [1-9] | [1-9][0-9]) ;;
+                *) echo "${db}db servers must be between 1 and 99" >&2
+                   exit 1
+                   ;;
+            esac
+            ;;
+        *)
+            echo "unknown ${db}db model \"$model\"" >&2
+            exit 1
+            ;;
     esac
 
     ovn_start_ovsdb_server() {
-	local i=$1; shift
-	as ${db}$i ovsdb-server --detach --no-chdir --pidfile=$db.pid \
-	   -vsyslog:off -vconsole:off --log-file="$sim_base"/$db$i/$db.log \
-	   --remote=db:$schema_name,${DB}_Global,connections \
-	   --private-key=db:$schema_name,SSL,private_key \
-	   --certificate=db:$schema_name,SSL,certificate \
-	   --ca-cert=db:$schema_name,SSL,ca_cert \
-	   --ssl-protocols=db:$schema_name,SSL,ssl_protocols \
-	   --ssl-ciphers=db:$schema_name,SSL,ssl_ciphers \
-	   --unixctl=${db} --remote=punix:$db.ovsdb \
-	   "$sim_base"/$db$i/$db.db "$@"
+        local i=$1; shift
+        as ${db}$i ovsdb-server --detach --no-chdir --pidfile=$db.pid \
+           -vsyslog:off -vconsole:off --log-file="$sim_base"/$db$i/$db.log \
+           --remote=db:$schema_name,${DB}_Global,connections \
+           --private-key=db:$schema_name,SSL,private_key \
+           --certificate=db:$schema_name,SSL,certificate \
+           --ca-cert=db:$schema_name,SSL,ca_cert \
+           --ssl-protocols=db:$schema_name,SSL,ssl_protocols \
+           --ssl-ciphers=db:$schema_name,SSL,ssl_ciphers \
+           --unixctl=${db} --remote=punix:$db.ovsdb \
+           "$sim_base"/$db$i/$db.db "$@"
     }
 
     ovn_prep_db() {
-	local i=$1
-	mkdir "$sim_base"/${db}$i
-	touch "$sim_base"/${db}$i/.$db.db.~lock~
+        local i=$1
+        mkdir "$sim_base"/${db}$i
+        touch "$sim_base"/${db}$i/.$db.db.~lock~
     }
 
     local n_remotes=1
     case $model in
-	standalone)
-	    ovn_prep_db 1
-	    ovsdb-tool create "$sim_base"/${db}1/$db.db "$schema"
-	    ovn_start_ovsdb_server 1
-	    ;;
-	backup)
-	    for i in 1 2; do
-		ovn_prep_db $i
-		ovsdb-tool create "$sim_base"/$db$i/$db.db "$schema"
-	    done
-	    ovn_start_ovsdb_server 1
-	    ovn_start_ovsdb_server 2 --sync-from=unix:"$sim_base"/${db}1/$db.ovsdb
-	    cat <<EOF
+        standalone)
+            ovn_prep_db 1
+            ovsdb-tool create "$sim_base"/${db}1/$db.db "$schema"
+            ovn_start_ovsdb_server 1
+            ;;
+        backup)
+            for i in 1 2; do
+                ovn_prep_db $i
+                ovsdb-tool create "$sim_base"/$db$i/$db.db "$schema"
+            done
+            ovn_start_ovsdb_server 1
+            ovn_start_ovsdb_server 2 --sync-from=unix:"$sim_base"/${db}1/$db.ovsdb
+            cat <<EOF
 The backup server of OVN $DB can be accessed by:
 * ovn-${db}ctl --db=unix:$sim_base/${db}2/$db.ovsdb
 * ovs-appctl -t $sim_base/${db}2/${db}
 The backup database file is $sim_base/${db}2/$db.db
 EOF
-	    ;;
-	clustered)
-	    n_remotes=$servers
-	    for i in $(seq $servers); do
-		ovn_prep_db $i
-		if test $i = 1; then
-		    ovsdb-tool create-cluster "$sim_base"/$db$i/$db.db "$schema" unix:"$sim_base"/$db$i/db.raft
-		else
-		    ovsdb-tool join-cluster "$sim_base"/$db$i/$db.db $schema_name unix:"$sim_base"/$db$i/db.raft unix:"$sim_base"/${db}1/db.raft
-		fi
-		ovn_start_ovsdb_server $i
-	    done
-	    for i in $(seq $servers); do
-		ovsdb-client wait unix:"$sim_base"/${db}$i/$db.ovsdb $schema_name connected
-	    done
-	    ;;
+            ;;
+        clustered)
+            n_remotes=$servers
+            for i in $(seq $servers); do
+                ovn_prep_db $i
+                if test $i = 1; then
+                    ovsdb-tool create-cluster "$sim_base"/$db$i/$db.db "$schema" unix:"$sim_base"/$db$i/db.raft
+                else
+                    ovsdb-tool join-cluster "$sim_base"/$db$i/$db.db $schema_name unix:"$sim_base"/$db$i/db.raft unix:"$sim_base"/${db}1/db.raft
+                fi
+                ovn_start_ovsdb_server $i
+            done
+            for i in $(seq $servers); do
+                ovsdb-client wait unix:"$sim_base"/${db}$i/$db.ovsdb $schema_name connected
+            done
+            ;;
     esac
 
     remote=unix:"$sim_base"/${db}1/$db.ovsdb
     for i in `seq 2 $n_remotes`; do
-	remote=$remote,unix:"$sim_base"/${db}$i/$db.ovsdb
+        remote=$remote,unix:"$sim_base"/${db}$i/$db.ovsdb
     done
     eval OVN_${DB}_DB=\$remote
     eval export OVN_${DB}_DB
@@ -330,30 +330,30 @@ ovn_start() {
     local sbdb_servers=3
     local prev=
     for option; do
-	# This option-parsing mechanism borrowed from a Autoconf-generated
-	# configure script under the following license:
+        # This option-parsing mechanism borrowed from a Autoconf-generated
+        # configure script under the following license:
 
-	# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-	# 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
-	# This configure script is free software; the Free Software Foundation
-	# gives unlimited permission to copy, distribute and modify it.
+        # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+        # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
+        # This configure script is free software; the Free Software Foundation
+        # gives unlimited permission to copy, distribute and modify it.
 
-	# If the previous option needs an argument, assign it.
-	if test -n "$prev"; then
+        # If the previous option needs an argument, assign it.
+        if test -n "$prev"; then
             eval $prev=\$option
             prev=
             continue
-	fi
-	case $option in
+        fi
+        case $option in
             *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
             *) optarg=yes ;;
-	esac
+        esac
 
-	case $dashdash$option in
+        case $dashdash$option in
             --)
-		dashdash=yes ;;
+                dashdash=yes ;;
             -h|--help)
-		cat <<EOF
+                cat <<EOF
 $FUNCNAME: start OVN central databases and daemons
 usage: $FUNCNAME [OPTION...]
 
@@ -368,47 +368,47 @@ Options:
   --sbdb-servers=N     number of servers in sbdb cluster (default: 3)
   -h, --help           Print this usage message.
 EOF
-		return
-		;;
+                return
+                ;;
 
             --nbdb-s*=*)
-		nbdb_servers=$optarg
-		nbdb_model=clustered
-		;;
+                nbdb_servers=$optarg
+                nbdb_model=clustered
+                ;;
             --nbdb-s*)
-		prev=nbdb_servers
-		nbdb_model=clustered
-		;;
+                prev=nbdb_servers
+                nbdb_model=clustered
+                ;;
             --nbdb-m*=*)
-		nbdb_model=$optarg
-		;;
+                nbdb_model=$optarg
+                ;;
             --nbdb-m*)
-		prev=nbdb_model
-		;;
+                prev=nbdb_model
+                ;;
             --sbdb-s*=*)
-		sbdb_servers=$optarg
-		sbdb_model=clustered
-		;;
+                sbdb_servers=$optarg
+                sbdb_model=clustered
+                ;;
             --sbdb-s*)
-		prev=sbdb_servers
-		sbdb_model=clustered
-		;;
+                prev=sbdb_servers
+                sbdb_model=clustered
+                ;;
             --sbdb-m*=*)
-		sbdb_model=$optarg
-		;;
+                sbdb_model=$optarg
+                ;;
             --sbdb-m*)
-		prev=sbdb_model
-		;;
+                prev=sbdb_model
+                ;;
             -*)
-		echo "unrecognized option $option (use --help for help)" >&2
-		return 1
-		;;
+                echo "unrecognized option $option (use --help for help)" >&2
+                return 1
+                ;;
             *)
-		echo "$option: non-option arguments not supported (use --help for help)" >&2
-		return 1
-		;;
-	esac
-	shift
+                echo "$option: non-option arguments not supported (use --help for help)" >&2
+                return 1
+                ;;
+        esac
+        shift
     done
 
     if test -d ovn-sb || test -d ovn-nb; then
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 071b3247749b..d383b287e734 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -3141,24 +3141,24 @@ qos_unixctl_show_queue(unsigned int queue_id,
     }
 
     SMAP_FOR_EACH (node, details) {
-        ds_put_format(ds, "\t%s: %s\n", node->key, node->value);
+        ds_put_format(ds, "  %s: %s\n", node->key, node->value);
     }
 
     error = netdev_get_queue_stats(iface->netdev, queue_id, &stats);
     if (!error) {
         if (stats.tx_packets != UINT64_MAX) {
-            ds_put_format(ds, "\ttx_packets: %"PRIu64"\n", stats.tx_packets);
+            ds_put_format(ds, "  tx_packets: %"PRIu64"\n", stats.tx_packets);
         }
 
         if (stats.tx_bytes != UINT64_MAX) {
-            ds_put_format(ds, "\ttx_bytes: %"PRIu64"\n", stats.tx_bytes);
+            ds_put_format(ds, "  tx_bytes: %"PRIu64"\n", stats.tx_bytes);
         }
 
         if (stats.tx_errors != UINT64_MAX) {
-            ds_put_format(ds, "\ttx_errors: %"PRIu64"\n", stats.tx_errors);
+            ds_put_format(ds, "  tx_errors: %"PRIu64"\n", stats.tx_errors);
         }
     } else {
-        ds_put_format(ds, "\tFailed to get statistics for queue %u: %s",
+        ds_put_format(ds, "  Failed to get statistics for queue %u: %s",
                       queue_id, ovs_strerror(error));
     }
 }
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index 80f17e89b0ad..1e4e342dcb96 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -1,6 +1,6 @@
 {"name": "Open_vSwitch",
- "version": "7.16.0",
- "cksum": "2403910601 23776",
+ "version": "7.16.1",
+ "cksum": "1452282319 23860",
  "tables": {
    "Open_vSwitch": {
      "columns": {
@@ -106,7 +106,7 @@
                             "OpenFlow14",
                             "OpenFlow15",
                             "OpenFlow16"]]},
-	   "min": 0, "max": "unlimited"}},
+           "min": 0, "max": "unlimited"}},
        "fail_mode": {
          "type": {"key": {"type": "string",
                           "enum": ["set", ["standalone", "secure"]]},
@@ -363,16 +363,16 @@
    "Flow_Table": {
      "columns": {
        "name": {
-	 "type": {"key": "string", "min": 0, "max": 1}},
+         "type": {"key": "string", "min": 0, "max": 1}},
        "flow_limit": {
-	 "type": {"key": {"type": "integer", "minInteger": 0},
-		  "min": 0, "max": 1}},
+         "type": {"key": {"type": "integer", "minInteger": 0},
+                  "min": 0, "max": 1}},
        "overflow_policy": {
-	 "type": {"key": {"type": "string",
-			  "enum": ["set", ["refuse", "evict"]]},
-		  "min": 0, "max": 1}},
+         "type": {"key": {"type": "string",
+                          "enum": ["set", ["refuse", "evict"]]},
+                  "min": 0, "max": 1}},
        "groups": {
-	 "type": {"key": "string", "min": 0, "max": "unlimited"}},
+         "type": {"key": "string", "min": 0, "max": "unlimited"}},
        "prefixes": {
          "type": {"key": "string", "min": 0, "max": 3}},
        "external_ids": {
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 1e27a0220098..e432ebef2ecf 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -2146,7 +2146,7 @@
         </ul>
         <p>Some interfaces may not have a software-controllable MAC
         address.  This option only affects internal ports.  For other type ports,
-	you can change the MAC address outside Open vSwitch, using ip command.</p>
+        you can change the MAC address outside Open vSwitch, using ip command.</p>
       </column>
 
       <column name="error">
diff --git a/xenserver/openvswitch-xen.spec.in b/xenserver/openvswitch-xen.spec.in
index c1fbcc75ebea..ba3580836fd2 100644
--- a/xenserver/openvswitch-xen.spec.in
+++ b/xenserver/openvswitch-xen.spec.in
@@ -340,7 +340,7 @@ else    # $1 = 2 for upgrade
     if [ "$mode" != "vswitch" ] && [ "$mode" != "openvswitch" ]; then
         printf "\nThe server is not configured to run Open vSwitch.  To run in\n"
         printf "vswitch mode, you must run the following command:\n\n"
-        printf "\txe-switch-network-backend vswitch"
+        printf "  xe-switch-network-backend vswitch"
         printf "\n\n"
     fi
 fi
-- 
2.16.1



More information about the dev mailing list