si: Add a config option to disable SI2ter/SI2bis/SI5ter/SI5bis messages

The iPhone5 (US) appears to have some issues with the SIs generated,
or the nanoBTS is not sending them correctly.

Add a configurable hack to put all bands into the SI2/SI5 message.
It is enabled by the bts VTY command 'force-combined-si'.

This is a quick change without much reflection and watching for side
effects. I have verfied that a network with ARFCN 134 and neighbors
ARFCN 130 and 512 do not get generate the SI2ter and announce everything
inside the SI2.

This patch is conceptually based on 'si: Add a hack to disable
SI2ter/SI2bis/SI5ter/SI5bis messages' (692daaf2d2).

Ticket: OW#1062
Sponsored-by: On-Waves ehf
diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py
index 08c94b1..74f0fd2 100644
--- a/openbsc/tests/vty_test_runner.py
+++ b/openbsc/tests/vty_test_runner.py
@@ -173,6 +173,24 @@
         self.assertEquals(res.find('periodic location update 60'), -1)
         self.assert_(res.find('no periodic location update') > 0)
 
+    def testEnableDisableSiHacks(self):
+        self.vty.enable()
+        self.vty.command("configure terminal")
+        self.vty.command("network")
+        self.vty.command("bts 0")
+
+        # Enable periodic lu..
+        self.vty.verify("force-combined-si", [''])
+        res = self.vty.command("write terminal")
+        self.assert_(res.find('  force-combined-si') > 0)
+        self.assertEquals(res.find('no force-combined-si'), -1)
+
+        # Now disable it..
+        self.vty.verify("no force-combined-si", [''])
+        res = self.vty.command("write terminal")
+        self.assertEquals(res.find('  force-combined-si'), -1)
+        self.assert_(res.find('no force-combined-si') > 0)
+
     def testRachAccessControlClass(self):
         self.vty.enable()
         self.vty.command("configure terminal")