git: 2f19661ace75 - stable/12 - libpfctl: fix creatorid endianness
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 18 Feb 2022 10:46:05 UTC
The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=2f19661ace75a35a69cf09fa89a7bbfac6a4d098 commit 2f19661ace75a35a69cf09fa89a7bbfac6a4d098 Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2022-01-21 16:50:15 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2022-02-18 10:15:31 +0000 libpfctl: fix creatorid endianness We provide the hostid (which is the state creatorid) to the kernel as a big endian number (see pfctl/pfctl.c pfctl_set_hostid()), so convert it back to system endianness when we get it from the kernel. This avoids a confusing mismatch between the value the user configures and the value displayed in the state. MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D33989 (cherry picked from commit 735748f30aad80593e2b7f5f5f175d64484c5eeb) --- lib/libpfctl/libpfctl.c | 4 ++-- sbin/pfctl/pfctl_parser.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 9252f64969bb..e77bdee93deb 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -188,7 +188,7 @@ pfctl_get_status(int dev) status->running = nvlist_get_bool(nvl, "running"); status->since = nvlist_get_number(nvl, "since"); status->debug = nvlist_get_number(nvl, "debug"); - status->hostid = nvlist_get_number(nvl, "hostid"); + status->hostid = ntohl(nvlist_get_number(nvl, "hostid")); status->states = nvlist_get_number(nvl, "states"); status->src_nodes = nvlist_get_number(nvl, "src_nodes"); @@ -809,7 +809,7 @@ pf_state_export_to_state(struct pfctl_state *ps, const struct pf_state_export *s ps->packets[1] = s->packets[1]; ps->bytes[0] = s->bytes[0]; ps->bytes[1] = s->bytes[1]; - ps->creatorid = s->creatorid; + ps->creatorid = ntohl(s->creatorid); ps->key[0].proto = s->proto; ps->key[1].proto = s->proto; ps->key[0].af = s->af; diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c index adf9255f0c84..3242404954bc 100644 --- a/sbin/pfctl/pfctl_parser.c +++ b/sbin/pfctl/pfctl_parser.c @@ -541,7 +541,7 @@ print_status(struct pfctl_status *s, struct pfctl_syncookies *cookies, int opts) } if (opts & PF_OPT_VERBOSE) { - printf("Hostid: 0x%08x\n", ntohl(s->hostid)); + printf("Hostid: 0x%08x\n", s->hostid); for (i = 0; i < PF_MD5_DIGEST_LENGTH; i++) { buf[i + i] = hex[s->pf_chksum[i] >> 4];