1.\" 2.\" Copyright (c) 2001-2003 3.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). 4.\" All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25.\" SUCH DAMAGE. 26.\" 27.\" Author: Hartmut Brandt <harti@freebsd.org> 28.\"
| 1.\" 2.\" Copyright (c) 2001-2003 3.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). 4.\" All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25.\" SUCH DAMAGE. 26.\" 27.\" Author: Hartmut Brandt <harti@freebsd.org> 28.\"
|
29.\" $FreeBSD: head/share/man/man4/ng_sscop.4 131472 2004-07-02 19:07:33Z ru $
| 29.\" $FreeBSD: head/share/man/man4/ng_sscop.4 131530 2004-07-03 18:29:24Z ru $
|
30.\" 31.\" ng_sscop(4) man page 32.\" 33.Dd October 24, 2003 34.Dt NG_SSCOP 4 35.Os FreeBSD 36.Sh NAME 37.Nm ng_sscop 38.Nd netgraph SSCOP node type 39.Sh SYNOPSIS 40.Fd #include <netnatm/saal/sscopdef.h> 41.Fd #include <netgraph/atm/ng_sscop.h> 42.Sh DESCIPTION 43The 44.Nm
| 30.\" 31.\" ng_sscop(4) man page 32.\" 33.Dd October 24, 2003 34.Dt NG_SSCOP 4 35.Os FreeBSD 36.Sh NAME 37.Nm ng_sscop 38.Nd netgraph SSCOP node type 39.Sh SYNOPSIS 40.Fd #include <netnatm/saal/sscopdef.h> 41.Fd #include <netgraph/atm/ng_sscop.h> 42.Sh DESCIPTION 43The 44.Nm
|
45netgraph node implements the ITU-T standard Q.2110. This standard describes
| 45netgraph node implements the ITU-T standard Q.2110. 46This standard describes
|
46the so called Service Specific Connection Oriented Protocol (SSCOP) that 47is used to carry signalling messages over the private and public UNIs and 48the public NNI. 49This protocol is a transport protocol with selective 50acknowledgements and can be tailored to the environment. 51This implementation is a full implementation of that standard. 52.Pp 53After creation of the node, the SSCOP instance must be created by sending 54an enable message to the node. 55If the node is enabled, the SSCOP parameters 56can be retrieved and modified and the protocol can be started. 57.Pp 58The node is shutdown either by a 59.Dv NGM_SHUTDOWN 60message or when all hooks are disconnected. 61.Sh HOOKS 62Each 63.Nm 64node has three hooks with fixed names: 65.Bl -tag -width manage 66.It Dv lower 67This hook is the hook that must be connected to a node that ensures
| 47the so called Service Specific Connection Oriented Protocol (SSCOP) that 48is used to carry signalling messages over the private and public UNIs and 49the public NNI. 50This protocol is a transport protocol with selective 51acknowledgements and can be tailored to the environment. 52This implementation is a full implementation of that standard. 53.Pp 54After creation of the node, the SSCOP instance must be created by sending 55an enable message to the node. 56If the node is enabled, the SSCOP parameters 57can be retrieved and modified and the protocol can be started. 58.Pp 59The node is shutdown either by a 60.Dv NGM_SHUTDOWN 61message or when all hooks are disconnected. 62.Sh HOOKS 63Each 64.Nm 65node has three hooks with fixed names: 66.Bl -tag -width manage 67.It Dv lower 68This hook is the hook that must be connected to a node that ensures
|
68transport of packets to and from the remote peer node. Normally this is a
| 69transport of packets to and from the remote peer node. 70Normally this is a
|
69.Xr ng_atm 4 70node with an AAL5 hook, but the 71.Nm 72node is able to work on any packet-transporting layer, like, for example, 73IP or UDP. 74The node handles flow control messages received on 75this hook: if it receives a 76.Dv NGM_HIGH_WATER_PASSED 77message it declares the 78.Ql lower layer busy 79state. 80If a 81.Dv NGM_LOW_WATER_PASSED 82message is received the busy state is cleared. 83Note, that the node does not 84look at the message contents of these flow control messages. 85.It Dv upper 86This is the interface to the SSCOP user. 87This interface uses the following message format: 88.Bd -literal 89struct sscop_arg { 90 uint32_t sig; 91 uint32_t arg; /* opt. sequence number or clear-buff */ 92 u_char data[]; 93}; 94.Ed 95.Pp 96.Fa sig 97is one of the signals defined in the standard: 98.Bd -literal 99enum sscop_aasig { 100 SSCOP_ESTABLISH_request, /* <- UU, BR */ 101 SSCOP_ESTABLISH_indication, /* -> UU */ 102 SSCOP_ESTABLISH_response, /* <- UU, BR */ 103 SSCOP_ESTABLISH_confirm, /* -> UU */ 104 105 SSCOP_RELEASE_request, /* <- UU */ 106 SSCOP_RELEASE_indication, /* -> UU, SRC */ 107 SSCOP_RELEASE_confirm, /* -> */ 108 109 SSCOP_DATA_request, /* <- MU */ 110 SSCOP_DATA_indication, /* -> MU, SN */ 111 112 SSCOP_UDATA_request, /* <- MU */ 113 SSCOP_UDATA_indication, /* -> MU */ 114 115 SSCOP_RECOVER_indication, /* -> */ 116 SSCOP_RECOVER_response, /* <- */ 117 118 SSCOP_RESYNC_request, /* <- UU */ 119 SSCOP_RESYNC_indication, /* -> UU */ 120 SSCOP_RESYNC_response, /* <- */ 121 SSCOP_RESYNC_confirm, /* -> */ 122 123 SSCOP_RETRIEVE_request, /* <- RN */ 124 SSCOP_RETRIEVE_indication, /* -> MU */ 125 SSCOP_RETRIEVE_COMPL_indication,/* -> */ 126}; 127.Ed 128.Pp 129The arrows in the comment show the direction of the signal whether it 130is a signal that comes out of the node 131.Ql -> 132or is sent by the node user to the node 133.Ql <- . 134The 135.Fa arg 136field contains the argument to some of the signals: it is either a PDU 137sequence number or the 138.Dv CLEAR-BUFFER 139flag. 140There are a number of special sequence numbers for some operations: 141.Bl -column SSCOP_RETRIEVE_UNKNOWN -offset indent 142.It Dv SSCOP_MAXSEQNO Ta maximum legal sequence number 143.It Dv SSCOP_RETRIEVE_UNKNOWN Ta retrieve transmission queue 144.It Dv SSCOP_RETRIEVE_TOTAL Ta retrieve transmission buffer and queue 145.El 146.Pp 147For signals that carry user data (as, for example, 148.Dv SSCOP_DATA_request ) 149these two fields are followed by the variable sized user data. 150.Pp 151If the upper hook is disconnected and the SSCOP instance is not in the idle 152state and the lower hook is still connected, an 153.Dv SSCOP_RELEASE_request 154is executed to release the SSCOP connection. 155.It Dv manage 156This is the management interface defined in the standard. 157The data structure used here is: 158.Bd -literal 159struct sscop_marg { 160 uint32_t sig; 161 u_char data[]; 162}; 163.Ed 164.Pp 165Here 166.Dv sig 167is one of 168.Bd -literal 169enum sscop_maasig { 170 SSCOP_MDATA_request, /* <- MU */ 171 SSCOP_MDATA_indication, /* -> MU */ 172 SSCOP_MERROR_indication, /* -> CODE, CNT */ 173}; 174.Ed 175.Pp 176The 177.Dv SSCOP_MDATA 178signals are followed by the actual management data, where the 179.Dv SSCOP_MERROR 180signal has the form: 181.Bd -literal 182struct sscop_merr { 183 uint32_t sig; 184 uint32_t err; /* error code */ 185 uint32_t cnt; /* error count */ 186}; 187.Ed 188.Sh CONTROL MESSAGES 189The 190.Nm 191node understands the generic messages plus the following: 192.Bl -tag -width xxx 193.It Dv NGM_SSCOP_SETPARAM 194Set operational parameters of the SSCOP instance and takes the 195following structure: 196.Bd -literal 197struct ng_sscop_setparam { 198 uint32_t mask; 199 struct sscop_param param; 200}; 201.Ed 202.Pp 203The sub-structure 204.Dv param 205contains the parameters to set and the 206.Dv mask 207field contains a bit mask, telling which of the parameters to set and which 208to ignore. 209If a bit is set, the corresponding parameter is set. 210The parameters are: 211.Bd -literal 212struct sscop_param { 213 uint32_t timer_cc; /* timer_cc in msec */ 214 uint32_t timer_poll; /* timer_poll im msec */ 215 uint32_t timer_keep_alive;/* timer_keep_alive in msec */ 216 uint32_t timer_no_response;/*timer_no_response in msec */ 217 uint32_t timer_idle; /* timer_idle in msec */ 218 uint32_t maxk; /* maximum user data in bytes */ 219 uint32_t maxj; /* maximum u-u info in bytes */ 220 uint32_t maxcc; /* max. retransmissions for control packets */ 221 uint32_t maxpd; /* max. vt(pd) before sending poll */ 222 uint32_t maxstat; /* max. number of elements in stat list */ 223 uint32_t mr; /* initial window */ 224 uint32_t flags; /* flags */ 225}; 226.Ed 227.Pp 228The 229.Dv flags 230field contains the following flags influencing SSCOP operation: 231.Bl -column SSCOP_POLLREX -offset indent 232.It Dv SSCOP_ROBUST Ta enable atmf/97-0216 robustness enhancement 233.It Dv SSCOP_POLLREX Ta send POLL after each retransmission 234.El 235.Pp 236The bitmap has the following bits: 237.Bl -column SSCOP_POLLREXx -offset indent 238.It Dv SSCOP_SET_TCC Ta set Dv timer_cc 239.It Dv SSCOP_SET_TPOLL Ta set Dv timer_poll 240.It Dv SSCOP_SET_TKA Ta set Dv timer_keep_alive 241.It Dv SSCOP_SET_TNR Ta set Dv timer_no_response 242.It Dv SSCOP_SET_TIDLE Ta set Dv timer_idle 243.It Dv SSCOP_SET_MAXK Ta set Dv maxk 244.It Dv SSCOP_SET_MAXJ Ta set Dv maxj 245.It Dv SSCOP_SET_MAXCC Ta set Dv maxcc 246.It Dv SSCOP_SET_MAXPD Ta set Dv maxpd 247.It Dv SSCOP_SET_MAXSTAT Ta set Dv maxstat 248.It Dv SSCOP_SET_MR Ta set the initial window 249.It Dv SSCOP_SET_ROBUST Ta set or clear Dv SSCOP_ROBUST 250.It Dv SSCOP_SET_POLLREX Ta set or clear Dv SSCOP_POLLREX 251.El 252.Pp 253The node responds to the 254.Dv NGM_SSCOP_SETPARAM 255message with the following response: 256.Bd -literal 257struct ng_sscop_setparam_resp { 258 uint32_t mask; 259 int32_t error; 260}; 261.Ed 262.Pp 263Here 264.Dv mask 265contains the a bitmask of the parameters that the user requested to set, 266but that could not be set and 267.Dv error 268is an 269.Xr errno 3 270code describing why the parameter could not be set. 271.It Dv NGM_SSCOP_GETPARAM 272This message returns the current operational parameters of the SSCOP 273instance in a 274.Fa sscop_param 275structure. 276.It Dv NGM_SSCOP_ENABLE 277This message creates the actual SSCOP instance and initializes it. 278Until this is done, parameters may neither be retrieved not set and all 279message received on any hook are discarded. 280.It Dv NGM_SSCOP_DISABLE
| 71.Xr ng_atm 4 72node with an AAL5 hook, but the 73.Nm 74node is able to work on any packet-transporting layer, like, for example, 75IP or UDP. 76The node handles flow control messages received on 77this hook: if it receives a 78.Dv NGM_HIGH_WATER_PASSED 79message it declares the 80.Ql lower layer busy 81state. 82If a 83.Dv NGM_LOW_WATER_PASSED 84message is received the busy state is cleared. 85Note, that the node does not 86look at the message contents of these flow control messages. 87.It Dv upper 88This is the interface to the SSCOP user. 89This interface uses the following message format: 90.Bd -literal 91struct sscop_arg { 92 uint32_t sig; 93 uint32_t arg; /* opt. sequence number or clear-buff */ 94 u_char data[]; 95}; 96.Ed 97.Pp 98.Fa sig 99is one of the signals defined in the standard: 100.Bd -literal 101enum sscop_aasig { 102 SSCOP_ESTABLISH_request, /* <- UU, BR */ 103 SSCOP_ESTABLISH_indication, /* -> UU */ 104 SSCOP_ESTABLISH_response, /* <- UU, BR */ 105 SSCOP_ESTABLISH_confirm, /* -> UU */ 106 107 SSCOP_RELEASE_request, /* <- UU */ 108 SSCOP_RELEASE_indication, /* -> UU, SRC */ 109 SSCOP_RELEASE_confirm, /* -> */ 110 111 SSCOP_DATA_request, /* <- MU */ 112 SSCOP_DATA_indication, /* -> MU, SN */ 113 114 SSCOP_UDATA_request, /* <- MU */ 115 SSCOP_UDATA_indication, /* -> MU */ 116 117 SSCOP_RECOVER_indication, /* -> */ 118 SSCOP_RECOVER_response, /* <- */ 119 120 SSCOP_RESYNC_request, /* <- UU */ 121 SSCOP_RESYNC_indication, /* -> UU */ 122 SSCOP_RESYNC_response, /* <- */ 123 SSCOP_RESYNC_confirm, /* -> */ 124 125 SSCOP_RETRIEVE_request, /* <- RN */ 126 SSCOP_RETRIEVE_indication, /* -> MU */ 127 SSCOP_RETRIEVE_COMPL_indication,/* -> */ 128}; 129.Ed 130.Pp 131The arrows in the comment show the direction of the signal whether it 132is a signal that comes out of the node 133.Ql -> 134or is sent by the node user to the node 135.Ql <- . 136The 137.Fa arg 138field contains the argument to some of the signals: it is either a PDU 139sequence number or the 140.Dv CLEAR-BUFFER 141flag. 142There are a number of special sequence numbers for some operations: 143.Bl -column SSCOP_RETRIEVE_UNKNOWN -offset indent 144.It Dv SSCOP_MAXSEQNO Ta maximum legal sequence number 145.It Dv SSCOP_RETRIEVE_UNKNOWN Ta retrieve transmission queue 146.It Dv SSCOP_RETRIEVE_TOTAL Ta retrieve transmission buffer and queue 147.El 148.Pp 149For signals that carry user data (as, for example, 150.Dv SSCOP_DATA_request ) 151these two fields are followed by the variable sized user data. 152.Pp 153If the upper hook is disconnected and the SSCOP instance is not in the idle 154state and the lower hook is still connected, an 155.Dv SSCOP_RELEASE_request 156is executed to release the SSCOP connection. 157.It Dv manage 158This is the management interface defined in the standard. 159The data structure used here is: 160.Bd -literal 161struct sscop_marg { 162 uint32_t sig; 163 u_char data[]; 164}; 165.Ed 166.Pp 167Here 168.Dv sig 169is one of 170.Bd -literal 171enum sscop_maasig { 172 SSCOP_MDATA_request, /* <- MU */ 173 SSCOP_MDATA_indication, /* -> MU */ 174 SSCOP_MERROR_indication, /* -> CODE, CNT */ 175}; 176.Ed 177.Pp 178The 179.Dv SSCOP_MDATA 180signals are followed by the actual management data, where the 181.Dv SSCOP_MERROR 182signal has the form: 183.Bd -literal 184struct sscop_merr { 185 uint32_t sig; 186 uint32_t err; /* error code */ 187 uint32_t cnt; /* error count */ 188}; 189.Ed 190.Sh CONTROL MESSAGES 191The 192.Nm 193node understands the generic messages plus the following: 194.Bl -tag -width xxx 195.It Dv NGM_SSCOP_SETPARAM 196Set operational parameters of the SSCOP instance and takes the 197following structure: 198.Bd -literal 199struct ng_sscop_setparam { 200 uint32_t mask; 201 struct sscop_param param; 202}; 203.Ed 204.Pp 205The sub-structure 206.Dv param 207contains the parameters to set and the 208.Dv mask 209field contains a bit mask, telling which of the parameters to set and which 210to ignore. 211If a bit is set, the corresponding parameter is set. 212The parameters are: 213.Bd -literal 214struct sscop_param { 215 uint32_t timer_cc; /* timer_cc in msec */ 216 uint32_t timer_poll; /* timer_poll im msec */ 217 uint32_t timer_keep_alive;/* timer_keep_alive in msec */ 218 uint32_t timer_no_response;/*timer_no_response in msec */ 219 uint32_t timer_idle; /* timer_idle in msec */ 220 uint32_t maxk; /* maximum user data in bytes */ 221 uint32_t maxj; /* maximum u-u info in bytes */ 222 uint32_t maxcc; /* max. retransmissions for control packets */ 223 uint32_t maxpd; /* max. vt(pd) before sending poll */ 224 uint32_t maxstat; /* max. number of elements in stat list */ 225 uint32_t mr; /* initial window */ 226 uint32_t flags; /* flags */ 227}; 228.Ed 229.Pp 230The 231.Dv flags 232field contains the following flags influencing SSCOP operation: 233.Bl -column SSCOP_POLLREX -offset indent 234.It Dv SSCOP_ROBUST Ta enable atmf/97-0216 robustness enhancement 235.It Dv SSCOP_POLLREX Ta send POLL after each retransmission 236.El 237.Pp 238The bitmap has the following bits: 239.Bl -column SSCOP_POLLREXx -offset indent 240.It Dv SSCOP_SET_TCC Ta set Dv timer_cc 241.It Dv SSCOP_SET_TPOLL Ta set Dv timer_poll 242.It Dv SSCOP_SET_TKA Ta set Dv timer_keep_alive 243.It Dv SSCOP_SET_TNR Ta set Dv timer_no_response 244.It Dv SSCOP_SET_TIDLE Ta set Dv timer_idle 245.It Dv SSCOP_SET_MAXK Ta set Dv maxk 246.It Dv SSCOP_SET_MAXJ Ta set Dv maxj 247.It Dv SSCOP_SET_MAXCC Ta set Dv maxcc 248.It Dv SSCOP_SET_MAXPD Ta set Dv maxpd 249.It Dv SSCOP_SET_MAXSTAT Ta set Dv maxstat 250.It Dv SSCOP_SET_MR Ta set the initial window 251.It Dv SSCOP_SET_ROBUST Ta set or clear Dv SSCOP_ROBUST 252.It Dv SSCOP_SET_POLLREX Ta set or clear Dv SSCOP_POLLREX 253.El 254.Pp 255The node responds to the 256.Dv NGM_SSCOP_SETPARAM 257message with the following response: 258.Bd -literal 259struct ng_sscop_setparam_resp { 260 uint32_t mask; 261 int32_t error; 262}; 263.Ed 264.Pp 265Here 266.Dv mask 267contains the a bitmask of the parameters that the user requested to set, 268but that could not be set and 269.Dv error 270is an 271.Xr errno 3 272code describing why the parameter could not be set. 273.It Dv NGM_SSCOP_GETPARAM 274This message returns the current operational parameters of the SSCOP 275instance in a 276.Fa sscop_param 277structure. 278.It Dv NGM_SSCOP_ENABLE 279This message creates the actual SSCOP instance and initializes it. 280Until this is done, parameters may neither be retrieved not set and all 281message received on any hook are discarded. 282.It Dv NGM_SSCOP_DISABLE
|
281Destroy the SSCOP instance. After this all messages on any hooks are
| 283Destroy the SSCOP instance. 284After this all messages on any hooks are
|
282discarded. 283.It Dv NGM_SSCOP_SETDEBUG
| 285discarded. 286.It Dv NGM_SSCOP_SETDEBUG
|
284Set debugging flags. The argument is an
| 287Set debugging flags. 288The argument is an
|
285.Vt uint32_t . 286.It Dv NGM_SSCOP_GETDEBUG 287Retrieve the actual debugging flags. 288Needs no arguments and responds with an 289.Vt uint32_t . 290.It Dv NGM_SSCOP_GETSTATE 291Responds with the current state of the SSCOP instance in an 292.Vt uint32_t . 293If the node is not enabled the retrieved state is 0. 294.El 295.Sh FLOW CONTROL
| 289.Vt uint32_t . 290.It Dv NGM_SSCOP_GETDEBUG 291Retrieve the actual debugging flags. 292Needs no arguments and responds with an 293.Vt uint32_t . 294.It Dv NGM_SSCOP_GETSTATE 295Responds with the current state of the SSCOP instance in an 296.Vt uint32_t . 297If the node is not enabled the retrieved state is 0. 298.El 299.Sh FLOW CONTROL
|
296Flow control works on the upper and on the lower layer interface. At the lower
| 300Flow control works on the upper and on the lower layer interface. 301At the lower
|
297layer interface the two messages 298.Dv NGM_HIGH_WATER_PASSED 299and 300.Dv NGM_LOW_WATER_PASSED 301are used to declare or clear the 302.Ql lower layer busy 303state of the protocol. 304.Pp 305At the upper layer interface the 306.Nm 307node handles three types of flow control messages: 308.Bl -tag -width xxx 309.It Dv NGM_HIGH_WATER_PASSED 310If this message is received the SSCOP stops moving the receive window. 311Each time a data message is handed over to the upper layer the receive 312window is moved by one message. 313Stopping these updates 314means that the window will start to close and if the peer has sent 315all messages allowed by the current window, it stops transmission. 316This means, that the upper layer must be able to receive still a full window 317amount of messages. 318.It Dv NGM_LOW_WATER_PASSED 319This will re-enable the automatic window updates and if the space indicated 320in the message is larger than the current window, the window will be opened 321by that amount. 322The space is computed as the difference of the 323.Fa max_queuelen_packets 324and 325.Fa current 326members of the 327.Fa ngm_queue_state 328structure. 329.It Dv NGM_SYNC_QUEUE_STATE 330If the upper layer buffer filling state as indicated by 331.Fa current 332is equal too or higher than 333.Fa high_watermark 334than the message is ignored. 335If this is not the case the amount 336of receiver space is computed as the difference of 337.Fa max_queuelen_packets 338and 339.Fa current , 340if automatic window updates are currently allowed and as the difference of 341.Fa high_water_mark 342and 343.Fa current , 344if window updates are disabled. 345If the resulting value is larger than the current window, the current window 346is opened up to this value. 347Automatic window updates are enabled, if they 348were disabled. 349.Sh SEE ALSO 350.Xr netgraph 4 , 351.Xr ng_atm 4 , 352.Xr ng_sscfu 4 , 353.Xr ngctl 8 354.Sh AUTHORS 355.An Harti Brandt Aq harti@freebsd.org
| 302layer interface the two messages 303.Dv NGM_HIGH_WATER_PASSED 304and 305.Dv NGM_LOW_WATER_PASSED 306are used to declare or clear the 307.Ql lower layer busy 308state of the protocol. 309.Pp 310At the upper layer interface the 311.Nm 312node handles three types of flow control messages: 313.Bl -tag -width xxx 314.It Dv NGM_HIGH_WATER_PASSED 315If this message is received the SSCOP stops moving the receive window. 316Each time a data message is handed over to the upper layer the receive 317window is moved by one message. 318Stopping these updates 319means that the window will start to close and if the peer has sent 320all messages allowed by the current window, it stops transmission. 321This means, that the upper layer must be able to receive still a full window 322amount of messages. 323.It Dv NGM_LOW_WATER_PASSED 324This will re-enable the automatic window updates and if the space indicated 325in the message is larger than the current window, the window will be opened 326by that amount. 327The space is computed as the difference of the 328.Fa max_queuelen_packets 329and 330.Fa current 331members of the 332.Fa ngm_queue_state 333structure. 334.It Dv NGM_SYNC_QUEUE_STATE 335If the upper layer buffer filling state as indicated by 336.Fa current 337is equal too or higher than 338.Fa high_watermark 339than the message is ignored. 340If this is not the case the amount 341of receiver space is computed as the difference of 342.Fa max_queuelen_packets 343and 344.Fa current , 345if automatic window updates are currently allowed and as the difference of 346.Fa high_water_mark 347and 348.Fa current , 349if window updates are disabled. 350If the resulting value is larger than the current window, the current window 351is opened up to this value. 352Automatic window updates are enabled, if they 353were disabled. 354.Sh SEE ALSO 355.Xr netgraph 4 , 356.Xr ng_atm 4 , 357.Xr ng_sscfu 4 , 358.Xr ngctl 8 359.Sh AUTHORS 360.An Harti Brandt Aq harti@freebsd.org
|