summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ng_pptpgre.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/ng_pptpgre.4 3.html')
-rw-r--r--static/freebsd/man4/ng_pptpgre.4 3.html179
1 files changed, 179 insertions, 0 deletions
diff --git a/static/freebsd/man4/ng_pptpgre.4 3.html b/static/freebsd/man4/ng_pptpgre.4 3.html
new file mode 100644
index 00000000..486ce1a0
--- /dev/null
+++ b/static/freebsd/man4/ng_pptpgre.4 3.html
@@ -0,0 +1,179 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">NG_PPTPGRE(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">NG_PPTPGRE(4)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<p class="Pp"><code class="Nm">ng_pptpgre</code> &#x2014; <span class="Nd">PPTP
+ GRE protocol netgraph node type</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<p class="Pp"><code class="In">#include
+ &lt;<a class="In">sys/types.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include
+ &lt;<a class="In">netgraph/ng_pptpgre.h</a>&gt;</code></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">pptpgre</code> node type performs Generic
+ Routing Encapsulation (GRE) over IP for the PPTP protocol as specified by
+ RFC 2637. This involves packet encapsulation, sequencing, acknowledgement,
+ and an adaptive timeout sliding window mechanism. This node type does not
+ handle any of the TCP control protocol or call negotiation defined by
+ PPTP.</p>
+<p class="Pp">This node type expects to receive complete IP packets, including
+ the IP header, on the &#x201C;<code class="Li">lower</code>&#x201D; hook,
+ but it transmits outgoing frames without any IP header. The typical use for
+ this node type would be to connect the
+ &#x201C;<code class="Li">upper</code>&#x201D; hook to one of the link hooks
+ of a <a class="Xr">ng_ppp(4)</a> node, and the
+ &#x201C;<code class="Li">lower</code>&#x201D; hook to the
+ &#x201C;<code class="Li">inet/raw/gre</code>&#x201D; hook of a
+ <a class="Xr">ng_ksocket(4)</a> node.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HOOKS"><a class="permalink" href="#HOOKS">HOOKS</a></h1>
+<p class="Pp">This node type supports the following hooks:</p>
+<dl class="Bl-tag">
+ <dt id="session_hhhh"><var class="Va">session_hhhh</var></dt>
+ <dd>Session 0xhhhh data packets to the upper protocol layers</dd>
+ <dt id="upper"><var class="Va">upper</var></dt>
+ <dd>Same as session_hhhh, but for single session with configurable cid
+ (legacy)</dd>
+ <dt id="lower"><var class="Va">lower</var></dt>
+ <dd>Connection to the lower protocol layers</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CONTROL_MESSAGES"><a class="permalink" href="#CONTROL_MESSAGES">CONTROL
+ MESSAGES</a></h1>
+<p class="Pp">This node type supports the generic control messages, plus the
+ following:</p>
+<dl class="Bl-tag">
+ <dt id="NGM_PPTPGRE_SET_CONFIG"><a class="permalink" href="#NGM_PPTPGRE_SET_CONFIG"><code class="Dv">NGM_PPTPGRE_SET_CONFIG</code></a>
+ (<code class="Ic">setconfig</code>)</dt>
+ <dd>This command resets and configures hook for a session. If corresponding
+ session_hhhh hook is not connected, upper hook will be configured. This
+ command takes a <var class="Vt">struct ng_pptpgre_conf</var> as an
+ argument:
+ <div class="Bd Pp Li">
+ <pre>/* Configuration for a session */
+struct ng_pptpgre_conf {
+ u_char enabled; /* enables traffic flow */
+ u_char enableDelayedAck; /* enables delayed acks */
+ u_char enableAlwaysAck; /* always include ack with data */
+ u_char enableWindowing; /* enable windowing algorithm */
+ uint16_t cid; /* my call id */
+ uint16_t peerCid; /* peer call id */
+ uint16_t recvWin; /* peer recv window size */
+ uint16_t peerPpd; /* peer packet processing delay
+ (in 1/10 of a second) */
+};</pre>
+ </div>
+ <p class="Pp">The <var class="Va">enabled</var> field enables traffic flow
+ through the node. The <var class="Va">enableDelayedAck</var> field
+ enables delayed acknowledgement (maximum 250 milliseconds), which is a
+ useful optimization and should generally be turned on.
+ <var class="Va">enableAlwaysAck</var> field enables sending
+ acknowledgements with every data packet, which is probably helpful as
+ well.</p>
+ <p class="Pp"><var class="Va">enableWindowing</var> enables the PPTP packet
+ windowing mechanism specified by the protocol. Disabling this will cause
+ the node to violate the protocol, possibly confusing other PPTP peers,
+ but often results in better performance. The windowing mechanism is a
+ design error in the PPTP protocol; L2TP, the successor to PPTP, removes
+ it.</p>
+ <p class="Pp">The remaining fields are as supplied by the PPTP virtual call
+ setup process.</p>
+ </dd>
+ <dt id="NGM_PPTPGRE_GET_CONFIG"><a class="permalink" href="#NGM_PPTPGRE_GET_CONFIG"><code class="Dv">NGM_PPTPGRE_GET_CONFIG</code></a>
+ (<code class="Ic">getconfig</code>)</dt>
+ <dd>Takes two byte argument as cid and returns the current configuration as a
+ <var class="Vt">struct ng_pptpgre_conf</var>.</dd>
+ <dt id="NGM_PPTPGRE_GET_STATS"><a class="permalink" href="#NGM_PPTPGRE_GET_STATS"><code class="Dv">NGM_PPTPGRE_GET_STATS</code></a>
+ (<code class="Ic">getstats</code>)</dt>
+ <dd>This command returns a <var class="Vt">struct ng_pptpgre_stats</var>
+ containing various node statistics.</dd>
+ <dt id="NGM_PPTPGRE_CLR_STATS"><a class="permalink" href="#NGM_PPTPGRE_CLR_STATS"><code class="Dv">NGM_PPTPGRE_CLR_STATS</code></a>
+ (<code class="Ic">clrstats</code>)</dt>
+ <dd>This command resets the node statistics.</dd>
+ <dt id="NGM_PPTPGRE_GETCLR_STATS"><a class="permalink" href="#NGM_PPTPGRE_GETCLR_STATS"><code class="Dv">NGM_PPTPGRE_GETCLR_STATS</code></a>
+ (<code class="Ic">getclrstats</code>)</dt>
+ <dd>This command atomically gets and resets the node statistics, returning a
+ <var class="Vt">struct ng_pptpgre_stats</var>.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SHUTDOWN"><a class="permalink" href="#SHUTDOWN">SHUTDOWN</a></h1>
+<p class="Pp">This node shuts down upon receipt of a
+ <code class="Dv">NGM_SHUTDOWN</code> control message, or when both hooks
+ have been disconnected.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYSCTL_VARIABLES"><a class="permalink" href="#SYSCTL_VARIABLES">SYSCTL
+ VARIABLES</a></h1>
+<p class="Pp">A set of <a class="Xr">sysctl(8)</a> variables controls ability of
+ this node to deal with some amount of packet reorder that sometimes happens
+ in transit. Packet reorder results in packet drops (unless the order is
+ restored) as PPP protocol can not deliver reordered data. These variables
+ are shown below together with their default value and meaning:</p>
+<dl class="Bl-tag">
+ <dt id="net.graph.pptpgre.reorder_max:"><var class="Va">net.graph.pptpgre.reorder_max:
+ 1</var></dt>
+ <dd>Defines maximum length of node's private reorder queue used to keep data
+ waiting for late packets. Zero value disables reordering. Default value
+ allows the node to restore the order for two packets swapped in transit.
+ Greater values allow the node to deliver packets being late after more
+ packets in sequence at cost of increased kernel memory usage.</dd>
+ <dt id="net.graph.pptpgre.reorder_timeout:"><var class="Va">net.graph.pptpgre.reorder_timeout:
+ 1</var></dt>
+ <dd>Defines time value in milliseconds used to wait for late packets.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">netgraph(4)</a>, <a class="Xr">ng_ksocket(4)</a>,
+ <a class="Xr">ng_ppp(4)</a>, <a class="Xr">ngctl(8)</a>,
+ <a class="Xr">sysctl(8)</a></p>
+<p class="Pp"><cite class="Rs"><span class="RsA">K. Hamzeh</span>,
+ <span class="RsA">G. Pall</span>, <span class="RsA">W. Verthein</span>,
+ <span class="RsA">J. Taarud</span>, <span class="RsA">W. Little</span>, and
+ <span class="RsA">G. Zorn</span>, <span class="RsT">Point-to-Point Tunneling
+ Protocol (PPTP)</span>, <span class="RsO">RFC 2637</span>.</cite></p>
+<p class="Pp"><cite class="Rs"><span class="RsA">S. Hanks</span>,
+ <span class="RsA">T. Li</span>, <span class="RsA">D. Farinacci</span>, and
+ <span class="RsA">P. Traina</span>, <span class="RsT">Generic Routing
+ Encapsulation over IPv4 networks</span>, <span class="RsO">RFC
+ 1702</span>.</cite></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <code class="Nm">ng_pptpgre</code> node type was implemented
+ in <span class="Ux">FreeBSD 4.0</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp"><span class="An">Archie Cobbs</span>
+ &lt;<a class="Mt" href="mailto:archie@FreeBSD.org">archie@FreeBSD.org</a>&gt;</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
+<p class="Pp">The node should not expect incoming GRE packets to have an IP
+ header. This behavior is inherited from the (converse) behavior of raw IP
+ sockets. An intermediate node that strips IP headers in one direction should
+ be used instead.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">November 4, 2018</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>