blob: 9e03244ead4cb08805d7e0016baea2a18956aff8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
Content-type: text/html
<HTML><HEAD><TITLE>Manpage of IPSEC_RANGETOSUBNET</TITLE>
</HEAD><BODY>
<H1>IPSEC_RANGETOSUBNET</H1>
Section: C Library Functions (3)<BR>Updated: 8 Sept 2000<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB"> </A>
<H2>NAME</H2>
ipsec rangetosubnet - convert address range to subnet
<A NAME="lbAC"> </A>
<H2>SYNOPSIS</H2>
<B>#include <<A HREF="file:/usr/include/freeswan.h">freeswan.h</A>></B>
<P>
<B>const char *rangetosubnet(const ip_address *start,</B>
<BR>
<B>const ip_address *stop, ip_subnet *dst);</B>
<A NAME="lbAD"> </A>
<H2>DESCRIPTION</H2>
<I>Rangetosubnet</I>
accepts two IP addresses which define an address range,
from
<I>start</I>
to
<I>stop</I>
inclusive,
and converts this to a subnet if possible.
The addresses must both be IPv4 or both be IPv6,
and the address family of the resulting subnet is the same.
<P>
<I>Rangetosubnet</I>
returns NULL for success and
a pointer to a string-literal error message for failure;
see DIAGNOSTICS.
<A NAME="lbAE"> </A>
<H2>SEE ALSO</H2>
<A HREF="ipsec_initsubnet.3.html">ipsec_initsubnet</A>(3), <A HREF="ipsec_ttosubnet.3.html">ipsec_ttosubnet</A>(3)
<A NAME="lbAF"> </A>
<H2>DIAGNOSTICS</H2>
Fatal errors in
<I>rangetosubnet</I>
are:
mixed address families;
unknown address family;
<I>start</I>
and
<I>stop</I>
do not define a subnet.
<A NAME="lbAG"> </A>
<H2>HISTORY</H2>
Written for the FreeS/WAN project by Henry Spencer.
<A NAME="lbAH"> </A>
<H2>BUGS</H2>
The restriction of error reports to literal strings
(so that callers don't need to worry about freeing them or copying them)
does limit the precision of error reporting.
<P>
The error-reporting convention lends itself
to slightly obscure code,
because many readers will not think of NULL as signifying success.
A good way to make it clearer is to write something like:
<P>
<DL COMPACT><DT><DD>
<PRE>
<B>const char *error;</B>
<B>error = rangetosubnet( /* ... */ );</B>
<B>if (error != NULL) {</B>
<B> /* something went wrong */</B>
</PRE>
</DL>
<P>
<HR>
<A NAME="index"> </A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NAME</A><DD>
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT><A HREF="#lbAE">SEE ALSO</A><DD>
<DT><A HREF="#lbAF">DIAGNOSTICS</A><DD>
<DT><A HREF="#lbAG">HISTORY</A><DD>
<DT><A HREF="#lbAH">BUGS</A><DD>
</DL>
<HR>
This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 21:40:18 GMT, November 11, 2003
</BODY>
</HTML>
|