+ case 1: {
+ if((inlen = read(request_fd, &request, sizeof(request))) != sizeof(request)) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading request from %s %s: %s", device_info,
+ device, strerror(errno));
+ event_exit();
+ return false;
+ }
+
+ if(request.magic != 0xfeedface || request.version != 3 || request.type != REQ_NEW_CONTROL) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Unknown magic %x, version %d, request type %d from %s %s",
+ request.magic, request.version, request.type, device_info, device);
+ event_exit();
+ return false;
+ }
+
+ if(connect(write_fd, (const struct sockaddr *)&request.sock, sizeof(request.sock)) < 0) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Could not bind write %s: %s", device_info, strerror(errno));
+ event_exit();
+ return false;
+ }
+
+ write(request_fd, &data_sun, sizeof(data_sun));
+ device_fd = data_fd;
+
+ logger(DEBUG_ALWAYS, LOG_INFO, "Connection with UML established");