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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
<table class="head">
<tr>
<td class="head-ltitle">NG_PRED1(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">NG_PRED1(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_pred1</code> —
<span class="Nd">Predictor-1 PPP compression (RFC 1978) 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
<<a class="In">sys/types.h</a>></code>
<br/>
<code class="In">#include
<<a class="In">netgraph/ng_pred1.h</a>></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">pred1</code> node type implements the
Predictor-1 sub-protocols of the Compression Control Protocol (CCP).</p>
<p class="Pp">The node has two hooks, <var class="Va">comp</var> for compression
and <var class="Va">decomp</var> for decompression. Only one of them can be
connected at the same time, specifying node's operation mode. Typically that
hooks would be connected to the <a class="Xr">ng_ppp(4)</a> node type hook
of the same name.</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>
<p class="Pp"></p>
<dl class="Bl-tag Bl-compact">
<dt id="comp"><var class="Va">comp</var></dt>
<dd>Connection to <a class="Xr">ng_ppp(4)</a> <var class="Va">compress</var>
hook. Incoming frames are compressed and sent back out the same hook.</dd>
<dt id="decomp"><var class="Va">decomp</var></dt>
<dd>Connection to <a class="Xr">ng_ppp(4)</a> <var class="Va">decompress</var>
hook. Incoming frames are decompressed and sent back out the same
hook.</dd>
</dl>
<p class="Pp">Only one hook can be connected at the same time, specifying node's
operation mode.</p>
</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_PRED1_CONFIG"><a class="permalink" href="#NGM_PRED1_CONFIG"><code class="Dv">NGM_PRED1_CONFIG</code></a>
(<code class="Ic">config</code>)</dt>
<dd>This command resets and configures the node for a session (i.e., for
compression or decompression). This command takes a <var class="Vt">struct
ng_pred1_config</var> as an argument:
<div class="Bd Pp Bd-indent Li">
<pre>struct ng_pred1_config {
u_char enable; /* node enabled */
};</pre>
</div>
The <var class="Ft">enable</var> field enables traffic flow through the
node.</dd>
<dt id="NGM_PRED1_RESETREQ"><a class="permalink" href="#NGM_PRED1_RESETREQ"><code class="Dv">NGM_PRED1_RESETREQ</code></a>
(<code class="Ic">resetreq</code>)</dt>
<dd>This message contains no arguments, and is bi-directional. If an error is
detected during decompression, this message is sent by the node to the
originator of the <code class="Dv">NGM_PRED1_CONFIG</code> message that
initiated the session. The receiver should respond by sending a PPP CCP
Reset-Request to the peer.
<p class="Pp">This message may also be received by this node type when a CCP
Reset-Request or Reset-Ack is received by the local PPP entity. The node
will respond by flushing its compression state so the sides can
resynchronize.</p>
</dd>
<dt id="NGM_PRED1_GET_STATS"><a class="permalink" href="#NGM_PRED1_GET_STATS"><code class="Dv">NGM_PRED1_GET_STATS</code></a>
(<code class="Ic">getstats</code>)</dt>
<dd>This control message obtains statistics for a given hook. The statistics
are returned in <var class="Vt">struct ng_pred1_stats</var>:
<div class="Bd Pp Li">
<pre>struct ng_pred1_stats {
uint64_t FramesPlain;
uint64_t FramesComp;
uint64_t FramesUncomp;
uint64_t InOctets;
uint64_t OutOctets;
uint64_t Errors;
};</pre>
</div>
</dd>
<dt id="NGM_PRED1_CLR_STATS"><a class="permalink" href="#NGM_PRED1_CLR_STATS"><code class="Dv">NGM_PRED1_CLR_STATS</code></a>
(<code class="Ic">clrstats</code>)</dt>
<dd>This control message clears statistics for a given hook.</dd>
<dt id="NGM_PRED1_GETCLR_STATS"><a class="permalink" href="#NGM_PRED1_GETCLR_STATS"><code class="Dv">NGM_PRED1_GETCLR_STATS</code></a>
(<code class="Ic">getclrstats</code>)</dt>
<dd>This control message obtains and clears statistics for a given hook.</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 hook have been
disconnected.</p>
</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_ppp(4)</a>,
<a class="Xr">ngctl(8)</a></p>
<p class="Pp"><cite class="Rs"><span class="RsA">D. Rand</span>,
<span class="RsT">PPP Predictor Compression Protocol</span>,
<span class="RsO">RFC 1978</span>.</cite></p>
<p class="Pp"><cite class="Rs"><span class="RsA">W. Simpson</span>,
<span class="RsT">The Point-to-Point Protocol (PPP)</span>,
<span class="RsO">RFC 1661</span>.</cite></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">Alexander Motin</span>
<<a class="Mt" href="mailto:mav@alkar.net">mav@alkar.net</a>></p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">Due to nature of netgraph PPP implementation there are possible
race conditions between data packet and ResetAck CCP packet in case of
packet loss. As result, packet loss can produce bigger performance
degradation than supposed by protocol.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">December 24, 2006</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|