Fixes related to single-point-to-multi-point intents:
 * At the CLI level, the Ingress point argument should be specified
   before the Egress points arguments.
   This follows the natural Ingress/Egress argument ordering for
   other intents.
 * Added missing optional CLI complementer to shell-config.xml

Change-Id: I49f1ec9706a2f47bbb513d388a26fa5d40cba1bd
NOTE: Those changes are carried from Gerrit 1586.
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
index 74704d0..5185d65 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
@@ -36,10 +36,10 @@
 
 
 @Command(scope = "onos", name = "add-single-to-multi-intent",
-        description = "Installs connectivity intent between multiple egress devices and a single ingress device")
+        description = "Installs connectivity intent between a single ingress device and multiple egress devices")
 public class AddSinglePointToMultiPointIntentCommand extends ConnectivityIntentCommand {
-    @Argument(index = 0, name = "egressDevices ingressDevice",
-            description = "egressDevice/Port...egressDevice/Port ingressDevice/port",
+    @Argument(index = 0, name = "ingressDevice egressDevices",
+            description = "ingressDevice/Port egressDevice/Port...egressDevice/Port",
             required = true, multiValued = true)
     String[] deviceStrings = null;
 
@@ -51,14 +51,14 @@
             return;
         }
 
-        String ingressDeviceString = deviceStrings[deviceStrings.length - 1];
+        String ingressDeviceString = deviceStrings[0];
         DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString));
         PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString));
         ConnectPoint ingressPoint = new ConnectPoint(ingressDeviceId,
                                                      ingressPortNumber);
 
         Set<ConnectPoint> egressPoints = new HashSet<>();
-        for (int index = 0; index < deviceStrings.length - 1; index++) {
+        for (int index = 1; index < deviceStrings.length; index++) {
             String egressDeviceString = deviceStrings[index];
             DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString));
             PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 799e732..265dcd0 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -180,6 +180,7 @@
             </completers>
             <optional-completers>
                 <entry key="-t" value-ref="ethTypeCompleter"/>
+                <entry key="--ipProto" value-ref="ipProtocolCompleter"/>
             </optional-completers>
         </command>
         <command>