Let SocketClient users write binary data to clients.

This is a dependency for the DNS proxy CLs.

This CL also adds a new socket for the netd process to inherit which
is owned by the inet group.  (so only apps with the INTERNET
permission can use the DNS proxy...)

Change-Id: Ic3475c697913ba85805b4e49801b65e7a1d59289
diff --git a/libsysutils/src/SocketClient.cpp b/libsysutils/src/SocketClient.cpp
index 8e5f154..ff2315b 100644
--- a/libsysutils/src/SocketClient.cpp
+++ b/libsysutils/src/SocketClient.cpp
@@ -50,14 +50,22 @@
     }
 
     // Send the message including null character
+    if (sendData(msg, strlen(msg) + 1) != 0) {
+        SLOGW("Unable to send msg '%s'", msg);
+        return -1;
+    }
+    return 0;
+}
+
+int SocketClient::sendData(const void* data, int len) {
     int rc = 0;
-    const char *p = msg;
-    int brtw = strlen(msg) + 1;
+    const char *p = (const char*) data;
+    int brtw = len;
 
     pthread_mutex_lock(&mWriteMutex);
-    while(brtw) {
-        if ((rc = write(mSocket,p, brtw)) < 0) {
-            SLOGW("Unable to send msg '%s' (%s)", msg, strerror(errno));
+    while (brtw > 0) {
+        if ((rc = write(mSocket, p, brtw)) < 0) {
+            SLOGW("write error (%s)", strerror(errno));
             pthread_mutex_unlock(&mWriteMutex);
             return -1;
         } else if (!rc) {