regenerate docs

This commit is contained in:
Samuel Thibault 2025-03-30 12:01:04 +02:00
parent 544a622c2a
commit 44b01d70c6
2 changed files with 153 additions and 123 deletions

View file

@ -787,164 +787,189 @@ the event timer, the function declaration should look like:</p>
<pre><code>int plugin_timer(struct param_timer *data);</code></pre> <pre><code>int plugin_timer(struct param_timer *data);</code></pre>
<p>A list of the available events follows, with a list of all the fields <p>A list of the available events follows, with a list of all the fields
in the supplied structure:</p> in the supplied structure:</p>
<table style="width:96%;"> <table style="width:97%;">
<colgroup> <colgroup>
<col style="width: 31%" /> <col style="width: 29%" />
<col style="width: 31%" /> <col style="width: 29%" />
<col style="width: 31%" /> <col style="width: 29%" />
<col style="width: 8%" />
</colgroup> </colgroup>
<thead>
<tr class="header">
<th>Event</th>
<th>Description</th>
<th>Arguments</th>
</tr>
</thead>
<tbody> <tbody>
<tr class="odd"> <tr class="odd">
<td><code>plugin_init</code></td> <td rowspan="2"><h1 id="event">Event</h1>
<td><p>Called when the plugin is loaded. A pointer to a struct <p><code>plugin_init</code></p></td>
containing function pointers is passed as the only argument, allowing <td rowspan="2"><h1 id="description">Description</h1>
the plugin to call back into the main code.</p> <p>Called when the plugin is loaded. A pointer to a struct containing
function pointers is passed as the only argument, allowing the plugin to
call back into the main code.</p>
<p>Prior to loading the plugin, <code>l2tpns</code> checks the API <p>Prior to loading the plugin, <code>l2tpns</code> checks the API
version the plugin was compiled against. All plugins should contain:</p> version the plugin was compiled against. All plugins should contain:</p>
<pre><code>int</code></pre> <pre><code> int</code></pre>
<p>plugin_api_version = PLUGIN_API_VERSION;</p></td> <p>plugin_api_version = PLUGIN_API_VERSION;</p></td>
<td><code>s truct pluginfuncs *</code></td> <td rowspan="2"><h1 id="arguments">Arguments</h1>
<p><code>s truct pluginfuncs *</code></p></td>
<td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td></td>
</tr>
<tr class="odd">
<td>See <code>pluginfuncs</code> structure in <code>plugin.h</code> for <td>See <code>pluginfuncs</code> structure in <code>plugin.h</code> for
available functions.</td> available functions.</td>
<td></td> <td></td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>plugin_done</code></td> <td><code>plugin_done</code></td>
<td>Called when the plugin is unloaded or <code>l2tpns</code> is <td>Called when the plugin is unloaded or <code>l2tpns</code> is
shutdown.</td> shutdown.</td>
<td><code>void</code></td> <td><code>void</code></td>
</tr>
<tr class="even">
<td>No arguments.</td>
<td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td>No arguments.</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td><code>plugin_pre_auth</code></td> <td><code>plugin_pre_auth</code></td>
<td>Called after a RADIUS response has been received, but before it has <td>Called after a RADIUS response has been received, but before it has
been processed by the code. This will allow you to modify the response been processed by the code. This will allow you to modify the response
in some way.</td> in some way.</td>
<td><code>struct plug in param_pre_auth *</code></td> <td><code>struct plug in param_pre_auth *</code></td>
<td></td>
</tr> </tr>
<tr class="even"> <tr class="odd">
<td><code>tunnelt *t</code></td> <td><code>tunnelt *t</code></td>
<td>Tunnel.</td> <td>Tunnel.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>sessiont *s</code></td> <td><code>sessiont *s</code></td>
<td>Session.</td> <td>Session.</td>
<td></td> <td></td>
</tr>
<tr class="even">
<td><code>char *username</code></td>
<td>User name.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>char *password</code></td> <td><code>char *username</code></td>
<td>Password.</td> <td>User name.</td>
<td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>char *password</code></td>
<td>Password.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>int protocol</code></td> <td><code>int protocol</code></td>
<td>Authentication protocol: <code>0xC023</code> for PAP, <td>Authentication protocol: <code>0xC023</code> for PAP,
<code>0xC223</code> for CHAP.</td> <code>0xC223</code> for CHAP.</td>
<td></td> <td></td>
</tr>
<tr class="odd">
<td><code>int continue_auth</code></td>
<td>Set to 0 to stop processing authentication modules.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>int continue_auth</code></td>
<td>Set to 0 to stop processing authentication modules.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>plugin_post_auth</code></td> <td><code>plugin_post_auth</code></td>
<td>Called after a RADIUS response has been received, and the basic <td>Called after a RADIUS response has been received, and the basic
checks have been performed. This is what the <code>garden</code> module checks have been performed. This is what the <code>garden</code> module
uses to force authentication to be accepted.</td> uses to force authentication to be accepted.</td>
<td><code>struct plugi n param_post_auth *</code></td> <td><code>struct plugi n param_post_auth *</code></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>tunnelt *t</code></td> <td><code>tunnelt *t</code></td>
<td>Tunnel.</td> <td>Tunnel.</td>
<td></td> <td></td>
</tr>
<tr class="even">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>char *username</code></td> <td><code>sessiont *s</code></td>
<td>User name.</td> <td>Session.</td>
<td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>char *username</code></td>
<td>User name.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>short auth_allowed</code></td> <td><code>short auth_allowed</code></td>
<td>Initially true or false depending on whether authentication has been <td>Initially true or false depending on whether authentication has been
allowed so far. You can set this to 1 or 0 to force authentication to be allowed so far. You can set this to 1 or 0 to force authentication to be
accepted or rejected.</td> accepted or rejected.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>int protocol</code></td> <td><code>int protocol</code></td>
<td>Authentication protocol: <code>0xC023</code> for PAP, <td>Authentication protocol: <code>0xC023</code> for PAP,
<code>0xC223</code> for CHAP.</td> <code>0xC223</code> for CHAP.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="even"> <tr class="odd">
<td><code>plugin_timer</code></td> <td><code>plugin_timer</code></td>
<td>Run once per second.</td> <td>Run once per second.</td>
<td><code>struct p lugin param_timer *</code></td> <td><code>struct p lugin param_timer *</code></td>
</tr>
<tr class="odd">
<td><code>time_t time_now</code></td>
<td>The current unix timestamp.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>time_t time_now</code></td>
<td>The current unix timestamp.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>plugin_new_session</code></td> <td><code>plugin_new_session</code></td>
<td>Called after a session is fully set up. The session is now ready to <td>Called after a session is fully set up. The session is now ready to
handle traffic.</td> handle traffic.</td>
<td><code>struct plugin param_new_session *</code></td> <td><code>struct plugin param_new_session *</code></td>
</tr>
<tr class="odd">
<td><code>tunnelt *t</code></td>
<td>Tunnel.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>sessiont *s</code></td> <td><code>tunnelt *t</code></td>
<td>Session.</td> <td>Tunnel.</td>
<td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td><code>plugin_kill_session</code></td> <td><code>plugin_kill_session</code></td>
<td>Called when a session is about to be shut down. This may be called <td>Called when a session is about to be shut down. This may be called
multiple times for the same session.</td> multiple times for the same session.</td>
<td><code>struct plugin p aram_kill_session *</code></td> <td><code>struct plugin p aram_kill_session *</code></td>
</tr>
<tr class="even">
<td><code>tunnelt *t</code></td>
<td>Tunnel.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>sessiont *s</code></td> <td><code>tunnelt *t</code></td>
<td>Session.</td> <td>Tunnel.</td>
<td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>plugin_control</code></td> <td><code>plugin_control</code></td>
<td><p>Called in whenever a <code>nsctl</code> packet is received. This <td><p>Called in whenever a <code>nsctl</code> packet is received. This
should handle the packet and form a response if required.</p> should handle the packet and form a response if required.</p>
@ -954,119 +979,135 @@ of strings as follows:</p>
<pre><code>char</code></pre> <pre><code>char</code></pre>
<p>*plugin_control_hel p[] = { …, NULL };</p></td> <p>*plugin_control_hel p[] = { …, NULL };</p></td>
<td><code>struct plu gin param_control *</code></td> <td><code>struct plu gin param_control *</code></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>int iam_master</code></td> <td><code>int iam_master</code></td>
<td>If true, this node is the cluster master.</td> <td>If true, this node is the cluster master.</td>
<td></td> <td></td>
</tr>
<tr class="even">
<td><code>int argc</code></td>
<td><code>nsctl</code> arguments.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>char **argc</code></td> <td><code>int argc</code></td>
<td><code>nsctl</code> arguments.</td>
<td></td> <td></td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>char **argc</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>int response</code></td> <td><code>int response</code></td>
<td>Response from control message (if handled): should be either <td>Response from control message (if handled): should be either
<code>NSCTL_RES_OK</code> or <code>NSCTL_RES_ERR</code>.</td> <code>NSCTL_RES_OK</code> or <code>NSCTL_RES_ERR</code>.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="even">
<td><code>char *additional</code></td> <td><code>char *additional</code></td>
<td>Additional information, output by <code>nsctl</code> on receiving <td>Additional information, output by <code>nsctl</code> on receiving
the response.</td> the response.</td>
<td></td> <td></td>
</tr> <td></td>
<tr class="even">
<td><code>plu gin_radius_response</code></td>
<td>Called whenever a RADIUS response includes a
<code>Cisco-AVPair</code> value. The value is split into
key<code>=</code>value pairs. Will be called once for each pair in the
response.</td>
<td><code>struct plugin para m_radius_response *</code></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td colspan="4"><code>plugin_radius_response</code> | Called whenever a
|
<code>struct plugin para | | RADIUS response | m_radius_response *</code>
| | includes a | | | <code>Cisco-AVPair</code> | | | value. The value is
| | | split into | | | key<code>=</code>value pairs. | | | Will be
called once | | | for each pair in the | | | response. | |</td>
</tr>
<tr class="even">
<td><code>tunnelt *t</code></td> <td><code>tunnelt *t</code></td>
<td>Tunnel.</td> <td>Tunnel.</td>
<td></td> <td></td>
</tr>
<tr class="even">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td><code>char *key</code></td> <td><code>char *key</code></td>
<td>Key and value.</td> <td>Key and value.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="even"> <tr class="odd">
<td><code>char *value</code></td> <td><code>char *value</code></td>
<td></td> <td></td>
<td></td> <td></td>
</tr>
<tr class="odd">
<td><code>plugin_radius_reset</code></td>
<td>Called whenever a RADIUS CoA request is received to reset any
options to default values before the new values are applied.</td>
<td><code>struct p aram_radius_reset *</code></td>
</tr>
<tr class="even">
<td><code>tunnelt *t</code></td>
<td>Tunnel.</td>
<td></td>
</tr>
<tr class="odd">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td> <td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>pl ugin_radius_account</code></td> <td colspan="4"><code>plugin_radius_reset</code> | Called whenever a |
<td>Called when preparing a RADIUS accounting record to allow additional <code>struct p | | RADIUS CoA request | aram_radius_reset *</code>
data to be added to the packet.</td> | | is received to reset | | | any options to | | | default values | | |
<td><code>struct par am_radius_account *</code></td> before the new | | | values are applied. | |</td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td><code>tunnelt *t</code></td> <td><code>tunnelt *t</code></td>
<td>Tunnel.</td> <td>Tunnel.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td><code>sessiont *s</code></td> <td><code>sessiont *s</code></td>
<td>Session.</td> <td>Session.</td>
<td></td> <td></td>
<td></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td colspan="4"><code>plugin_radius_account</code> | Called when |
<code>struct par | | preparing a RADIUS | am_radius_account *</code>
| | accounting record to | | | allow additional | | | data to be added
to | | | the packet. | |</td>
</tr>
<tr class="even">
<td><code>tunnelt *t</code></td>
<td>Tunnel.</td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td><code>sessiont *s</code></td>
<td>Session.</td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td><code>uint8_t **packet</code></td> <td><code>uint8_t **packet</code></td>
<td>Pointer to the end of the currently assembled packet buffer. The <td>Pointer to the end of the currently assembled packet buffer. The
value should be incremented by the length of any data added.</td> value should be incremented by the length of any data added.</td>
<td></td> <td></td>
</tr> <td></td>
<tr class="even">
<td><code>p lugin_become_master</code></td>
<td>Called when a node elects itself cluster master.</td>
<td><code>void</code></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td colspan="4"><code>plugin_become_master</code> | Called when a node |
<code>void</code> | | elects itself | | | cluster master. | |</td>
</tr>
<tr class="even">
<td>No arguments.</td> <td>No arguments.</td>
<td></td> <td></td>
<td></td> <td></td>
</tr> <td></td>
<tr class="even">
<td><code>plugin _new_session_master</code></td>
<td>Called once for each open session on becoming cluster master.</td>
<td><code>sessiont *</code></td>
</tr> </tr>
<tr class="odd"> <tr class="odd">
<td colspan="4"><code>plugin_new_session_master</code> | Called once for
each | <code>sessiont *</code> | open session on | | | becoming cluster
| | | master. | |</td>
</tr>
<tr class="even">
<td>Session.</td> <td>Session.</td>
<td></td> <td></td>
<td></td> <td></td>
<td></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -481,18 +481,7 @@ VPN clients):</p>
# iptables --append FORWARD --in-interface eth0 -j ACCEPT # iptables --append FORWARD --in-interface eth0 -j ACCEPT
# echo 1 &gt; /proc/sys/net/ipv4/ip_forward</code></pre> # echo 1 &gt; /proc/sys/net/ipv4/ip_forward</code></pre>
<h1 id="references">References</h1> <h1 id="references">References</h1>
<dl> <p><a href="http://www.jacco2.dds.nl/networking/freeswan-l2tp.html">VPN
<dt>VPN Reference</dt> Reference</a></p>
<dd> <p><a href="https://code.ffdn.org/l2tpns/l2tpns/">L2TPns Project</a></p>
<p><a <p><a href="http://www.openswan.org">OpenSWAN Project</a></p>
href="http://www.jacco2.dds.nl/networking/freeswan-l2tp.html"></a></p>
</dd>
<dt>L2TPns Project</dt>
<dd>
<p><a href="http://l2tpns.sourceforge.net"></a></p>
</dd>
<dt>OpenSWAN Project</dt>
<dd>
<p><a href="http://www.openswan.org"></a></p>
</dd>
</dl>