Home | History | Annotate | Download | only in src

Lines Matching defs:lqr

28  * $FreeBSD: src/usr.sbin/ppp/lqr.c,v 1.49.26.1 2010/12/21 17:10:29 kensmith Exp $
49 #include "lqr.h"
92 struct echolqr lqr;
94 if (m_length(bp) >= sizeof lqr) {
95 m_freem(mbuf_Read(bp, &lqr, sizeof lqr));
97 lqr.magic = ntohl(lqr.magic);
98 lqr.signature = ntohl(lqr.signature);
99 lqr.sequence = ntohl(lqr.sequence);
102 if (lqr.magic != 0 && lqr.magic != lcp->his_magic &&
103 lqr.magic != lcp->want_magic) {
105 " got 0x%08x\n", fp->link->name, lcp->his_magic, lqr.magic);
111 if (lqr.signature == SIGNATURE) {
113 if ((hdlc->lqm.echo.seq_recv > (u_int32_t)0 - 5 && lqr.sequence < 5) ||
115 lqr.sequence > hdlc->lqm.echo.seq_recv))
116 hdlc->lqm.echo.seq_recv = lqr.sequence;
119 (u_long)lqr.signature, (u_long)SIGNATURE);
170 if (p->hdlc.lqm.lqr.resent > 5) {
172 log_Printf(LogPHASE, "%s: ** Too many LQR packets lost **\n",
174 log_Printf(LogLQM, "%s: Too many LQR packets lost\n",
180 p->hdlc.lqm.lqr.resent++;
217 else if (!IsAccepted(l->lcp.cfg.lqr) && !(p->hdlc.lqm.method & LQM_LQR)) {
221 struct lqrdata *lqr;
224 lqr = (struct lqrdata *)MBUF_CTOP(bp);
225 if (ntohl(lqr->MagicNumber) != lcp->his_magic)
228 (u_long)ntohl(lqr->MagicNumber), (u_long)lcp->his_magic);
232 memcpy(&lastlqr, &p->hdlc.lqm.lqr.peer, sizeof lastlqr);
233 lqr_ChangeOrder(lqr, &p->hdlc.lqm.lqr.peer);
234 lqr_Dump(l->name, "Input", &p->hdlc.lqm.lqr.peer);
235 /* we have received an LQR from our peer */
236 p->hdlc.lqm.lqr.resent = 0;
238 /* Snapshot our state when the LQR packet was received */
239 memcpy(&p->hdlc.lqm.lqr.prevSave, &p->hdlc.lqm.lqr.Save,
240 sizeof p->hdlc.lqm.lqr.prevSave);
241 p->hdlc.lqm.lqr.Save.InLQRs = ++p->hdlc.lqm.lqr.InLQRs;
242 p->hdlc.lqm.lqr.Save.InPackets = p->hdlc.lqm.ifInUniPackets;
243 p->hdlc.lqm.lqr.Save.InDiscards = p->hdlc.lqm.ifInDiscards;
244 p->hdlc.lqm.lqr.Save.InErrors = p->hdlc.lqm.ifInErrors;
245 p->hdlc.lqm.lqr.Save.InOctets = p->hdlc.lqm.lqr.InGoodOctets;
247 lqr_Analyse(&p->hdlc, &lastlqr, &p->hdlc.lqm.lqr.peer);
250 * Generate an LQR response if we're not running an LQR timer OR
251 * two successive LQR's PeerInLQRs are the same.
255 lastlqr.PeerInLQRs == p->hdlc.lqm.lqr.peer.PeerInLQRs))
272 physical->hdlc.lqm.lqr.resent = 0;
275 memset(&physical->hdlc.lqm.lqr.peer, '\0',
276 sizeof physical->hdlc.lqm.lqr.peer);
279 if (IsEnabled(lcp->cfg.lqr) && !REJECTED(lcp, TY_QUALPROTO))
283 physical->hdlc.lqm.lqr.peer_timeout = lcp->his_lqrperiod;
285 log_Printf(LogLQM, "%s: Expecting LQR every %d.%02d secs\n",
297 physical->link.name, lcp->want_lqrperiod ? "LQR" : "LCP ECHO",
303 log_Printf(LogLQM, "%s: LQR/LCP ECHO not negotiated\n",
338 log_Printf(LogLQM, "%s: Stop sending LQR, Use LCP ECHO instead.\n",
351 lqr_Dump(const char *link, const char *message, const struct lqrdata *lqr)
356 lqr->MagicNumber, lqr->LastOutLQRs);
358 lqr->LastOutPackets, lqr->LastOutOctets);
360 lqr->PeerInLQRs, lqr->PeerInPackets);
362 lqr->PeerInDiscards, lqr->PeerInErrors);
364 lqr->PeerInOctets, lqr->PeerOutLQRs);
366 lqr->PeerOutPackets, lqr->PeerOutOctets);
383 transitLQRs = hdlc->lqm.lqr.OutLQRs - newlqr->LastOutLQRs;
388 log_Printf(LogLQM, " Outbound lossage: %d LQR%s (%d en route), %d packet%s,"
394 (hdlc->lqm.lqr.Save.InPackets - hdlc->lqm.lqr.prevSave.InPackets);
396 (hdlc->lqm.lqr.Save.InOctets - hdlc->lqm.lqr.prevSave.InOctets);
479 struct lqrdata lqr;
482 p->hdlc.lqm.lqr.OutLQRs++;
491 memset(&lqr, '\0', sizeof lqr);
492 lqr.MagicNumber = p->link.lcp.want_magic;
493 lqr.LastOutLQRs = p->hdlc.lqm.lqr.peer.PeerOutLQRs;
494 lqr.LastOutPackets = p->hdlc.lqm.lqr.peer.PeerOutPackets;
495 lqr.LastOutOctets = p->hdlc.lqm.lqr.peer.PeerOutOctets;
496 lqr.PeerInLQRs = p->hdlc.lqm.lqr.Save.InLQRs;
497 lqr.PeerInPackets = p->hdlc.lqm.lqr.Save.InPackets;
498 lqr.PeerInDiscards = p->hdlc.lqm.lqr.Save.InDiscards;
499 lqr.PeerInErrors = p->hdlc.lqm.lqr.Save.InErrors;
500 lqr.PeerInOctets = p->hdlc.lqm.lqr.Save.InOctets;
501 lqr.PeerOutLQRs = p->hdlc.lqm.lqr.OutLQRs;
502 lqr.PeerOutPackets = p->hdlc.lqm.ifOutUniPackets - pending_pkts;
504 lqr.PeerOutOctets = p->hdlc.lqm.ifOutOctets - pending_octets - pending_pkts;
505 lqr_Dump(l->name, "Output", &lqr);
506 lqr_ChangeOrder(&lqr, (struct lqrdata *)MBUF_CTOP(bp));
532 struct layer lqrlayer = { LAYER_LQR, "lqr", lqr_LayerPush, lqr_LayerPull };