Link-Local Multicast Resolution (LLMNR) Daemon for Linux
C Makefile C++
Clone or download
tklauser llmnrd: ignore queries with TC bit set
As per RFC 4795, section 2.1.1:

The 'TC' bit MUST NOT be set in an LLMNR query and, if set, is ignored
by an LLMNR responder.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Latest commit 4dc24d0 Feb 16, 2018
Permalink
Failed to load latest commit information.
doc doc: add manpages for llmnrd and llmnr-query Mar 7, 2017
etc Add simple systemd service file Aug 2, 2016
.gitattributes debian: remove debian packaging files Feb 8, 2017
.gitignore make: install manpages in 'install' target Mar 7, 2017
.travis.yml build: travis: Set up Coverity scan Apr 28, 2016
COPYING COPYING: Add verbatim copy of GPLv2 Apr 28, 2016
Makefile make: remove CROSS_COMPILE variable Feb 12, 2018
README.md make: remove CROSS_COMPILE variable Feb 12, 2018
compiler.h util: Add printf format GCC attribute to panic() function Jan 13, 2017
err.h Initial import, still work in progress Feb 6, 2015
iface.c iface: Merge duplicate code Feb 8, 2017
iface.h iface: Merge duplicate code Feb 8, 2017
list.h Initial import, still work in progress Feb 6, 2015
llmnr-packet.h llmnr-packet: Correct LLMNR RFC number Aug 2, 2016
llmnr-query.c llmnr-query: add option to set conflict bit in LLMNR header flags Feb 13, 2018
llmnr.c llmnrd: ignore queries with TC bit set Feb 16, 2018
llmnr.h llmnrd: Poll hostname Feb 28, 2017
llmnrd.c llmnrd: Update copyright in version information Feb 28, 2017
log.h log: Add log_dbg() to facilitate debugging Feb 16, 2015
pkt.h llmnr-query: Extract LLMNR packet data in an alignment-safe way Feb 8, 2017
socket.c socket: ignore EADDRINUSE when joining multicast group Feb 7, 2017
socket.h llmnrd: Allow to bind to a specific network interface Aug 17, 2016
util.c Initial import, still work in progress Feb 6, 2015
util.h util: Add printf format GCC attribute to panic() function Jan 13, 2017

README.md

llmnrd - Link-Local Multicast Resolution Daemon

Build Status Coverity Status

llmnrd is a daemon implementing the Link-Local Multicast Name Resolution (LLMNR) protocol according to RFC 4795. It currently only supports Linux, as it uses the netlink kernel interface.

llmnrd will respond to name resolution queries sent by Windows clients in networks where no DNS server is available. It supports both IPv4 and IPv6.

Installation

To build and install llmnrd use the following commands:

$ make
$ sudo make install

By default, the llmnrd binary will be installed to /usr/local/sbin. To install the binary to a different installation path, use:

$ make
$ sudo make prefix=<path> install

Cross-Compilation

To cross-compile llmnrd for a different architecture, set the CC make variable to the corresponding cross-compiler. To e.g. build it using the arm-linux-gnueabihf toolchain use:

$ make CC=arm-linux-gnueabihf-gcc

When cross-compiling, you usually don't want to install the generated binary to your root filesystem, but to the sysroot of a cross-compiled system. Use the DESTDIR variable to change the installation destination path, e.g.

$ make DESTDIR=$HOME/sysroot/ prefix=/usr install

Usage

To run llmnrd in the default mode (listening on UDP port 5355):

$ llmnrd

By default, LLMNR name resolution is only possible over IPv4. To additionally enable LLMNR name resolution over IPv6 use:

$ llmnrd -6

Use llmnrd --help to show additional usage information.

Additionally, the llmnr-query utility is shipped together with llmnrd and can be used to send customized LLMNR queries:

$ llmnr-query <hostname>

Use llmnr-query --help to show additional usage information.

License

llmnrd is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License.

llmnrd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please see the COPYING file for the full license text.

Contributors

llmnrd is authored and maintained by Tobias Klauser tklauser@distanz.ch

The following people contributed patches and ideas, found and reported bugs or otherwise helped in the development of llmnrd:

  • Elazar Leibovich (@elazarl)
  • Martin Hauke
  • Michael Evertz (@dvl-mevertz)
  • Pali Rohár
  • @Schimmelreiter
  • @svimik
  • @tbetker

Thanks a lot!

References