mountd: deprecate exports to a network without mask

The exports file format allows export to a network using an explicit
mask or prefix length (CIDR).  It also allows a network with just
a dotted address, in which case the historical mask was used.
Deprecate this usage, and warn when it is used.  Document that this
is deprecated.

MFC after:	1 month
Reviewed by:	rmacklem, bcr, #manpages
Differential Revision: https://reviews.freebsd.org/D32713
This commit is contained in:
Mike Karels 2021-10-26 22:48:23 -05:00
parent 0bf7f99b2a
commit 92aebdeaff
2 changed files with 8 additions and 4 deletions

View File

@ -28,7 +28,7 @@
.\" @(#)exports.5 8.3 (Berkeley) 3/29/95
.\" $FreeBSD$
.\"
.Dd November 20, 2020
.Dd November 9, 2021
.Dt EXPORTS 5
.Os
.Sh NAME
@ -338,9 +338,10 @@ to the
option, or by using a separate
.Fl mask
option.
If the mask is not specified, it will default to the mask for that network
class (A, B or C; see
If the mask is not specified, it will default to the historical mask
for that network class (A, B, or C; see
.Xr inet 4 ) .
This usage is deprecated, and will elicit a warning log message.
See the
.Sx EXAMPLES
section below.

View File

@ -3418,6 +3418,9 @@ get_net(char *cp, struct netmsk *net, int maskflg)
(opt_flags & OP_MASK) == 0) {
in_addr_t addr;
syslog(LOG_WARNING,
"WARNING: No mask specified for %s, "
"using out-of-date default", name);
addr = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
if (IN_CLASSA(addr))
preflen = 8;
@ -3425,7 +3428,7 @@ get_net(char *cp, struct netmsk *net, int maskflg)
preflen = 16;
else if (IN_CLASSC(addr))
preflen = 24;
else if (IN_CLASSD(addr))
else if (IN_CLASSD(addr)) /* XXX Multicast??? */
preflen = 28;
else
preflen = 32; /* XXX */