diff options
author | Bryan Drewery <bdrewery@FreeBSD.org> | 2021-07-24 21:18:23 +0000 |
---|---|---|
committer | Bryan Drewery <bdrewery@FreeBSD.org> | 2021-07-26 20:08:59 +0000 |
commit | accff08c2f6a8d1e36118993db5a792862cc3839 (patch) | |
tree | bbf89d5e9c09bbb0edb332820ff3138465fc1f02 /sbin/dumpon | |
parent | 372557d8c3d37dd0c1d9be56513a436393963848 (diff) | |
download | src-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.c | 18 |
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(); |