Repair vlib API socket server

- Teach vpp_api_test to send/receive API messages over sockets
- Add memfd-based shared memory
- Add api messages to create memfd-based shared memory segments
- vpp_api_test supports both socket and shared memory segment connections
- vpp_api_test pivot from socket to shared memory API messaging
- add socket client support to libvlibclient.so
- dead client reaper sends ping messages, container-friendly
- dead client reaper falls back to kill (<pid>, 0) live checking
  if e.g. a python app goes silent for tens of seconds
- handle ping messages in python client support code
- teach show api ring about pairwise shared-memory segments
- fix ip probing of already resolved destinations (VPP-998)

We'll need this work to implement proper host-stack client isolation

Change-Id: Ic23b65f75c854d0393d9a2e9d6b122a9551be769
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/l2/l2_fib.c b/src/vnet/l2/l2_fib.c
index 64b3275..0ad56f3 100644
--- a/src/vnet/l2/l2_fib.c
+++ b/src/vnet/l2/l2_fib.c
@@ -1036,9 +1036,10 @@
 			}
 		      else
 			{
-			  clib_warning ("MAC event to pid %d queue stuffed!"
-					" %d MAC entries lost", client,
-					evt_idx);
+			  if (q)
+			    clib_warning ("MAC event to pid %d queue stuffed!"
+					  " %d MAC entries lost", client,
+					  evt_idx);
 			}
 		      evt_idx = 0;
 		    }
@@ -1119,8 +1120,9 @@
 	    }
 	  else
 	    {
-	      clib_warning ("MAC event to pid %d queue stuffed!"
-			    " %d MAC entries lost", client, evt_idx);
+	      if (q)
+		clib_warning ("MAC event to pid %d queue stuffed!"
+			      " %d MAC entries lost", client, evt_idx);
 	      vl_msg_api_free (mp);
 	    }
 	}