summaryrefslogtreecommitdiffstats
path: root/workspace/networkDiscovery/dhcpcd/logger.c
diff options
context:
space:
mode:
Diffstat (limited to 'workspace/networkDiscovery/dhcpcd/logger.c')
-rw-r--r--workspace/networkDiscovery/dhcpcd/logger.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/workspace/networkDiscovery/dhcpcd/logger.c b/workspace/networkDiscovery/dhcpcd/logger.c
index 99f845f..a68fe65 100644
--- a/workspace/networkDiscovery/dhcpcd/logger.c
+++ b/workspace/networkDiscovery/dhcpcd/logger.c
@@ -27,6 +27,11 @@
#define SYSLOG_NAMES
+#define COM_CH "./com_ch"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
@@ -34,9 +39,13 @@
#include <string.h>
#include <syslog.h>
+
#include "common.h"
#include "logger.h"
+/*sockets for the logger and the qt-reader */
+int s, ns;
+
static int loglevel = LOG_WARNING;
static char logprefix[12] = {0};
@@ -117,3 +126,46 @@ void logger (int level, const char *fmt, ...)
va_end (p);
}
+void initQtLoggerSocket ()
+{
+ /*variables for the communication over sockets with Qt*/
+ int fromlen;
+ struct sockaddr_un soaddr, faddr;
+ int slen;
+
+ if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+ perror("server: socket");
+ exit(1);
+ }
+
+ soaddr.sun_family = AF_UNIX;
+ strcpy(soaddr.sun_path, COM_CH);
+ unlink(COM_CH);
+ slen = strlen(soaddr.sun_path) + sizeof(soaddr.sun_family);
+ if (bind(s, (struct sockaddr *) &soaddr, slen) < 0) {
+ perror("server: bind");
+ exit(1);
+ }
+
+ if (listen(s, 5) < 0) {
+ perror("server: listen");
+ exit(1);
+ }
+
+ if ((ns = accept(s, &faddr, &fromlen)) < 0) {
+ perror("server: accept");
+ exit(1);
+ }
+}
+
+void closeQtLoggerSocket (){
+ close(s);
+}
+
+void sendToQt (char *msg) {
+ if(send(ns,msg, strlen(msg),0) < 0)
+ {
+ fprintf(stdout,"logger: failed to send message: %s", msg);
+ }
+}
+