aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
Diffstat (limited to 'sbin')
-rw-r--r--sbin/bsdlabel/bsdlabel.82
-rw-r--r--sbin/bsdlabel/bsdlabel.c2
-rw-r--r--sbin/devd/snd.conf5
-rw-r--r--sbin/fdisk/fdisk.84
-rw-r--r--sbin/fdisk/fdisk.c2
-rw-r--r--sbin/geom/core/geom.c154
-rw-r--r--sbin/ifconfig/ifbridge.c8
-rw-r--r--sbin/ifconfig/ifconfig.83
-rw-r--r--sbin/ipf/ipfs/ipfs.c2
-rw-r--r--sbin/ipfw/dummynet.c4
-rw-r--r--sbin/ipfw/ipfw2.c8
-rw-r--r--sbin/mount/mount.83
-rw-r--r--sbin/nvmecontrol/perftest.c2
-rw-r--r--sbin/pfctl/parse.y2
-rw-r--r--sbin/pfctl/pfctl.c11
-rw-r--r--sbin/pfctl/pfctl.h2
-rw-r--r--sbin/pfctl/pfctl_radix.c4
-rw-r--r--sbin/pfctl/pfctl_table.c13
18 files changed, 125 insertions, 106 deletions
diff --git a/sbin/bsdlabel/bsdlabel.8 b/sbin/bsdlabel/bsdlabel.8
index abea59756aea..cdf3cc249856 100644
--- a/sbin/bsdlabel/bsdlabel.8
+++ b/sbin/bsdlabel/bsdlabel.8
@@ -62,7 +62,7 @@
.Sh DEPRECATION NOTICE
.Nm
is deprecated and is not available in
-.Fx 15.0
+.Fx 16.0
or later.
Use
.Xr gpart 8
diff --git a/sbin/bsdlabel/bsdlabel.c b/sbin/bsdlabel/bsdlabel.c
index a68ee377a97c..912833ec12e3 100644
--- a/sbin/bsdlabel/bsdlabel.c
+++ b/sbin/bsdlabel/bsdlabel.c
@@ -136,7 +136,7 @@ main(int argc, char *argv[])
name = NULL;
fprintf(stderr,
- "WARNING: bsdlabel is deprecated and is not available in FreeBSD 15 or later.\n"
+ "WARNING: bsdlabel is deprecated and is not available in FreeBSD 16 or later.\n"
"Please use gpart instead.\n\n");
while ((ch = getopt(argc, argv, "ABb:efm:nRrw")) != -1)
diff --git a/sbin/devd/snd.conf b/sbin/devd/snd.conf
index cf9cd9e94191..a45f427f6c79 100644
--- a/sbin/devd/snd.conf
+++ b/sbin/devd/snd.conf
@@ -5,6 +5,9 @@ notify 0 {
match "type" "IN";
match "cdev" "dsp[0-9]+";
+ # Other audio servers or device switching commands can be used here
+ # instead of virtual_oss(8).
+ #
# FIXME: We are hardcoding /dev/vdsp.ctl here, simply because it is a
# common virtual_oss control device name. Until we find a proper way to
# define control devices here, /dev/vdsp.ctl can be changed to the
@@ -18,6 +21,6 @@ notify 0 {
match "type" "OUT";
match "cdev" "dsp[0-9]+";
- # FIXME: See comment above.
+ # See comment above.
action "/usr/sbin/virtual_oss_cmd /dev/vdsp.ctl -P /dev/$cdev";
};
diff --git a/sbin/fdisk/fdisk.8 b/sbin/fdisk/fdisk.8
index 09933acf57df..f26e6bb67d6e 100644
--- a/sbin/fdisk/fdisk.8
+++ b/sbin/fdisk/fdisk.8
@@ -1,5 +1,5 @@
.\"
-.Dd October 5, 2016
+.Dd October 24, 2025
.Dt FDISK 8
.Os
.Sh NAME
@@ -18,7 +18,7 @@
.Sh DEPRECATION NOTICE
.Nm
is deprecated and is not available in
-.Fx 15.0
+.Fx 16.0
or later.
Use
.Xr gpart 8
diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c
index 925cc68932d7..28230191bb16 100644
--- a/sbin/fdisk/fdisk.c
+++ b/sbin/fdisk/fdisk.c
@@ -266,7 +266,7 @@ main(int argc, char *argv[])
struct dos_partition *partp;
fprintf(stderr,
- "WARNING: fdisk is deprecated and is not available in FreeBSD 15 or later.\n"
+ "WARNING: fdisk is deprecated and is not available in FreeBSD 16 or later.\n"
"Please use gpart instead.\n\n");
while ((c = getopt(argc, argv, "BIab:f:ipqstuv1234")) != -1)
diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c
index 496123f08274..51ea52a3e858 100644
--- a/sbin/geom/core/geom.c
+++ b/sbin/geom/core/geom.c
@@ -897,23 +897,23 @@ list_one_provider(struct gprovider *pp, const char *padding)
struct gconfig *conf;
char buf[5];
- xo_emit("{Lcw:Name}{:Name}\n", pp->lg_name);
+ xo_emit("{Lcw:Name}{:name}\n", pp->lg_name);
humanize_number(buf, sizeof(buf), (int64_t)pp->lg_mediasize, "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
- xo_emit("{P:/%s}{Lcw:Mediasize}{:Mediasize/%jd} ({N:/%s})\n",
+ xo_emit("{P:/%s}{Lcw:Mediasize}{:mediasize/%jd} ({N:/%s})\n",
padding, (intmax_t)pp->lg_mediasize, buf);
- xo_emit("{P:/%s}{Lcw:Sectorsize}{:Sectorsize/%u} \n",
+ xo_emit("{P:/%s}{Lcw:Sectorsize}{:sectorsize/%u}\n",
padding, pp->lg_sectorsize);
if (pp->lg_stripesize > 0 || pp->lg_stripeoffset > 0) {
- xo_emit("{P:/%s}{Lcw:Stripesize}{Stripesize/%ju}\n",
+ xo_emit("{P:/%s}{Lcw:Stripesize}{:stripesize/%ju}\n",
padding, pp->lg_stripesize);
- xo_emit("{P:/%s}{Lcw:Stripeoffset}{Stripeoffset/%ju}\n",
+ xo_emit("{P:/%s}{Lcw:Stripeoffset}{:stripeoffset/%ju}\n",
padding, pp->lg_stripeoffset);
}
- xo_emit("{P:/%s}{Lcw:Mode}{Mode}\n", padding, pp->lg_mode);
+ xo_emit("{P:/%s}{Lcw:Mode}{:mode}\n", padding, pp->lg_mode);
LIST_FOREACH(conf, &pp->lg_config, lg_config) {
xo_emit("{P:/%s}{Lcwa:}{a:}\n", padding, conf->lg_name,
- conf->lg_name, conf->lg_val);
+ conf->lg_name, conf->lg_val ? conf->lg_val : "");
}
}
@@ -929,24 +929,24 @@ list_one_consumer(struct gconsumer *cp, const char *padding)
else {
char buf[5];
- xo_emit("{Lcw:Name}{:Name}\n", pp->lg_name);
+ xo_emit("{Lcw:Name}{:name}\n", pp->lg_name);
humanize_number(buf, sizeof(buf), (int64_t)pp->lg_mediasize, "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
- xo_emit("{P:/%s}{Lcw:Mediasize}{:Mediasize/%jd} ({N:/%s})\n",
+ xo_emit("{P:/%s}{Lcw:Mediasize}{:mediasize/%jd} ({N:/%s})\n",
padding, (intmax_t)pp->lg_mediasize, buf);
- xo_emit("{P:/%s}{Lcw:Sectorsize}{:Sectorsize/%u}\n",
+ xo_emit("{P:/%s}{Lcw:Sectorsize}{:sectorsize/%u}\n",
padding, pp->lg_sectorsize);
if (pp->lg_stripesize > 0 || pp->lg_stripeoffset > 0) {
- xo_emit("{P:/%s}{Lcw:Stripesize}{:Stripesize/%ju}\n",
+ xo_emit("{P:/%s}{Lcw:Stripesize}{:stripesize/%ju}\n",
padding, pp->lg_stripesize);
- xo_emit("{P:/%s}{Lcw:Stripeoffset}{:Stripesize/%ju}\n",
+ xo_emit("{P:/%s}{Lcw:Stripeoffset}{:stripeoffset/%ju}\n",
padding, pp->lg_stripeoffset);
}
- xo_emit("{P:/%s}{Lcw:Mode}{:Mode}\n", padding, pp->lg_mode);
+ xo_emit("{P:/%s}{Lcw:Mode}{:mode}\n", padding, pp->lg_mode);
}
LIST_FOREACH(conf, &cp->lg_config, lg_config) {
xo_emit("{P:/%s}{Lcwa:}{a:}\n", padding, conf->lg_name,
- conf->lg_name, conf->lg_val);
+ conf->lg_name, conf->lg_val ? conf->lg_val : "");
}
}
@@ -958,34 +958,34 @@ list_one_geom(struct ggeom *gp)
struct gconfig *conf;
unsigned n;
- xo_emit("{Lcw:Geom name}{:Name}\n", gp->lg_name);
+ xo_emit("{Lcw:Geom name}{:name}\n", gp->lg_name);
LIST_FOREACH(conf, &gp->lg_config, lg_config) {
xo_emit("{Lcwa:}{a:}\n", conf->lg_name, conf->lg_name,
- conf->lg_val);
+ conf->lg_val ? conf->lg_val : "");
}
if (!LIST_EMPTY(&gp->lg_provider)) {
- xo_open_list("Providers");
+ xo_open_list("providers");
xo_emit("{Tc:Providers}\n");
n = 1;
LIST_FOREACH(pp, &gp->lg_provider, lg_provider) {
- xo_emit("{T:/%u} ", n++);
+ xo_emit("{T:/%u}. ", n++);
xo_open_instance("provider");
list_one_provider(pp, " ");
xo_close_instance("provider");
}
- xo_close_list("Providers");
+ xo_close_list("providers");
}
if (!LIST_EMPTY(&gp->lg_consumer)) {
- xo_open_list("Consumers");
+ xo_open_list("consumers");
xo_emit("{Tc:Consumers}\n");
n = 1;
LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) {
- xo_emit("{T:/%u} ", n++);
+ xo_emit("{T:/%u}. ", n++);
xo_open_instance("consumer");
list_one_consumer(cp, " ");
xo_close_instance("consumer");
}
- xo_close_list("Consumers");
+ xo_close_list("consumers");
}
xo_emit("\n");
}
@@ -1005,10 +1005,10 @@ list_one_geom_by_provider(const char *provider_name)
if (gp == NULL)
errx(EXIT_FAILURE, "Cannot find provider '%s'.", provider_name);
- xo_open_container("Geom");
- xo_emit("{Lwc:Geom class}{:Class}\n", gp->lg_class->lg_name);
+ xo_open_container(provider_name);
+ xo_emit("{Lwc:Geom class}{:class}\n", gp->lg_class->lg_name);
list_one_geom(gp);
- xo_close_container("Geom");
+ xo_close_container(provider_name);
}
static void
@@ -1067,12 +1067,12 @@ std_list(struct gctl_req *req, unsigned flags __unused)
"an instance named '%s'.",
gclass_name, name);
}
- xo_open_container("Geom");
+ xo_open_container(gclass_name);
list_one_geom(gp);
- xo_close_container("Geom");
+ xo_close_container(gclass_name);
}
} else {
- xo_open_list("Geoms");
+ xo_open_list(gclass_name);
LIST_FOREACH(gp, &classp->lg_geom, lg_geom) {
if (LIST_EMPTY(&gp->lg_provider) && !all)
continue;
@@ -1080,7 +1080,7 @@ std_list(struct gctl_req *req, unsigned flags __unused)
list_one_geom(gp);
xo_close_instance("geom");
}
- xo_close_list("Geoms");
+ xo_close_list(gclass_name);
}
geom_deletetree(&mesh);
}
@@ -1175,6 +1175,7 @@ status_one_geom(struct ggeom *gp, int script, int name_len, int status_len)
{
struct gconsumer *cp;
struct gconfig *conf;
+ char fmt[64];
const char *name, *status, *cstate, *csyncr;
int gotone, len;
@@ -1189,31 +1190,43 @@ status_one_geom(struct ggeom *gp, int script, int name_len, int status_len)
gotone = len = 0;
xo_open_instance("status");
LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) {
+ if (cp->lg_provider == NULL)
+ continue;
+
cstate = status_one_consumer(cp, "state");
csyncr = status_one_consumer(cp, "synchronized");
- if (cstate == NULL && csyncr == NULL)
- continue;
if (!gotone || script) {
if (!gotone) {
- xo_emit("{:name/%*s} {:status/%*s} ",
+ xo_emit("{t:name/%*s} {t:status/%*s} ",
name_len, name, status_len, status);
+ xo_open_list("components");
} else {
- xo_emit("{d:name/%*s} {d:status/%*s} ",
+ /*
+ * XXX: running the same xo_emit() as above or
+ * variations of it will cause the XML/JSON to
+ * produce extra "components" lists in script
+ * mode
+ */
+
+ snprintf(fmt, sizeof(fmt), "%*s %*s ",
name_len, name, status_len, status);
+ xo_emit(fmt);
}
- xo_open_list("components");
}
xo_open_instance("components");
if (cstate != NULL && csyncr != NULL) {
- xo_emit("{P:/%*s}{:compontent} ({:state}, {:synchronized})\n",
- len, "", cp->lg_provider->lg_name, cstate, csyncr);
+ xo_emit("{P:/%*s}{:component} ({:state}, {:synchronized})\n",
+ len, "", cp->lg_provider->lg_name, cstate, csyncr);
} else if (cstate != NULL) {
- xo_emit("{P:/%*s}{:compontent} ({:state})\n",
- len, "", cp->lg_provider->lg_name, cstate);
+ xo_emit("{P:/%*s}{:component} ({:state})\n",
+ len, "", cp->lg_provider->lg_name, cstate);
+ } else if (csyncr != NULL) {
+ xo_emit("{P:/%*s}{:component} ({:synchronized})\n",
+ len, "", cp->lg_provider->lg_name, csyncr);
} else {
- xo_emit("{P:/%*s}{:compontent} ({:synchronized})\n",
- len, "", cp->lg_provider->lg_name, csyncr);
+ xo_emit("{P:/%*s}{:component}\n",
+ len, "", cp->lg_provider->lg_name);
}
xo_close_instance("components");
gotone = 1;
@@ -1221,13 +1234,11 @@ status_one_geom(struct ggeom *gp, int script, int name_len, int status_len)
len = name_len + status_len + 4;
}
if (!gotone) {
- xo_emit("{:name/%*s} {:status/%*s} ", name_len, name, status_len, status);
- xo_open_list("components");
- xo_open_instance("components");
- xo_emit("{P:/%*s}{d:compontent}\n", len, "", "N/A");
- xo_close_instance("components");
+ xo_emit("{t:name/%*s} {t:status/%*s} N/A\n",
+ name_len, name, status_len, status);
+ } else {
+ xo_close_list("components");
}
- xo_close_list("components");
xo_close_instance("status");
}
@@ -1238,6 +1249,7 @@ status_one_geom_prs(struct ggeom *gp, int script, int name_len, int status_len)
struct gconsumer *cp;
struct gconfig *conf;
const char *name, *status, *cstate, *csyncr;
+ char fmt[64];
int gotone, len;
xo_open_instance("status");
@@ -1258,32 +1270,44 @@ status_one_geom_prs(struct ggeom *gp, int script, int name_len, int status_len)
}
gotone = len = 0;
LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) {
- cstate = status_one_consumer(cp, "state");
- csyncr = status_one_consumer(cp, "synchronized");
- if (cstate == NULL && csyncr == NULL)
+ if (cp->lg_provider == NULL)
continue;
+ cstate = status_one_consumer(cp, "state");
+ csyncr = status_one_consumer(cp, "synchronized");
if (!gotone || script) {
if (!gotone) {
- xo_emit("{:name/%*s} {:status/%*s} ",
+ xo_emit("{t:name/%*s} {t:status/%*s} ",
name_len, name, status_len, status);
+ xo_open_list("components");
} else {
- xo_emit("{d:name/%*s} {d:status/%*s} ",
+ /*
+ * XXX: running the same xo_emit() as
+ * above or variations of it will
+ * cause the XML/JSON to produce
+ * extra "components" lists in
+ * script mode
+ */
+
+ snprintf(fmt, sizeof(fmt), "%*s %*s ",
name_len, name, status_len, status);
+ xo_emit(fmt);
}
- xo_open_list("components");
}
xo_open_instance("component");
if (cstate != NULL && csyncr != NULL) {
- xo_emit("{P:/%*s}{:compontent} ({:state}, {:synchronized})\n",
- len, "", cp->lg_provider->lg_name, cstate, csyncr);
+ xo_emit("{P:/%*s}{:component} ({:state}, {:synchronized})\n",
+ len, "", cp->lg_provider->lg_name, cstate, csyncr);
} else if (cstate != NULL) {
- xo_emit("{P:/%*s}{:compontent} ({:state})\n",
- len, "", cp->lg_provider->lg_name, cstate);
+ xo_emit("{P:/%*s}{:component} ({:state})\n",
+ len, "", cp->lg_provider->lg_name, cstate);
+ } else if (csyncr != NULL) {
+ xo_emit("{P:/%*s}{:component} ({:synchronized})\n",
+ len, "", cp->lg_provider->lg_name, csyncr);
} else {
- xo_emit("{P:/%*s}{:compontent} ({:synchronized})\n",
- len, "", cp->lg_provider->lg_name, csyncr);
+ xo_emit("{P:/%*s}{:component}\n",
+ len, "", cp->lg_provider->lg_name);
}
xo_close_instance("component");
gotone = 1;
@@ -1291,13 +1315,11 @@ status_one_geom_prs(struct ggeom *gp, int script, int name_len, int status_len)
len = name_len + status_len + 4;
}
if (!gotone) {
- xo_emit("{:name/%*s} {:status/%*s} ", name_len, name, status_len, status);
- xo_open_list("components");
- xo_open_instance("components");
- xo_emit("{P:/%*s}{d:compontent}\n", len, "", "N/A");
- xo_close_instance("components");
+ xo_emit("{t:name/%*s} {t:status/%*s} N/A\n",
+ name_len, name, status_len, status);
+ } else {
+ xo_close_list("components");
}
- xo_close_list("components");
}
xo_close_instance("status");
}
@@ -1363,7 +1385,7 @@ std_status(struct gctl_req *req, unsigned flags __unused)
xo_emit("{T:/%*s} {T:/%*s} {T:Components}\n",
name_len, "Name", status_len, "Status");
}
- xo_open_list("status");
+ xo_open_list(gclass_name);
if (nargs > 0) {
for (i = 0; i < nargs; i++) {
name = gctl_get_ascii(req, "arg%d", i);
@@ -1391,7 +1413,7 @@ std_status(struct gctl_req *req, unsigned flags __unused)
}
}
}
- xo_close_list("status");
+ xo_close_list(gclass_name);
end:
geom_deletetree(&mesh);
}
diff --git a/sbin/ifconfig/ifbridge.c b/sbin/ifconfig/ifbridge.c
index eff443447c13..8bcf4a638adf 100644
--- a/sbin/ifconfig/ifbridge.c
+++ b/sbin/ifconfig/ifbridge.c
@@ -811,7 +811,7 @@ unsetbridge_private(if_ctx *ctx, const char *val, int dummy __unused)
static int
parse_vlans(ifbvlan_set_t *set, const char *str)
{
- char *s, *token;
+ char *s, *free_s, *token;
/* "none" means the empty vlan set */
if (strcmp(str, "none") == 0) {
@@ -829,6 +829,8 @@ parse_vlans(ifbvlan_set_t *set, const char *str)
if ((s = strdup(str)) == NULL)
return (-1);
+ /* Keep the original value of s, since strsep() will modify it */
+ free_s = s;
while ((token = strsep(&s, ",")) != NULL) {
unsigned long first, last;
@@ -856,11 +858,11 @@ parse_vlans(ifbvlan_set_t *set, const char *str)
BRVLAN_SET(set, vlan);
}
- free(s);
+ free(free_s);
return (0);
err:
- free(s);
+ free(free_s);
return (-1);
}
diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8
index d4f8d2b5747a..627b7cd3f9e3 100644
--- a/sbin/ifconfig/ifconfig.8
+++ b/sbin/ifconfig/ifconfig.8
@@ -630,6 +630,9 @@ This is useful for devices which have multiple physical layer interfaces
.It Cm name Ar name
Set the interface name to
.Ar name .
+The
+.Ar name
+may not be longer than 15 characters.
.It Cm rxcsum , txcsum , rxcsum6 , txcsum6
If the driver supports user-configurable checksum offloading,
enable receive (or transmit) checksum offloading on the interface.
diff --git a/sbin/ipf/ipfs/ipfs.c b/sbin/ipf/ipfs/ipfs.c
index 6225c6e1154d..94c9f70410f2 100644
--- a/sbin/ipf/ipfs/ipfs.c
+++ b/sbin/ipf/ipfs/ipfs.c
@@ -576,7 +576,7 @@ int readnat(int fd, char *file)
in = (nat_save_t *)malloc(ipn.ipn_dsize);
if (in == NULL) {
- fprintf(stderr, "nat:cannot malloc nat save atruct\n");
+ fprintf(stderr, "nat:cannot malloc nat save struct\n");
goto freenathead;
}
diff --git a/sbin/ipfw/dummynet.c b/sbin/ipfw/dummynet.c
index 6714b2af3124..a0cefcffd183 100644
--- a/sbin/ipfw/dummynet.c
+++ b/sbin/ipfw/dummynet.c
@@ -680,7 +680,7 @@ ipfw_delete_pipe(int do_pipe, int i)
i = do_cmd(IP_DUMMYNET3, &cmd, cmd.oid.len);
if (i) {
i = 1;
- warn("rule %u: setsockopt(IP_DUMMYNET_DEL)", i);
+ warn("rule %u: setsockopt(IP_DUMMYNET3)", i);
}
return i;
}
@@ -1863,7 +1863,7 @@ end_mask:
i = do_cmd(IP_DUMMYNET3, base, (char *)buf - (char *)base);
if (i)
- err(1, "setsockopt(%s)", "IP_DUMMYNET_CONFIGURE");
+ err(1, "setsockopt(%s)", "IP_DUMMYNET3");
}
void
diff --git a/sbin/ipfw/ipfw2.c b/sbin/ipfw/ipfw2.c
index 2addc0295f0f..27ccaea2c78f 100644
--- a/sbin/ipfw/ipfw2.c
+++ b/sbin/ipfw/ipfw2.c
@@ -648,11 +648,7 @@ do_cmd(int optname, void *optval, uintptr_t optlen)
if (ipfw_socket < 0)
err(EX_UNAVAILABLE, "socket");
- if (optname == IP_FW_GET || optname == IP_DUMMYNET_GET ||
- optname == IP_FW_ADD || optname == IP_FW3 ||
- optname == IP_FW_NAT_GET_CONFIG ||
- optname < 0 ||
- optname == IP_FW_NAT_GET_LOG) {
+ if (optname == IP_FW3 || optname < 0) {
if (optname < 0)
optname = -optname;
i = getsockopt(ipfw_socket, IPPROTO_IP, optname, optval,
@@ -5802,7 +5798,7 @@ ipfw_add(char *av[])
sz = default_off + sizeof(ipfw_obj_ctlv) + tlen + rlen;
if ((tbuf = calloc(1, sz)) == NULL)
- err(EX_UNAVAILABLE, "malloc() failed for IP_FW_ADD");
+ err(EX_UNAVAILABLE, "malloc() failed for IP_FW_XADD");
op3 = (ip_fw3_opheader *)tbuf;
/* Tables first */
ctlv = (ipfw_obj_ctlv *)(op3 + 1);
diff --git a/sbin/mount/mount.8 b/sbin/mount/mount.8
index 7bfc21ea41d5..154ad293aee4 100644
--- a/sbin/mount/mount.8
+++ b/sbin/mount/mount.8
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd July 16, 2025
+.Dd October 28, 2025
.Dt MOUNT 8
.Os
.Sh NAME
@@ -568,6 +568,7 @@ support for a particular file system might be provided either on a static
.Xr kldload 8 ) .
.Sh SEE ALSO
.Xr getfacl 1 ,
+.Xr lsvfs 1 ,
.Xr setfacl 1 ,
.Xr nmount 2 ,
.Xr acl 3 ,
diff --git a/sbin/nvmecontrol/perftest.c b/sbin/nvmecontrol/perftest.c
index 59439d3ed2a9..da75afc64d8d 100644
--- a/sbin/nvmecontrol/perftest.c
+++ b/sbin/nvmecontrol/perftest.c
@@ -171,7 +171,7 @@ perftest(const struct cmd *f, int argc, char *argv[])
arg_help(argc, argv, f);
}
if (opt.time == 0) {
- fprintf(stderr, "No time speciifed\n");
+ fprintf(stderr, "No time specified\n");
arg_help(argc, argv, f);
}
io_test.time = opt.time;
diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index 0f7702fc4630..127e2c257d69 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -6246,7 +6246,7 @@ check_binat_redirspec(struct node_host *src_host, struct pfctl_rule *r,
}
if (PF_AZERO(&r->src.addr.v.a.mask, af) ||
PF_AZERO(&(nat_pool->addr.v.a.mask), af)) {
- yyerror ("source and redir addresess must have "
+ yyerror ("source and redir addresses must have "
"a matching network mask in binat-rule");
error++;
}
diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c
index ed317495c2e0..02d6c9c84a32 100644
--- a/sbin/pfctl/pfctl.c
+++ b/sbin/pfctl/pfctl.c
@@ -2618,6 +2618,8 @@ pfctl_apply_limit(struct pfctl *pf, const char *opt, unsigned int limit)
int
pfctl_load_limit(struct pfctl *pf, unsigned int index, unsigned int limit)
{
+ static int restore_limit_handler_armed = 0;
+
if (pfctl_set_limit(pf->h, index, limit)) {
if (errno == EBUSY)
warnx("Current pool size exceeds requested %s limit %u",
@@ -2626,6 +2628,9 @@ pfctl_load_limit(struct pfctl *pf, unsigned int index, unsigned int limit)
warnx("Cannot set %s limit to %u",
pf_limits[index].name, limit);
return (1);
+ } else if (restore_limit_handler_armed == 0) {
+ atexit(pfctl_restore_limits);
+ restore_limit_handler_armed = 1;
}
return (0);
}
@@ -3167,10 +3172,7 @@ pfctl_show_eth_anchors(int dev, int opts, char *anchorname)
int ret;
if ((ret = pfctl_get_eth_rulesets_info(dev, &ri, anchorname)) != 0) {
- if (ret == ENOENT)
- fprintf(stderr, "Anchor '%s' not found.\n",
- anchorname);
- else
+ if (ret != ENOENT)
errc(1, ret, "DIOCGETETHRULESETS");
return (-1);
}
@@ -3477,7 +3479,6 @@ main(int argc, char *argv[])
if ((opts & PF_OPT_NOACTION) == 0) {
pfctl_read_limits(pfh);
- atexit(pfctl_restore_limits);
}
if (opts & PF_OPT_DISABLE)
diff --git a/sbin/pfctl/pfctl.h b/sbin/pfctl/pfctl.h
index 136f51ea08f9..c540c6348d84 100644
--- a/sbin/pfctl/pfctl.h
+++ b/sbin/pfctl/pfctl.h
@@ -110,7 +110,7 @@ int pfr_clr_astats(struct pfr_table *, struct pfr_addr *, int, int *, int);
int pfr_clr_addrs(struct pfr_table *, int *, int);
int pfr_add_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int);
int pfr_del_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int);
-int pfr_set_addrs(struct pfr_table *, struct pfr_addr *, int, int *,
+int pfr_set_addrs(struct pfr_table *, struct pfr_addr *, int,
int *, int *, int *, int);
int pfr_get_addrs(struct pfr_table *, struct pfr_addr *, int *, int);
int pfr_get_astats(struct pfr_table *, struct pfr_astats *, int *, int);
diff --git a/sbin/pfctl/pfctl_radix.c b/sbin/pfctl/pfctl_radix.c
index 98f907738d95..3b7161420e33 100644
--- a/sbin/pfctl/pfctl_radix.c
+++ b/sbin/pfctl/pfctl_radix.c
@@ -163,11 +163,11 @@ pfr_del_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size,
int
pfr_set_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size,
- int *size2, int *nadd, int *ndel, int *nchange, int flags)
+ int *nadd, int *ndel, int *nchange, int flags)
{
int ret;
- ret = pfctl_table_set_addrs(dev, tbl, addr, size, size2, nadd, ndel,
+ ret = pfctl_table_set_addrs_h(pfh, tbl, addr, size, nadd, ndel,
nchange, flags);
if (ret) {
errno = ret;
diff --git a/sbin/pfctl/pfctl_table.c b/sbin/pfctl/pfctl_table.c
index 4955e1791fd7..aae347712547 100644
--- a/sbin/pfctl/pfctl_table.c
+++ b/sbin/pfctl/pfctl_table.c
@@ -236,17 +236,8 @@ pfctl_table(int argc, char *argv[], char *tname, const char *command,
CREATE_TABLE;
if (opts & PF_OPT_VERBOSE)
flags |= PFR_FLAG_FEEDBACK;
- for (;;) {
- int sz2 = b.pfrb_msize;
-
- RVTEST(pfr_set_addrs(&table, b.pfrb_caddr, b.pfrb_size,
- &sz2, &nadd, &ndel, &nchange, flags));
- if (sz2 <= b.pfrb_msize) {
- b.pfrb_size = sz2;
- break;
- } else
- pfr_buf_grow(&b, sz2);
- }
+ RVTEST(pfr_set_addrs(&table, b.pfrb_caddr, b.pfrb_size,
+ &nadd, &ndel, &nchange, flags));
if (nadd)
xprintf(opts, "%d addresses added", nadd);
if (ndel)