OSDN Git Service

Initial release of mdns interface.
[android-x86/system-netd.git] / main.cpp
index 2a1e7f0..b466e42 100644 (file)
--- a/main.cpp
+++ b/main.cpp
 #include "CommandListener.h"
 #include "NetlinkManager.h"
 #include "DnsProxyListener.h"
+#include "MDnsSdListener.h"
 
 static void coldboot(const char *path);
 static void sigchld_handler(int sig);
+static void blockSigpipe();
 
 int main() {
 
     CommandListener *cl;
     NetlinkManager *nm;
     DnsProxyListener *dpl;
+    MDnsSdListener *mdnsl;
 
     ALOGI("Netd 1.0 starting");
 
 //    signal(SIGCHLD, sigchld_handler);
+    blockSigpipe();
 
     if (!(nm = NetlinkManager::Instance())) {
         ALOGE("Unable to create NetlinkManager");
@@ -70,6 +74,11 @@ int main() {
         exit(1);
     }
 
+    mdnsl = new MDnsSdListener();
+    if (mdnsl->startListener()) {
+        ALOGE("Unable to start MDnsSdListener (%s)", strerror(errno));
+        exit(1);
+    }
     /*
      * Now that we're up, we can respond to commands
      */
@@ -136,3 +145,13 @@ static void sigchld_handler(int sig) {
     pid_t pid = wait(NULL);
     ALOGD("Child process %d exited", pid);
 }
+
+static void blockSigpipe()
+{
+    sigset_t mask;
+
+    sigemptyset(&mask);
+    sigaddset(&mask, SIGPIPE);
+    if (sigprocmask(SIG_BLOCK, &mask, NULL) != 0)
+        ALOGW("WARNING: SIGPIPE not blocked\n");
+}