* Reset sequence number state. */
| 1265 | * Reset sequence number state. |
| 1266 | */ |
| 1267 | static void |
| 1268 | ng_l2tp_seq_reset(priv_p priv) |
| 1269 | { |
| 1270 | struct l2tp_seq *const seq = &priv->seq; |
| 1271 | hook_p hook; |
| 1272 | int i; |
| 1273 | |
| 1274 | /* Sanity check */ |
| 1275 | L2TP_SEQ_CHECK(seq); |
| 1276 | |
| 1277 | /* Stop timers */ |
| 1278 | ng_uncallout(&seq->rack_timer, priv->node); |
| 1279 | ng_uncallout(&seq->xack_timer, priv->node); |
| 1280 | |
| 1281 | /* Free retransmit queue */ |
| 1282 | for (i = 0; i < L2TP_MAX_XWIN; i++) { |
| 1283 | if (seq->xwin[i] == NULL) |
| 1284 | break; |
| 1285 | m_freem(seq->xwin[i]); |
| 1286 | } |
| 1287 | |
| 1288 | /* Reset session hooks' sequence number states */ |
| 1289 | NG_NODE_FOREACH_HOOK(priv->node, ng_l2tp_reset_session, NULL, hook); |
| 1290 | |
| 1291 | /* Reset node's sequence number state */ |
| 1292 | seq->ns = 0; |
| 1293 | seq->nr = 0; |
| 1294 | seq->rack = 0; |
| 1295 | seq->xack = 0; |
| 1296 | seq->wmax = L2TP_MAX_XWIN; |
| 1297 | seq->cwnd = 1; |
| 1298 | seq->ssth = seq->wmax; |
| 1299 | seq->acks = 0; |
| 1300 | seq->rexmits = 0; |
| 1301 | bzero(seq->xwin, sizeof(seq->xwin)); |
| 1302 | |
| 1303 | /* Done */ |
| 1304 | L2TP_SEQ_CHECK(seq); |
| 1305 | } |
| 1306 | |
| 1307 | /* |
| 1308 | * Handle receipt of an acknowledgement value (Nr) from peer. |
no test coverage detected