Deleted Added
full compact
28c28
< * $FreeBSD: head/usr.sbin/ppp/lcp.c 78189 2001-06-13 21:52:19Z brian $
---
> * $FreeBSD: head/usr.sbin/ppp/lcp.c 78410 2001-06-18 14:59:36Z brian $
180c180,186
< prompt_Printf(arg->prompt, "\n Defaults: MRU = %d, ", lcp->cfg.mru);
---
> prompt_Printf(arg->prompt, "\n Defaults: MRU = %d (max %d), ",
> lcp->cfg.mru, lcp->cfg.max_mru);
> if (lcp->cfg.mtu)
> prompt_Printf(arg->prompt, "MTU = %d (max %d), ",
> lcp->cfg.mtu, lcp->cfg.max_mtu);
> else
> prompt_Printf(arg->prompt, "MTU = any (max %d), ", lcp->cfg.max_mtu);
243a250,252
> lcp->cfg.max_mru = MAX_MRU;
> lcp->cfg.mtu = 0;
> lcp->cfg.max_mtu = MAX_MTU;
268a278,280
> struct physical *p = link2physical(lcp->fsm.link);
> int phmtu = p ? physical_DeviceMTU(p) : 0;
>
271,273c283
< lcp->his_mru = lcp->fsm.bundle->cfg.mtu;
< if (!lcp->his_mru || lcp->his_mru > DEF_MRU)
< lcp->his_mru = DEF_MRU;
---
> lcp->his_mru = DEF_MRU;
283a294,295
> if (phmtu && lcp->want_mru > phmtu)
> lcp->want_mru = phmtu;
289,290d300
< struct physical *p = link2physical(lcp->fsm.link);
<
595c605
< int type, length, sz, pos, op, callback_req;
---
> int type, length, sz, pos, op, callback_req, mru_req;
597c607
< u_short mtu, mru, proto;
---
> u_short mru, phmtu, proto;
603c613
< sz = op = callback_req = 0;
---
> sz = op = callback_req = mru_req = 0;
629c639,645
< if (mru < MIN_MRU) {
---
> if (mru > MAX_MRU) {
> /* Push him down to MAX_MRU */
> lcp->his_mrru = MAX_MRU;
> memcpy(dec->nakend, cp, 2);
> ua_htons(&lcp->his_mrru, dec->nakend + 2);
> dec->nakend += 4;
> } else if (mru < MIN_MRU) {
666a683
> mru_req = 1;
672,673c689,700
< mtu = lcp->fsm.bundle->cfg.mtu;
< if (mru < MIN_MRU || (!lcp->want_mrru && mru < mtu)) {
---
> phmtu = p ? physical_DeviceMTU(p) : 0;
> if (phmtu && mru > phmtu) {
> lcp->his_mru = lcp->cfg.mtu ? lcp->cfg.mtu : phmtu;
> memcpy(dec->nakend, cp, 2);
> ua_htons(&lcp->his_mru, dec->nakend + 2);
> dec->nakend += 4;
> } if (mru > lcp->cfg.max_mtu) {
> lcp->his_mru = lcp->cfg.mtu ? lcp->cfg.mtu : lcp->cfg.max_mtu;
> memcpy(dec->nakend, cp, 2);
> ua_htons(&lcp->his_mru, dec->nakend + 2);
> dec->nakend += 4;
> } else if (mru < MIN_MRU || mru < lcp->cfg.mtu) {
675c702
< lcp->his_mru = mru < mtu ? mtu : MIN_MRU;
---
> lcp->his_mru = mru < lcp->cfg.mtu ? lcp->cfg.mtu : MIN_MRU;
680c707
< lcp->his_mru = mtu ? mtu : mru;
---
> lcp->his_mru = lcp->cfg.mtu ? lcp->cfg.mtu : mru;
686,688c713,717
< if (mru > MAX_MRU)
< lcp->want_mru = MAX_MRU;
< else if (mru < MIN_MRU)
---
> if (mru > lcp->cfg.max_mru) {
> lcp->want_mru = lcp->cfg.max_mru;
> if (p && lcp->want_mru > physical_DeviceMTU(p))
> lcp->want_mru = physical_DeviceMTU(p);
> } else if (mru < MIN_MRU)
1219a1249,1264
> if (mode_type == MODE_REQ && !mru_req) {
> mru = DEF_MRU;
> phmtu = p ? physical_DeviceMTU(p) : 0;
> if (phmtu && mru > phmtu)
> mru = phmtu;
> if (mru > lcp->cfg.max_mtu)
> mru = lcp->cfg.max_mtu;
> if (mru < DEF_MRU) {
> /* Don't let the peer use the default MRU */
> lcp->his_mru = lcp->cfg.mtu && lcp->cfg.mtu < mru ? lcp->cfg.mtu : mru;
> *dec->nakend++ = TY_MRU;
> *dec->nakend++ = 4;
> ua_htons(&lcp->his_mru, dec->nakend);
> dec->nakend += 2;
> }
> }