Hello community,

here is the log from the commit of package llmnrd for openSUSE:Factory checked 
in at 2017-10-23 16:52:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/llmnrd (Old)
 and      /work/SRC/openSUSE:Factory/.llmnrd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "llmnrd"

Mon Oct 23 16:52:29 2017 rev:3 rq:535803 version:0.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/llmnrd/llmnrd.changes    2017-06-20 
09:39:43.609723523 +0200
+++ /work/SRC/openSUSE:Factory/.llmnrd.new/llmnrd.changes       2017-10-23 
16:53:08.457108443 +0200
@@ -1,0 +2,9 @@
+Sun Oct 22 14:30:08 UTC 2017 - [email protected]
+
+- Update to version 0.5
+  * Poll for hostname changes
+  * Fix missing terminating NULL byte in llmnr-query
+  * Manpages for llmnrd and llmnr-query
+  * Additional compiler warnings enabled
+
+-------------------------------------------------------------------

Old:
----
  llmnrd-0.4.tar.gz

New:
----
  llmnrd-0.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ llmnrd.spec ++++++
--- /var/tmp/diff_new_pack.p2oJgw/_old  2017-10-23 16:53:08.933086166 +0200
+++ /var/tmp/diff_new_pack.p2oJgw/_new  2017-10-23 16:53:08.933086166 +0200
@@ -1,6 +1,7 @@
 #
 # spec file for package llmnrd
 #
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2017, Martin Hauke <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
@@ -17,7 +18,7 @@
 
 
 Name:           llmnrd
-Version:        0.4
+Version:        0.5
 Release:        0
 Summary:        Link-Local Multicast Resolution (LLMNR) Daemon
 License:        GPL-2.0
@@ -56,7 +57,8 @@
 install -Dpm0644 %{SOURCE2} 
"%{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.llmnrd"
 ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcllmnrd
 install -Dpm0644 %{SOURCE3} 
%{buildroot}%{_sysconfdir}/apparmor.d/usr.sbin.llmnrd
-
+install -Dpm0644 doc/llmnr-query.1 %{buildroot}%{_mandir}/man1/
+install -Dpm0644 doc/llmnrd.8 %{buildroot}%{_mandir}/man8/
 
 %pre
 %service_add_pre llmnrd.service
@@ -80,5 +82,7 @@
 %{_unitdir}/llmnrd.service
 %{_localstatedir}/adm/fillup-templates/sysconfig.llmnrd
 %config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.llmnrd
+%{_mandir}/man1/llmnr-query.1%{ext_man}
+%{_mandir}/man8/llmnrd.8%{ext_man}
 
 %changelog

++++++ llmnrd-0.4.tar.gz -> llmnrd-0.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/Makefile new/llmnrd-0.5/Makefile
--- old/llmnrd-0.4/Makefile     2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/Makefile     2017-10-18 09:25:44.000000000 +0200
@@ -2,20 +2,23 @@
 #
 # Copyright (C) 2014-2017 Tobias Klauser <[email protected]>
 
-VERSION = 0.4
+VERSION = 0.5
 
 # llmnrd binary
 D_P    = llmnrd
 D_OBJS = llmnr.o iface.o socket.o util.o llmnrd.o
 D_LIBS =
+D_MAN  = $(D_P).8
 
 # llmnr-query binary
 Q_P    = llmnr-query
 Q_OBJS = util.o llmnr-query.o
 Q_LIBS =
+Q_MAN  = $(Q_P).1
 
 CC     = $(CROSS_COMPILE)gcc
 INSTALL        = install
+GZIP   = gzip -9 -c
 
 CPPFLAGS ?=
 LDFLAGS        ?=
@@ -31,10 +34,20 @@
   CFLAGS_MIN += -g -DDEBUG
 endif
 
-CFLAGS_WARN := -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
\
-       -Wdeclaration-after-statement -Wsign-compare -Winit-self                
\
-       -Wformat-nonliteral -Wformat-security -Wmissing-format-attribute        
\
-       -Wundef -Wbad-function-cast -Waggregate-return -Wunused -Wwrite-strings
+CFLAGS_WARN := -Wextra                         \
+       -Waggregate-return              \
+       -Wbad-function-cast             \
+       -Wdeclaration-after-statement   \
+       -Wformat-nonliteral             \
+       -Wformat-security               \
+       -Wmissing-declarations          \
+       -Wmissing-format-attribute      \
+       -Wmissing-prototypes            \
+       -Wsign-compare                  \
+       -Wstrict-prototypes             \
+       -Wundef                         \
+       -Wunused                        \
+       -Wwrite-strings
 
 CFLAGS ?= -O2 $(CFLAGS_WARN)
 override CFLAGS := $(CFLAGS_MIN) $(CFLAGS)
@@ -52,6 +65,8 @@
 
 BINDIR = $(prefix)/bin
 SBINDIR        = $(prefix)/sbin
+MAN1DIR = $(prefix)/share/man/man1
+MAN8DIR = $(prefix)/share/man/man8
 DESTDIR        =
 
 all: $(D_P) $(Q_P)
@@ -72,11 +87,17 @@
        @echo "  INSTALL $(D_P)"
        $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(SBINDIR)
        $(Q)$(INSTALL) -m 755 $(D_P) $(DESTDIR)$(SBINDIR)/$(D_P)
+       $(Q)$(GZIP) doc/$(D_MAN) > $(D_MAN).gz
+       $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(MAN8DIR)
+       $(Q)$(INSTALL) -m 644 $(D_MAN).gz $(DESTDIR)$(MAN8DIR)/$(D_MAN).gz
 
 install_$(Q_P): $(Q_P)
        @echo "  INSTALL $(Q_P)"
        $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)
        $(Q)$(INSTALL) -m 755 $(Q_P) $(DESTDIR)$(BINDIR)/$(Q_P)
+       $(Q)$(GZIP) doc/$(Q_MAN) > $(Q_MAN).gz
+       $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(MAN1DIR)
+       $(Q)$(INSTALL) -m 644 $(Q_MAN).gz $(DESTDIR)$(MAN1DIR)/$(Q_MAN).gz
 
 install: install_$(D_P) install_$(Q_P)
 
@@ -84,6 +105,8 @@
        @echo "  CLEAN"
        $(Q)rm -f $(D_OBJS) $(D_P)
        $(Q)rm -f $(Q_OBJS) $(Q_P)
+       $(Q)rm -f $(D_P).8.gz
+       $(Q)rm -f $(Q_P).1.gz
 
 # Maintainer targets
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/README.md new/llmnrd-0.5/README.md
--- old/llmnrd-0.4/README.md    2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/README.md    2017-10-18 09:25:44.000000000 +0200
@@ -100,8 +100,9 @@
 * Martin Hauke
 * Michael Evertz (@dvl-mevertz)
 * Pali Rohár
-* Schimmelreiter (@Schimmelreiter)
-* SviMik (@svimik)
+* @Schimmelreiter
+* @svimik
+* @tbetker
 
 Thanks a lot!
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/doc/llmnr-query.1 
new/llmnrd-0.5/doc/llmnr-query.1
--- old/llmnrd-0.4/doc/llmnr-query.1    1970-01-01 01:00:00.000000000 +0100
+++ new/llmnrd-0.5/doc/llmnr-query.1    2017-10-18 09:25:44.000000000 +0200
@@ -0,0 +1,40 @@
+.TH LLMNR-QUERY 1 "07 March 2017" llmnrd llmnrd
+.SH NAME
+llmnr-query \- LLMNR (RFC 4795) query tool
+.SH SYNOPSIS
+\fBllmnr-query\fR [\fIoptions\fR] \fIname\fR
+.SH DESCRIPTION
+Send LLMNR queries to the LLMNR multicast address (224.0.0.252 for IPv4,
+ff02:0:0:0:0:0:1:3 for IPv6). \fIname\fR specifies the hostname to query.
+.SH OPTIONS
+.TP
+.B -c <num>, --count <num>
+Number of queries to send (default: 1).
+.TP
+.B -d <num>, --id <num>
+Set LLMNR transaction id (default: 0).
+.TP
+.B -i <num>, --interval <num>
+Set interval between queries in milliseconds (default: 500).
+.TP
+.B -I <dev>, --interface <dev>
+Send multicast query over specified interface, e.g. eth0, wlan0.
+.TP
+.B -t <num>, --timeout <num>
+Set time to wait for reply in milliseconds (default: 1000).
+.TP
+.B -T <type>, --type <type>
+Set query type. Must be one of A, AAAA, ANY (default: ANY).
+.TP
+.B -6, --ipv6
+End queries over IPv6.
+.TP
+.B -h, --help
+Show usage information.
+.TP
+.B -V, --version
+Show llmnr-query version.
+.SH SEE ALSO
+.BR llmnrd(8)
+.SH AUTHOR
+Tobias Klauser <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/doc/llmnrd.8 new/llmnrd-0.5/doc/llmnrd.8
--- old/llmnrd-0.4/doc/llmnrd.8 1970-01-01 01:00:00.000000000 +0100
+++ new/llmnrd-0.5/doc/llmnrd.8 2017-10-18 09:25:44.000000000 +0200
@@ -0,0 +1,38 @@
+.TH LLMNRD 8 "07 March 2017" llmnrd llmnrd
+.SH NAME
+llmnrd \- LLMNR (RFC 4795) responder daemon
+.SH SYNOPSIS
+\fBllmnrd\fR [\fIoptions\fR]
+.SH DESCRIPTION
+.B llmnrd
+is a user space daemon implementing the Link-Local Multicast Name Resolution
+(LLMNR) protocol according to RFC 4795. It will respond to name resolution
+queries sent by Windows clients in networks where no DNS server is available.
+Both IPv4 and IPv6 are supported.
+.SH OPTIONS
+.TP
+.B -H <name>, --hostname <name>
+Manually set hostname to respond with. By default the system hostname is used.
+.TP
+.B -i <dev>, --interface <dev>
+Bind socket to a specific interface, e.g. eth0, wlan0.
+.TP
+.B -p <num>, --port <num>
+Set port number to listen on. By default the port 5355 as specified in RFC 
4795 is
+used.
+.TP
+.B -6, --ipv6
+Enable LLMNR name resolution over IPv6.
+.TP
+.B -d, --daemonize
+Run llmnrd as daemon in the background.
+.TP
+.B -h, --help
+Show usage information.
+.TP
+.B -V, --version
+Show llmnrd version.
+.SH SEE ALSO
+.BR llmnr-query(1)
+.SH AUTHOR
+Tobias Klauser <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/llmnr-query.c new/llmnrd-0.5/llmnr-query.c
--- old/llmnrd-0.4/llmnr-query.c        2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/llmnr-query.c        2017-10-18 09:25:44.000000000 +0200
@@ -344,12 +344,13 @@
                                        if (ptr < p->size - 1) {
                                                uint8_t nnl = p->data[ptr];
                                                strncpy(name, (char 
*)&p->data[ptr + 1], nnl);
+                                               name[nnl] = '\0';
                                        } else
                                                strncpy(name, "<invalid>", 
LLMNR_LABEL_MAX_SIZE);
-                               } else
+                               } else {
                                        strncpy(name, (char *)pkt_put(p, nl + 
1), nl);
-
-                               name[LLMNR_LABEL_MAX_SIZE] = '\0';
+                                       name[nl] = '\0';
+                               }
 
                                type = htons(pkt_put_extract_u16(p));
                                clss = htons(pkt_put_extract_u16(p));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/llmnr.c new/llmnrd-0.5/llmnr.c
--- old/llmnrd-0.4/llmnr.c      2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/llmnr.c      2017-10-18 09:25:44.000000000 +0200
@@ -42,12 +42,16 @@
 /* Host name in DNS name format (length octet + name + 0 byte) */
 static char llmnr_hostname[LLMNR_LABEL_MAX_SIZE + 2];
 
-void llmnr_init(const char *hostname, bool ipv6)
+void llmnr_set_hostname(const char *hostname)
 {
        llmnr_hostname[0] = strlen(hostname);
        strncpy(&llmnr_hostname[1], hostname, LLMNR_LABEL_MAX_SIZE);
        llmnr_hostname[LLMNR_LABEL_MAX_SIZE + 1] = '\0';
+}
 
+void llmnr_init(const char *hostname, bool ipv6)
+{
+       llmnr_set_hostname(hostname);
        llmnr_ipv6 = ipv6;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/llmnr.h new/llmnrd-0.5/llmnr.h
--- old/llmnrd-0.4/llmnr.h      2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/llmnr.h      2017-10-18 09:25:44.000000000 +0200
@@ -21,6 +21,7 @@
 
 #include <stdbool.h>
 
+void llmnr_set_hostname(const char *hostname);
 void llmnr_init(const char *hostname, bool ipv6);
 void llmnr_recv(int sock);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/llmnrd-0.4/llmnrd.c new/llmnrd-0.5/llmnrd.c
--- old/llmnrd-0.4/llmnrd.c     2017-02-10 09:33:42.000000000 +0100
+++ new/llmnrd-0.5/llmnrd.c     2017-10-18 09:25:44.000000000 +0200
@@ -28,6 +28,10 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
 #include <sys/ioctl.h>
 #include <sys/param.h>
 
@@ -43,6 +47,7 @@
 static bool llmnrd_running = true;
 static int llmnrd_sock_ipv4 = -1;
 static int llmnrd_sock_ipv6 = -1;
+static int llmnrd_fd_hostname = -1;
 
 static const char *short_opts = "H:i:p:6dhV";
 static const struct option long_opts[] = {
@@ -74,7 +79,7 @@
 static void __noreturn version_and_exit(void)
 {
        fprintf(stdout, "llmnrd %s %s\n"
-                       "Copyright (C) 2014-2016 Tobias Klauser 
<[email protected]>\n"
+                       "Copyright (C) 2014-2017 Tobias Klauser 
<[email protected]>\n"
                        "Licensed under the GNU General Public License, version 
2\n",
                        VERSION_STRING, GIT_VERSION);
        exit(EXIT_SUCCESS);
@@ -129,6 +134,22 @@
        }
 }
 
+static void hostname_change_handle(char *hostname, size_t maxlen)
+{
+       char *newname;
+
+       newname = xzalloc(maxlen);
+       if (gethostname(newname, maxlen) == 0) {
+               newname[maxlen - 1] = '\0';
+               if (strncmp(hostname, newname, maxlen) != 0) {
+                       log_info("Hostname changed to %s\n", newname);
+                       strncpy(hostname, newname, maxlen);
+                       llmnr_set_hostname(hostname);
+               }
+       }
+       free(newname);
+}
+
 int main(int argc, char **argv)
 {
        int c, ret = -1;
@@ -183,6 +204,8 @@
                        return EXIT_FAILURE;
                }
                hostname[MAXHOSTNAMELEN - 1] = '\0';
+
+               llmnrd_fd_hostname = open("/proc/sys/kernel/hostname", 
O_RDONLY|O_CLOEXEC|O_NDELAY);
        }
 
        if (daemonize) {
@@ -216,10 +239,12 @@
        nfds = max(llmnrd_sock_ipv4, llmnrd_sock_rtnl);
        if (llmnrd_sock_ipv6 >= 0)
                nfds = max(nfds, llmnrd_sock_ipv6);
+       if (llmnrd_fd_hostname >= 0)
+               nfds = max(nfds, llmnrd_fd_hostname);
        nfds += 1;
 
        while (llmnrd_running) {
-               fd_set rfds;
+               fd_set rfds, efds;
 
                FD_ZERO(&rfds);
                FD_SET(llmnrd_sock_ipv4, &rfds);
@@ -227,7 +252,11 @@
                if (llmnrd_sock_ipv6 >= 0)
                        FD_SET(llmnrd_sock_ipv6, &rfds);
 
-               ret = select(nfds, &rfds, NULL, NULL, NULL);
+               FD_ZERO(&efds);
+               if (llmnrd_fd_hostname >= 0)
+                       FD_SET(llmnrd_fd_hostname, &efds);
+
+               ret = select(nfds, &rfds, NULL, &efds, NULL);
                if (ret < 0) {
                        if (errno != EINTR)
                                log_err("Failed to select() on socket: %s\n", 
strerror(errno));
@@ -242,6 +271,8 @@
                                llmnr_recv(llmnrd_sock_ipv4);
                        if (llmnrd_sock_ipv6 >= 0 && FD_ISSET(llmnrd_sock_ipv6, 
&rfds))
                                llmnr_recv(llmnrd_sock_ipv6);
+                       if (llmnrd_fd_hostname >= 0 && 
FD_ISSET(llmnrd_fd_hostname, &efds))
+                               hostname_change_handle(hostname, 
MAXHOSTNAMELEN);
                }
        }
 


Reply via email to