aboutsummaryrefslogtreecommitdiff
path: root/sbin/dumpon
diff options
context:
space:
mode:
authorBryan Drewery <bdrewery@FreeBSD.org>2021-07-24 21:18:23 +0000
committerBryan Drewery <bdrewery@FreeBSD.org>2021-07-26 20:08:59 +0000
commitaccff08c2f6a8d1e36118993db5a792862cc3839 (patch)
treebbf89d5e9c09bbb0edb332820ff3138465fc1f02 /sbin/dumpon
parent372557d8c3d37dd0c1d9be56513a436393963848 (diff)
downloadsrc-accff08c2f6a8d1e36118993db5a792862cc3839.tar.gz
src-accff08c2f6a8d1e36118993db5a792862cc3839.zip
dumpon: Fix unconfiguring netdump with "off" and "/dev/null".
Netdump has its own configuration tracking such that ioctl(/dev/null, DIOCSKERNELDUMP) does a dumper_remove() but does not notify netdump about the removal. Simply sending the same ioctl to /dev/netdump handles the situation. Reviewed by: markj, cem Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D31300
Diffstat (limited to 'sbin/dumpon')
-rw-r--r--sbin/dumpon/dumpon.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sbin/dumpon/dumpon.c b/sbin/dumpon/dumpon.c
index ef1eb3defc98..e83994d01314 100644
--- a/sbin/dumpon/dumpon.c
+++ b/sbin/dumpon/dumpon.c
@@ -550,6 +550,24 @@ main(int argc, char *argv[])
} else
dev = argv[0];
netdump = false;
+
+ if (strcmp(dev, _PATH_DEVNULL) == 0) {
+ /*
+ * Netdump has its own configuration tracking that
+ * is not removed when using /dev/null.
+ */
+ fd = open(_PATH_NETDUMP, O_RDONLY);
+ if (fd != -1) {
+ bzero(&ndconf, sizeof(ndconf));
+ ndconf.kda_index = KDA_REMOVE_ALL;
+ ndconf.kda_af = AF_INET;
+ error = ioctl(fd, DIOCSKERNELDUMP, &ndconf);
+ if (error != 0)
+ err(1, "ioctl(%s, DIOCSKERNELDUMP)",
+ _PATH_NETDUMP);
+ close(fd);
+ }
+ }
} else
usage();