.TH IPSEC_GOODMASK 3 "11 June 2001" .\" RCSID $Id: goodmask.3 3265 2007-10-08 19:52:55Z andreas $ .SH NAME ipsec goodmask \- is this Internet subnet mask a valid one? .br ipsec masktobits \- convert Internet subnet mask to bit count .br ipsec bitstomask \- convert bit count to Internet subnet mask .SH SYNOPSIS .B "#include .sp .B "int goodmask(struct in_addr mask);" .br .B "int masktobits(struct in_addr mask);" .br .B "struct in_addr bitstomask(int n);" .SH DESCRIPTION These functions are obsolete; see .IR ipsec_masktocount (3) for a partial replacement. .PP .I Goodmask reports whether the subnet .I mask is a valid one, i.e. consists of a (possibly empty) sequence of .BR 1 s followed by a (possibly empty) sequence of .BR 0 s. .I Masktobits takes a (valid) subnet mask and returns the number of .B 1 bits in it. .I Bitstomask reverses this, returning the subnet mask corresponding to bit count .IR n . .PP All masks are in network byte order. .SH SEE ALSO inet(3), ipsec_atosubnet(3) .SH DIAGNOSTICS .I Masktobits returns .B \-1 for an invalid mask. .I Bitstomask returns an all-zeros mask for a negative or out-of-range .IR n . .SH HISTORY Written for the FreeS/WAN project by Henry Spencer. .SH BUGS The error-reporting convention of .I bitstomask is less than ideal; zero is sometimes a legitimate mask.