Fix L2FIB learn counter and memory cleanup of mac_by_ip6 hash table

Fix global_learn_count to be incremented or decremented by add and
deletion of non-static MAC entries from L2FIB only. Without this fix,
the counter may reach the threshold of 1M and stop MAC leanring even
though number of MAC entries in L2FIB is less than the threshold.

Cleanup indirect hash key memory used by mac_by_ip6 hash table on
BD deletion.

Change-Id: I13986c4e6304c7956122520dd3f83d6bb6e65a15
Signed-off-by: John Lo <loj@cisco.com>
diff --git a/src/vnet/l2/l2_fib.c b/src/vnet/l2/l2_fib.c
index d8fcc31..028a732 100644
--- a/src/vnet/l2/l2_fib.c
+++ b/src/vnet/l2/l2_fib.c
@@ -215,7 +215,9 @@
   if (total_entries == 0)
     vlib_cli_output (vm, "no l2fib entries");
   else
-    vlib_cli_output (vm, "%lld l2fib entries", total_entries);
+    vlib_cli_output (vm,
+		     "%lld l2fib entries with %d learned (or non-static) entries",
+		     total_entries, l2learn_main.global_learn_count);
 
   if (raw)
     vlib_cli_output (vm, "Raw Hash Table:\n%U\n",
@@ -347,7 +349,7 @@
   BV (clib_bihash_add_del) (&mp->mac_table, &kv, 1 /* is_add */ );
 
   /* increment counter if dynamically learned mac */
-  if (result.fields.static_mac)
+  if (result.fields.static_mac == 0)
     {
       l2learn_main.global_learn_count++;
     }
@@ -635,7 +637,7 @@
   result.raw = kv.value;
 
   /* decrement counter if dynamically learned mac */
-  if (result.fields.static_mac)
+  if (result.fields.static_mac == 0)
     {
       if (l2learn_main.global_learn_count > 0)
 	{