source: projects/initscripts/tags/initscripts-8.91.3/src/doc/html/ipcalc_c.html @ 1108

Revision 1108, 13.0 KB checked in by daisuke, 14 years ago (diff)

import initscripts-8.90.6 from internal cvs repository

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html><head><meta name="robots" content="noindex">
3<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
4<title>ipcalc.c File Reference</title>
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body bgcolor="#ffffff">
7<!-- Generated by Doxygen 1.2.6 -->
8<center>
9<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
10<hr><h1>ipcalc.c File Reference</h1>provides utilities for manipulating IP addresses.
11<a href="#_details">More...</a>
12<p>
13<code>#include &lt;ctype.h&gt;</code><br>
14<code>#include &lt;popt.h&gt;</code><br>
15<code>#include &lt;stdio.h&gt;</code><br>
16<code>#include &lt;stdlib.h&gt;</code><br>
17<code>#include &lt;string.h&gt;</code><br>
18<code>#include &lt;sys/socket.h&gt;</code><br>
19<code>#include &lt;netinet/in.h&gt;</code><br>
20<code>#include &lt;arpa/inet.h&gt;</code><br>
21<code>#include &lt;netdb.h&gt;</code><br>
22<table border=0 cellpadding=0 cellspacing=0>
23<tr><td colspan=2><br><h2>Defines</h2></td></tr>
24<tr><td nowrap align=right valign=top><a name="a0" doxytag="ipcalc.c::IPBITS"></a>
25#define&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a0">IPBITS</a>&nbsp;&nbsp;&nbsp;(sizeof(unsigned long int) * 8)</td></tr>
26<tr><td>&nbsp;</td><td><font size=-1><em>the number of bits in an IP address.</em></font><br><br></td></tr>
27<tr><td nowrap align=right valign=top><a name="a1" doxytag="ipcalc.c::IPBYTES"></a>
28#define&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a1">IPBYTES</a>&nbsp;&nbsp;&nbsp;(sizeof(unsigned long int))</td></tr>
29<tr><td>&nbsp;</td><td><font size=-1><em>the number of bytes in an IP address.</em></font><br><br></td></tr>
30<tr><td colspan=2><br><h2>Functions</h2></td></tr>
31<tr><td nowrap align=right valign=top>unsigned long int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a2">prefix2mask</a> (int prefix)</td></tr>
32<tr><td>&nbsp;</td><td><font size=-1><em>creates a netmask from a specified number of bits.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
33<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a3">mask2prefix</a> (unsigned long int mask)</td></tr>
34<tr><td>&nbsp;</td><td><font size=-1><em>calculates the number of bits masked off by a netmask.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
35<tr><td nowrap align=right valign=top>unsigned long int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a4">default_netmask</a> (unsigned long int addr)</td></tr>
36<tr><td>&nbsp;</td><td><font size=-1><em>returns the default (canonical) netmask associated with specified IP address.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
37<tr><td nowrap align=right valign=top>unsigned long int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a5">calc_broadcast</a> (unsigned long int addr, int prefix)</td></tr>
38<tr><td>&nbsp;</td><td><font size=-1><em>calculate broadcast address given an IP address and a prefix length.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
39<tr><td nowrap align=right valign=top>unsigned long int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a6">calc_network</a> (unsigned long int addr, int prefix)</td></tr>
40<tr><td>&nbsp;</td><td><font size=-1><em>calculates the network address for a specified address and prefix.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
41<tr><td nowrap align=right valign=top>const char*&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a7">get_hostname</a> (unsigned long int addr)</td></tr>
42<tr><td>&nbsp;</td><td><font size=-1><em>returns the hostname associated with the specified IP address.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
43<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="ipcalc_c.html#a8">main</a> (int argc, const char **argv)</td></tr>
44<tr><td>&nbsp;</td><td><font size=-1><em>wrapper program for ipcalc functions.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
45</table>
46<hr><a name="_details"></a><h2>Detailed Description</h2>
47provides utilities for manipulating IP addresses.
48<p>
49
50<p>
51
52<p>
53 ipcalc provides utilities and a front-end command line interface for manipulating IP addresses, and calculating various aspects of an ip address/netmask/network address/prefix/etc.
54<p>
55Functionality can be accessed from other languages from the library interface, documented here. To use ipcalc from the shell, read the ipcalc(1) manual page.
56<p>
57When passing parameters to the various functions, take note of whether they take host byte order or network byte order. Most take host byte order, and return host byte order, but there are some exceptions.
58<p>
59<hr><h2>Function Documentation</h2>
60<a name="a5" doxytag="ipcalc.c::calc_broadcast"></a><p>
61<table width="100%" cellpadding="2" cellspacing="0" border="0">
62  <tr>
63    <td class="md">
64      <table cellpadding="0" cellspacing="0" border="0">
65        <tr>
66          <td nowrap valign="top"><b> 
67unsigned long int calc_broadcast (
68          </b></td>
69          <td valign="bottom"><b>
70unsigned long int <em>addr</em>,
71          </b></td>
72        </tr>
73        <tr>
74          <td></td>
75          <td><b>
76int <em>prefix</em>&nbsp;)
77          </b></td>
78        </tr>
79
80      </table>
81    </td>
82  </tr>
83</table>
84<table cellspacing=5 cellpadding=0 border=0>
85  <tr>
86    <td>
87      &nbsp;
88    </td>
89    <td>
90
91<p>
92calculate broadcast address given an IP address and a prefix length.
93<p>
94
95<p>
96 <dl compact><dt>
97<b>Parameters: </b><dd>
98<table border=0 cellspacing=2 cellpadding=0>
99<tr><td valign=top><em>addr</em>
100&nbsp;</td><td>
101an IP address in network byte order. </td></tr>
102<tr><td valign=top><em>prefix</em>
103&nbsp;</td><td>
104a prefix length.
105<p>
106</td></tr>
107</table>
108</dl><dl compact><dt>
109<b>Returns: </b><dd>
110the calculated broadcast address for the network, in network byte order. </dl>    </td>
111  </tr>
112</table>
113<a name="a6" doxytag="ipcalc.c::calc_network"></a><p>
114<table width="100%" cellpadding="2" cellspacing="0" border="0">
115  <tr>
116    <td class="md">
117      <table cellpadding="0" cellspacing="0" border="0">
118        <tr>
119          <td nowrap valign="top"><b> 
120unsigned long int calc_network (
121          </b></td>
122          <td valign="bottom"><b>
123unsigned long int <em>addr</em>,
124          </b></td>
125        </tr>
126        <tr>
127          <td></td>
128          <td><b>
129int <em>prefix</em>&nbsp;)
130          </b></td>
131        </tr>
132
133      </table>
134    </td>
135  </tr>
136</table>
137<table cellspacing=5 cellpadding=0 border=0>
138  <tr>
139    <td>
140      &nbsp;
141    </td>
142    <td>
143
144<p>
145calculates the network address for a specified address and prefix.
146<p>
147
148<p>
149 <dl compact><dt>
150<b>Parameters: </b><dd>
151<table border=0 cellspacing=2 cellpadding=0>
152<tr><td valign=top><em>addr</em>
153&nbsp;</td><td>
154an IP address, in network byte order </td></tr>
155<tr><td valign=top><em>prefix</em>
156&nbsp;</td><td>
157the network prefix </td></tr>
158</table>
159</dl><dl compact><dt>
160<b>Returns: </b><dd>
161the base address of the network that addr is associated with, in network byte order. </dl>    </td>
162  </tr>
163</table>
164<a name="a4" doxytag="ipcalc.c::default_netmask"></a><p>
165<table width="100%" cellpadding="2" cellspacing="0" border="0">
166  <tr>
167    <td class="md">
168      <table cellpadding="0" cellspacing="0" border="0">
169        <tr>
170          <td nowrap valign="top"><b> 
171unsigned long int default_netmask (
172          </b></td>
173          <td valign="bottom"><b>
174unsigned long int <em>addr</em>&nbsp;)
175          </b></td>
176        </tr>
177
178      </table>
179    </td>
180  </tr>
181</table>
182<table cellspacing=5 cellpadding=0 border=0>
183  <tr>
184    <td>
185      &nbsp;
186    </td>
187    <td>
188
189<p>
190returns the default (canonical) netmask associated with specified IP address.
191<p>
192
193<p>
194 When the Internet was originally set up, various ranges of IP addresses were segmented into three network classes: A, B, and C. This function will return a netmask that is associated with the IP address specified defining where it falls in the predefined classes.<dl compact><dt>
195<b>Parameters: </b><dd>
196<table border=0 cellspacing=2 cellpadding=0>
197<tr><td valign=top><em>addr</em>
198&nbsp;</td><td>
199an IP address in network byte order. </td></tr>
200</table>
201</dl><dl compact><dt>
202<b>Returns: </b><dd>
203a netmask in network byte order. </dl>    </td>
204  </tr>
205</table>
206<a name="a7" doxytag="ipcalc.c::get_hostname"></a><p>
207<table width="100%" cellpadding="2" cellspacing="0" border="0">
208  <tr>
209    <td class="md">
210      <table cellpadding="0" cellspacing="0" border="0">
211        <tr>
212          <td nowrap valign="top"><b> 
213const char * get_hostname (
214          </b></td>
215          <td valign="bottom"><b>
216unsigned long int <em>addr</em>&nbsp;)
217          </b></td>
218        </tr>
219
220      </table>
221    </td>
222  </tr>
223</table>
224<table cellspacing=5 cellpadding=0 border=0>
225  <tr>
226    <td>
227      &nbsp;
228    </td>
229    <td>
230
231<p>
232returns the hostname associated with the specified IP address.
233<p>
234
235<p>
236 <dl compact><dt>
237<b>Parameters: </b><dd>
238<table border=0 cellspacing=2 cellpadding=0>
239<tr><td valign=top><em>addr</em>
240&nbsp;</td><td>
241an IP address to find a hostname for, in network byte order
242<p>
243</td></tr>
244</table>
245</dl><dl compact><dt>
246<b>Returns: </b><dd>
247a hostname, or NULL if one cannot be determined. Hostname is stored in a static buffer that may disappear at any time, the caller should copy the data if it needs permanent storage. </dl>    </td>
248  </tr>
249</table>
250<a name="a8" doxytag="ipcalc.c::main"></a><p>
251<table width="100%" cellpadding="2" cellspacing="0" border="0">
252  <tr>
253    <td class="md">
254      <table cellpadding="0" cellspacing="0" border="0">
255        <tr>
256          <td nowrap valign="top"><b> 
257main (
258          </b></td>
259          <td valign="bottom"><b>
260int <em>argc</em>,
261          </b></td>
262        </tr>
263        <tr>
264          <td></td>
265          <td><b>
266const char ** <em>argv</em>&nbsp;)
267          </b></td>
268        </tr>
269
270      </table>
271    </td>
272  </tr>
273</table>
274<table cellspacing=5 cellpadding=0 border=0>
275  <tr>
276    <td>
277      &nbsp;
278    </td>
279    <td>
280
281<p>
282wrapper program for ipcalc functions.
283<p>
284
285<p>
286 This is a wrapper program for the functions that the ipcalc library provides. It can be used from shell scripts or directly from the command line.
287<p>
288For more information, please see the ipcalc(1) man page.     </td>
289  </tr>
290</table>
291<a name="a3" doxytag="ipcalc.c::mask2prefix"></a><p>
292<table width="100%" cellpadding="2" cellspacing="0" border="0">
293  <tr>
294    <td class="md">
295      <table cellpadding="0" cellspacing="0" border="0">
296        <tr>
297          <td nowrap valign="top"><b> 
298int mask2prefix (
299          </b></td>
300          <td valign="bottom"><b>
301unsigned long int <em>mask</em>&nbsp;)
302          </b></td>
303        </tr>
304
305      </table>
306    </td>
307  </tr>
308</table>
309<table cellspacing=5 cellpadding=0 border=0>
310  <tr>
311    <td>
312      &nbsp;
313    </td>
314    <td>
315
316<p>
317calculates the number of bits masked off by a netmask.
318<p>
319
320<p>
321 This function calculates the significant bits in an IP address as specified by a netmask. See also <a class="el" href="ipcalc_c.html#a2">prefix2mask</a>.<dl compact><dt>
322<b>Parameters: </b><dd>
323<table border=0 cellspacing=2 cellpadding=0>
324<tr><td valign=top><em>mask</em>
325&nbsp;</td><td>
326is the netmask, specified as an unsigned long integer in network byte order. </td></tr>
327</table>
328</dl><dl compact><dt>
329<b>Returns: </b><dd>
330the number of significant bits. </dl>    </td>
331  </tr>
332</table>
333<a name="a2" doxytag="ipcalc.c::prefix2mask"></a><p>
334<table width="100%" cellpadding="2" cellspacing="0" border="0">
335  <tr>
336    <td class="md">
337      <table cellpadding="0" cellspacing="0" border="0">
338        <tr>
339          <td nowrap valign="top"><b> 
340unsigned long int prefix2mask (
341          </b></td>
342          <td valign="bottom"><b>
343int <em>bits</em>&nbsp;)
344          </b></td>
345        </tr>
346
347      </table>
348    </td>
349  </tr>
350</table>
351<table cellspacing=5 cellpadding=0 border=0>
352  <tr>
353    <td>
354      &nbsp;
355    </td>
356    <td>
357
358<p>
359creates a netmask from a specified number of bits.
360<p>
361
362<p>
363 This function converts a prefix length to a netmask. As CIDR (classless internet domain internet domain routing) has taken off, more an more IP addresses are being specified in the format address/prefix (i.e. 192.168.2.3/24, with a corresponding netmask 255.255.255.0). If you need to see what netmask corresponds to the prefix part of the address, this is the function. See also <a class="el" href="ipcalc_c.html#a3">mask2prefix</a>.<dl compact><dt>
364<b>Parameters: </b><dd>
365<table border=0 cellspacing=2 cellpadding=0>
366<tr><td valign=top><em>prefix</em>
367&nbsp;</td><td>
368is the number of bits to create a mask for. </td></tr>
369</table>
370</dl><dl compact><dt>
371<b>Returns: </b><dd>
372a network mask, in network byte order. </dl>    </td>
373  </tr>
374</table>
375<hr><address><small>Generated at Mon Apr 30 16:39:02 2001 for initscripts by
376<a href="http://www.doxygen.org/index.html">
377<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
378width=110 height=53></a>1.2.6 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
379 &copy;&nbsp;1997-2001</small></address>
380</body>
381</html>
Note: See TracBrowser for help on using the repository browser.