Module Name: src
Committed By: christos
Date: Tue Jun 7 16:27:24 UTC 2022
Modified Files:
src/lib/libnpf: npf.c
Log Message:
Add method to initialize errinfo so that npfctl does not print random strings.
To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/lib/libnpf/npf.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libnpf/npf.c
diff -u src/lib/libnpf/npf.c:1.49 src/lib/libnpf/npf.c:1.50
--- src/lib/libnpf/npf.c:1.49 Sat May 30 10:16:56 2020
+++ src/lib/libnpf/npf.c Tue Jun 7 12:27:24 2022
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.49 2020/05/30 14:16:56 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.50 2022/06/07 16:27:24 christos Exp $");
#include <sys/types.h>
#include <sys/mman.h>
@@ -206,6 +206,20 @@ _npf_rules_process(nl_config_t *ncf, nvl
}
/*
+ * _npf_init_error: initialize the error structure with the message
+ * from the current error number
+ */
+static int
+_npf_init_error(int error, npf_error_t *errinfo)
+{
+ if (error && errinfo) {
+ memset(errinfo, 0, sizeof(*errinfo));
+ errinfo->error_msg = strerror(error);
+ }
+ return error;
+}
+
+/*
* _npf_extract_error: check the error number field and extract the
* error details into the npf_error_t structure.
*/
@@ -346,7 +360,7 @@ npf_config_submit(nl_config_t *ncf, int
error = _npf_xfer_fd(fd, IOC_NPF_LOAD, ncf->ncf_dict, &resp);
if (error) {
- return error;
+ return _npf_init_error(errno, errinfo);
}
error = _npf_extract_error(resp, errinfo);
nvlist_destroy(resp);
@@ -1258,12 +1272,12 @@ npf_table_replace(int fd, nl_table_t *tl
/* Ensure const tables are built. */
if ((error = _npf_table_build_const(tl)) != 0) {
- return error;
+ return _npf_init_error(errno, errinfo);
}
error = _npf_xfer_fd(fd, IOC_NPF_TABLE_REPLACE, tl->table_dict, &resp);
if (error) {
assert(resp == NULL);
- return errno;
+ return _npf_init_error(errno, errinfo);
}
error = _npf_extract_error(resp, errinfo);
nvlist_destroy(resp);