diff --git a/.gitignore b/.gitignore index 545926a614494a725d11601335c9357513fa76db..60d510b52ff8b053920a23621c1da43590b12f62 100644 --- a/.gitignore +++ b/.gitignore @@ -74,7 +74,7 @@ src/libknot/libknot.h /src/knsec3hash /src/knsupdate /src/kzonecheck -/src/xdp-gun +/src/knot-xdp-gun # Generated tarballs /knot-*.tar.xz diff --git a/Knot.files b/Knot.files index c7cbeeb34694afb9b668f4596de46d36d1316ff1..fb7f10aa32cca5dd01168319bc5ac25c64039b36 100644 --- a/Knot.files +++ b/Knot.files @@ -480,9 +480,9 @@ src/utils/knsupdate/knsupdate_params.h src/utils/kzonecheck/main.c src/utils/kzonecheck/zone_check.c src/utils/kzonecheck/zone_check.h -src/utils/xdp-gun/load_queries.c -src/utils/xdp-gun/load_queries.h -src/utils/xdp-gun/main.c +src/utils/knot-xdp-gun/load_queries.c +src/utils/knot-xdp-gun/load_queries.h +src/utils/knot-xdp-gun/main.c tests-fuzz/fuzz_dname_from_str.c tests-fuzz/fuzz_dname_to_str.c tests-fuzz/fuzz_packet.c diff --git a/distro/deb/knot-dnsutils.install b/distro/deb/knot-dnsutils.install index e673039afc1488d95ff05a1a09d96a233809ae9f..b8e09c58d68f76adce78d9fe50083f0ef5ad78dd 100644 --- a/distro/deb/knot-dnsutils.install +++ b/distro/deb/knot-dnsutils.install @@ -1,6 +1,6 @@ usr/bin/kdig usr/bin/knsupdate -usr/bin/xdp-gun +usr/sbin/knot-xdp-gun usr/share/man/man1/kdig.1 usr/share/man/man1/knsupdate.1 -usr/share/man/man8/xdp-gun.1 +usr/share/man/man8/knot-xdp-gun.8 diff --git a/distro/deb/rules b/distro/deb/rules index b50650f23a6134a7a6afa080370dd1a598644ac3..6da22f04803685d00894fe50acc9b902a7bf5bee 100755 --- a/distro/deb/rules +++ b/distro/deb/rules @@ -66,15 +66,17 @@ override_dh_auto_install-arch: # rename knot.sample.conf to knot.conf mv $(CURDIR)/debian/tmp/etc/knot/knot.sample.conf $(CURDIR)/debian/tmp/etc/knot/knot.conf # Some workarounds for Debian Stretch and Ubuntu Xenial - @if [ -f "$(CURDIR)/debian/tmp/usr/bin/xdp-gun" ]; then \ + @if [ -f "$(CURDIR)/debian/tmp/usr/sbin/knot-xdp-gun" ]; then \ echo "Embedded XDP enabled"; \ elif [ -f "$(LIBKNOT_SYMBOLS)" ]; then \ echo "No XDP"; \ - printf '#!/bin/sh\n\necho "xdp-gun not available"\n' > $(CURDIR)/debian/tmp/usr/bin/xdp-gun; \ + touch $(CURDIR)/debian/tmp/usr/share/man/man8/knot-xdp-gun.8; \ + printf '#!/bin/sh\n\necho "knot-xdp-gun not available"\n' > $(CURDIR)/debian/tmp/usr/sbin/knot-xdp-gun; \ sed -i -E '/knot_xdp_|knot_eth_/d' $(LIBKNOT_SYMBOLS); \ else \ echo "No XDP, no libknot symbols"; \ - printf '#!/bin/sh\n\necho "xdp-gun not available"\n' > $(CURDIR)/debian/tmp/usr/bin/xdp-gun; \ + touch $(CURDIR)/debian/tmp/usr/share/man/man8/knot-xdp-gun.8; \ + printf '#!/bin/sh\n\necho "knot-xdp-gun not available"\n' > $(CURDIR)/debian/tmp/usr/sbin/knot-xdp-gun; \ fi override_dh_auto_install-indep: diff --git a/distro/rpm/knot.spec b/distro/rpm/knot.spec index 7751362bd13ad582f4c4a327ab01fa4552a3b480..e82f6e264ba4941d7db88b406574c0717635b780 100644 --- a/distro/rpm/knot.spec +++ b/distro/rpm/knot.spec @@ -246,8 +246,8 @@ systemd-tmpfiles --create %{_tmpfilesdir}/knot.conf &>/dev/null || : %{_bindir}/knsec3hash %{_bindir}/knsupdate %if 0%{?rhel} >= 8 || 0%{?suse_version} || 0%{?fedora} >= 31 -%{_sbindir}/xdp-gun -%{_mandir}/man8/xdp-gun.* +%{_sbindir}/knot-xdp-gun +%{_mandir}/man8/knot-xdp-gun.* %endif %{_mandir}/man1/kdig.* %{_mandir}/man1/khost.* diff --git a/doc/.gitignore b/doc/.gitignore index fa7777e3da62d10b13a7a7325c53805f9ce438b8..18b90cf057991f05e13f094acb5872388d23be9b 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -15,4 +15,4 @@ /man/knsec3hash.1 /man/knsupdate.1 /man/kzonecheck.1 -/man/xdp-gun.8 +/man/knot-xdp-gun.8 diff --git a/doc/Makefile.am b/doc/Makefile.am index 3f09426c0686d6053c516c96c02ab28fb58ca13b..dd4dc9abf4c1a513ee55ec914efb6ae9d31beafe 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -9,7 +9,7 @@ MANPAGES_IN = \ man/knsupdate.1in \ man/knsec3hash.1in \ man/kzonecheck.1in \ - man/xdp-gun.8in + man/knot-xdp-gun.8in MANPAGES_RST = \ man_knotc.rst \ @@ -21,7 +21,7 @@ MANPAGES_RST = \ man_knsupdate.rst \ man_knsec3hash.rst \ man_kzonecheck.rst \ - man_xdp-gun.rst + man_knot-xdp-gun.rst EXTRA_DIST = \ conf.py \ @@ -104,7 +104,7 @@ man_MANS += \ man/knsec3hash.1 if ENABLE_XDP -man_MANS += man/xdp-gun.8 +man_MANS += man/knot-xdp-gun.8 endif # ENABLE_XDP endif # HAVE_UTILS @@ -118,7 +118,7 @@ man/khost.1: man/khost.1in man/knsupdate.1: man/knsupdate.1in man/knsec3hash.1: man/knsec3hash.1in man/kzonecheck.1: man/kzonecheck.1in -man/xdp-gun.8: man/xdp-gun.8in +man/knot-xdp-gun.8: man/knot-xdp-gun.8in man_SUBST = $(AM_V_GEN)mkdir -p man; \ sed -e 's,[@]VERSION@,$(VERSION),' \ diff --git a/doc/conf.py b/doc/conf.py index c776cb5f8e7452f2a65492e218c7f7e6f9a0f702..f6a3c9d859eb6ee2704fc7a64e30d2be08a6b21e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -233,7 +233,7 @@ man_pages = [ ('man_knsec3hash', 'knsec3hash', 'Simple utility to compute NSEC3 hash', author, 1), ('man_knsupdate', 'knsupdate', 'Dynamic DNS update utility', author, 1), ('man_kzonecheck', 'kzonecheck', 'Knot DNS zone check tool', author, 1), - ('man_xdp-gun', 'xdp-gun', 'XDP-powered DNS benchmarking tool', author, 8), + ('man_knot-xdp-gun', 'knot-xdp-gun', 'XDP-powered DNS benchmarking tool', author, 8), ] # If true, show URL addresses after external links. diff --git a/doc/man/xdp-gun.8in b/doc/man/knot-xdp-gun.8in similarity index 89% rename from doc/man/xdp-gun.8in rename to doc/man/knot-xdp-gun.8in index 762f447f78d79c3bd2ac9eb838b28c3076140736..0090bc4545887e2edf2cc4315a4357e996fbe86b 100644 --- a/doc/man/xdp-gun.8in +++ b/doc/man/knot-xdp-gun.8in @@ -1,8 +1,8 @@ .\" Man page generated from reStructuredText. . -.TH "XDP-GUN" "8" "@RELEASE_DATE@" "@VERSION@" "Knot DNS" +.TH "KNOT-XDP-GUN" "8" "@RELEASE_DATE@" "@VERSION@" "Knot DNS" .SH NAME -xdp-gun \- XDP-powered DNS benchmarking tool +knot-xdp-gun \- XDP-powered DNS benchmarking tool . .nr rst2man-indent-level 0 . @@ -32,7 +32,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .SH SYNOPSIS .sp -\fBxdp\-gun\fP [\fIoptions\fP] \fB\-i\fP \fIfilename\fP \fItargetIP\fP +\fBknot\-xdp\-gun\fP [\fIoptions\fP] \fB\-i\fP \fIfilename\fP \fItargetIP\fP .SH DESCRIPTION .sp Powerful generator of DNS traffic, sending and receving packets through XDP. @@ -94,7 +94,7 @@ Exit status of 0 means successful operation. Any other exit status indicates an error. .SH EXAMPLES .sp -Queries file example: +Queries file: .INDENT 0.0 .INDENT 3.5 .sp @@ -111,13 +111,13 @@ abcd.example.com. DS D .UNINDENT .UNINDENT .sp -xdp\-gun examples: +Program usage: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -# xdp\-gun \-i ~/queries.txt 2001:1489:fffe:10::16 +# knot\-xdp\-gun \-i ~/queries.txt 2001:1489:fffe:10::16 .ft P .fi .UNINDENT @@ -127,7 +127,7 @@ xdp\-gun examples: .sp .nf .ft C -# xdp\-gun \-t 120 \-Q 6000000 \-i ~/queries.txt \-b 5 \-r \-p 8853 192.168.101.2 +# knot\-xdp\-gun \-t 120 \-Q 6000000 \-i ~/queries.txt \-b 5 \-r \-p 8853 192.168.101.2 .ft P .fi .UNINDENT diff --git a/doc/man_xdp-gun.rst b/doc/man_knot-xdp-gun.rst similarity index 86% rename from doc/man_xdp-gun.rst rename to doc/man_knot-xdp-gun.rst index 82c22ef15d9fa8df8f60a4b379584280211dfc12..b53869fc308a1b4ad2e2266dd1c87d2512849e8e 100644 --- a/doc/man_xdp-gun.rst +++ b/doc/man_knot-xdp-gun.rst @@ -1,12 +1,12 @@ .. highlight:: console -xdp-gun – DNS benchmarking tool -=============================== +knot-xdp-gun – DNS benchmarking tool +==================================== Synopsis -------- -:program:`xdp-gun` [*options*] **-i** *filename* *targetIP* +:program:`knot-xdp-gun` [*options*] **-i** *filename* *targetIP* Description ----------- @@ -76,7 +76,7 @@ an error. Examples -------- -Queries file example:: +Queries file:: abc6.example.com. AAAA nxdomain.example.com. A @@ -85,13 +85,13 @@ Queries file example:: ab.example.com. A D abcd.example.com. DS D -xdp-gun examples:: +Program usage:: - # xdp-gun -i ~/queries.txt 2001:1489:fffe:10::16 + # knot-xdp-gun -i ~/queries.txt 2001:1489:fffe:10::16 :: - # xdp-gun -t 120 -Q 6000000 -i ~/queries.txt -b 5 -r -p 8853 192.168.101.2 + # knot-xdp-gun -t 120 -Q 6000000 -i ~/queries.txt -b 5 -r -p 8853 192.168.101.2 See Also -------- diff --git a/doc/utilities.rst b/doc/utilities.rst index 2cd34e36ad3059952b8e6721398fe6e6e971d590..3baf85c4690d27185ed6aa396ce9c32e670cecbd 100644 --- a/doc/utilities.rst +++ b/doc/utilities.rst @@ -19,4 +19,4 @@ the server. This section collects manual pages for all provided binaries: man_knsec3hash man_knsupdate man_kzonecheck - man_xdp-gun + man_knot-xdp-gun diff --git a/src/utils/Makefile.inc b/src/utils/Makefile.inc index 2f51ce5ca0aeb366dda133bf8e29d9d5aa62db49..33c4caf1c3edf0ffdcbb449504781931630c40d0 100644 --- a/src/utils/Makefile.inc +++ b/src/utils/Makefile.inc @@ -1,3 +1,6 @@ +bin_PROGRAMS = +sbin_PROGRAMS = + if HAVE_LIBUTILS noinst_LTLIBRARIES += libknotus.la @@ -33,7 +36,7 @@ libknotus_la_SOURCES = \ endif HAVE_LIBUTILS if HAVE_UTILS -bin_PROGRAMS = kdig khost knsec3hash knsupdate +bin_PROGRAMS += kdig khost knsec3hash knsupdate kdig_SOURCES = \ utils/kdig/kdig_exec.c \ @@ -78,14 +81,14 @@ khost_LDADD += $(DNSTAP_LIBS) libdnstap.la endif HAVE_DNSTAP if ENABLE_XDP -bin_PROGRAMS += xdp-gun -xdp_gun_SOURCES = \ - utils/xdp-gun/load_queries.c \ - utils/xdp-gun/load_queries.h \ - utils/xdp-gun/main.c - -xdp_gun_CPPFLAGS = $(AM_CPPFLAGS) -xdp_gun_LDADD = libcontrib.la libknot.la $(pthread_LIBS) +sbin_PROGRAMS += knot-xdp-gun +knot_xdp_gun_SOURCES = \ + utils/knot-xdp-gun/load_queries.c \ + utils/knot-xdp-gun/load_queries.h \ + utils/knot-xdp-gun/main.c + +knot_xdp_gun_CPPFLAGS = $(AM_CPPFLAGS) +knot_xdp_gun_LDADD = libcontrib.la libknot.la $(pthread_LIBS) endif ENABLE_XDP endif HAVE_UTILS @@ -96,7 +99,7 @@ install-data-hook: $(INSTALL) -d $(DESTDIR)/@run_dir@ $(INSTALL) -d $(DESTDIR)/@storage_dir@ -sbin_PROGRAMS = knotc knotd +sbin_PROGRAMS += knotc knotd knotc_SOURCES = \ utils/knotc/commands.c \ diff --git a/src/utils/xdp-gun/load_queries.c b/src/utils/knot-xdp-gun/load_queries.c similarity index 100% rename from src/utils/xdp-gun/load_queries.c rename to src/utils/knot-xdp-gun/load_queries.c diff --git a/src/utils/xdp-gun/load_queries.h b/src/utils/knot-xdp-gun/load_queries.h similarity index 100% rename from src/utils/xdp-gun/load_queries.h rename to src/utils/knot-xdp-gun/load_queries.h diff --git a/src/utils/xdp-gun/main.c b/src/utils/knot-xdp-gun/main.c similarity index 96% rename from src/utils/xdp-gun/main.c rename to src/utils/knot-xdp-gun/main.c index 0ddaec05ec5b536a29a7afedbe66f8f9f22f7f09..9797e0bbccd96d5b7b74772aecd18b6472b654ba 100644 --- a/src/utils/xdp-gun/main.c +++ b/src/utils/knot-xdp-gun/main.c @@ -41,9 +41,9 @@ #include "load_queries.h" -#define PROGRAM_NAME "xdp-gun" +#define PROGRAM_NAME "knot-xdp-gun" -volatile bool dns_xdp_trigger = false; +volatile bool xdp_trigger = false; pthread_mutex_t global_mutex; uint64_t global_pkts_sent = 0; @@ -64,9 +64,9 @@ typedef struct { uint16_t target_port; uint32_t listen_port; // KNOT_XDP_LISTEN_PORT_ALL, KNOT_XDP_LISTEN_PORT_DROP unsigned n_threads, thread_id; -} dns_xdp_gun_ctx_t; +} xdp_gun_ctx_t; -const static dns_xdp_gun_ctx_t ctx_defaults = { +const static xdp_gun_ctx_t ctx_defaults = { .qps = 1000, .duration = 5000000UL, // usecs .at_once = 10, @@ -124,7 +124,7 @@ static void next_payload(struct pkt_payload **payload, int increment) } static int alloc_pkts(knot_xdp_msg_t *pkts, int npkts, struct knot_xdp_socket *xsk, - dns_xdp_gun_ctx_t *ctx, uint64_t tick, struct pkt_payload **payl) + xdp_gun_ctx_t *ctx, uint64_t tick, struct pkt_payload **payl) { uint64_t unique = (tick * ctx->n_threads + ctx->thread_id) * ctx->at_once; @@ -157,9 +157,9 @@ static int alloc_pkts(knot_xdp_msg_t *pkts, int npkts, struct knot_xdp_socket *x return KNOT_EOK; } -void *dns_xdp_gun_thread(void *_ctx) +void *xdp_gun_thread(void *_ctx) { - dns_xdp_gun_ctx_t *ctx = _ctx; + xdp_gun_ctx_t *ctx = _ctx; struct knot_xdp_socket *xsk; struct timespec timer; knot_xdp_msg_t pkts[ctx->at_once]; @@ -176,7 +176,7 @@ void *dns_xdp_gun_thread(void *_ctx) struct pollfd pfd = { knot_xdp_socket_fd(xsk), POLLIN, 0 }; - while (!dns_xdp_trigger) { + while (!xdp_trigger) { usleep(1000); } @@ -426,7 +426,7 @@ static int remoteIP2local(const char *ip_str, bool ipv6, char devname[], void *l return ret; } -static bool configure_target(char *target_str, dns_xdp_gun_ctx_t *ctx) +static bool configure_target(char *target_str, xdp_gun_ctx_t *ctx) { char *at = strrchr(target_str, '@'); int newport; @@ -497,7 +497,7 @@ static void print_help(void) { "-i queries_file dest_ip\n", PROGRAM_NAME); } -static bool get_opts(int argc, char *argv[], dns_xdp_gun_ctx_t *ctx) +static bool get_opts(int argc, char *argv[], xdp_gun_ctx_t *ctx) { struct option opts[] = { { "help", no_argument, NULL, 'h' }, @@ -585,7 +585,7 @@ static bool get_opts(int argc, char *argv[], dns_xdp_gun_ctx_t *ctx) int main(int argc, char *argv[]) { - dns_xdp_gun_ctx_t ctx = ctx_defaults, *thread_ctxs = NULL; + xdp_gun_ctx_t ctx = ctx_defaults, *thread_ctxs = NULL; pthread_t *threads = NULL; if (!get_opts(argc, argv, &ctx)) { @@ -620,13 +620,13 @@ int main(int argc, char *argv[]) pthread_mutex_init(&global_mutex, NULL); for (size_t i = 0; i < ctx.n_threads; i++) { - pthread_create(&threads[i], NULL, dns_xdp_gun_thread, &thread_ctxs[i]); + pthread_create(&threads[i], NULL, xdp_gun_thread, &thread_ctxs[i]); usleep((i + 1) * 10000); } - dns_xdp_trigger = true; + xdp_trigger = true; usleep(1000000); - dns_xdp_trigger = false; + xdp_trigger = false; for (size_t i = 0; i < ctx.n_threads; i++) { pthread_join(threads[i], NULL);