+ if(setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)))
+ {
+ close(nfd);
+ syslog(LOG_ERR, _("System call `%s' failed: %m"),
+ "setsockopt");
+ return -1;
+ }
+
+ flags = fcntl(nfd, F_GETFL);
+ if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0)
+ {
+ close(nfd);
+ syslog(LOG_ERR, _("System call `%s' failed: %m"),
+ "fcntl");
+ return -1;
+ }
+
+ memset(&a, 0, sizeof(a));
+ a.sin_family = AF_INET;
+ a.sin_port = htons(myself->port);
+ a.sin_addr.s_addr = htonl(INADDR_ANY);
+
+ if(bind(nfd, (struct sockaddr *)&a, sizeof(struct sockaddr)))
+ {
+ close(nfd);
+ syslog(LOG_ERR, _("Can't bind to port %hd/udp: %m"), myself->port);
+ return -1;
+ }
+