mfib CLI bugs (VPP-852)

Change-Id: I1b71010e20742eee02693d672e24c85897e37759
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vnet/ip/lookup.c b/src/vnet/ip/lookup.c
index b9b5caa..6547cad 100755
--- a/src/vnet/ip/lookup.c
+++ b/src/vnet/ip/lookup.c
@@ -813,12 +813,14 @@
 			 unformat_ip4_address,
 			 &pfx.fp_grp_addr.ip4, &pfx.fp_len))
 	{
+	  memset (&pfx.fp_src_addr.ip4, 0, sizeof (pfx.fp_src_addr.ip4));
 	  pfx.fp_proto = FIB_PROTOCOL_IP4;
 	}
       else if (unformat (line_input, "%U/%d",
 			 unformat_ip6_address,
 			 &pfx.fp_grp_addr.ip6, &pfx.fp_len))
 	{
+	  memset (&pfx.fp_src_addr.ip6, 0, sizeof (pfx.fp_src_addr.ip6));
 	  pfx.fp_proto = FIB_PROTOCOL_IP6;
 	}
       else if (unformat (line_input, "%U",
diff --git a/src/vnet/mfib/ip4_mfib.c b/src/vnet/mfib/ip4_mfib.c
index 3ed7cba..1849a3a 100644
--- a/src/vnet/mfib/ip4_mfib.c
+++ b/src/vnet/mfib/ip4_mfib.c
@@ -382,14 +382,17 @@
             matching = 1;
             mask = 64;
         }
+        else if (unformat (input, "%U/%d", unformat_ip4_address, &grp, &mask))
+        {
+            memset(&src, 0, sizeof(src));
+            matching = 1;
+        }
         else if (unformat (input, "%U", unformat_ip4_address, &grp))
         {
+            memset(&src, 0, sizeof(src));
             matching = 1;
             mask = 32;
         }
-        else if (unformat (input, "%U/%d",
-                           unformat_ip4_address, &grp, &mask))
-            matching = 1;
         else if (unformat (input, "table %d", &table_id))
             ;
         else if (unformat (input, "index %d", &fib_index))
diff --git a/src/vnet/mfib/ip6_mfib.c b/src/vnet/mfib/ip6_mfib.c
index 116fee2..5c6f812 100644
--- a/src/vnet/mfib/ip6_mfib.c
+++ b/src/vnet/mfib/ip6_mfib.c
@@ -585,16 +585,19 @@
                            unformat_ip6_address, &grp))
         {
             matching = 1;
-            mask = 64;
+            mask = 256;
+        }
+        else if (unformat (input, "%U/%d", unformat_ip6_address, &grp, &mask))
+        {
+            memset(&src, 0, sizeof(src));
+            matching = 1;
         }
         else if (unformat (input, "%U", unformat_ip6_address, &grp))
         {
+            memset(&src, 0, sizeof(src));
             matching = 1;
-            mask = 32;
+            mask = 128;
         }
-        else if (unformat (input, "%U/%d",
-                           unformat_ip6_address, &grp, &mask))
-            matching = 1;
         else if (unformat (input, "table %d", &table_id))
             ;
         else if (unformat (input, "index %d", &fib_index))