aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/ppp/patches/207-lcp_mtu_max.patch
blob: 240701b5858e488f88cd592be51c857aad38b2f4 (plain)
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
pppd: Cap MTU to the user configured value

This patchs caps the calculated MTU value in lcp.c to the user specified "mru"
option value. Without this patch pppd would advertise a different MTU value
compared to what is set on the local interface in some cases.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

--- a/pppd/lcp.c
+++ b/pppd/lcp.c
@@ -1917,12 +1917,12 @@ lcp_up(f)
      * the interface MTU is set to the lowest of that, the
      * MTU we want to use, and our link MRU.
      */
-    mtu = ho->neg_mru? ho->mru: PPP_MRU;
+    mtu = MIN(ho->neg_mru? ho->mru: PPP_MRU, ao->mru);
     mru = go->neg_mru? MAX(wo->mru, go->mru): PPP_MRU;
 #ifdef HAVE_MULTILINK
     if (!(multilink && go->neg_mrru && ho->neg_mrru))
 #endif /* HAVE_MULTILINK */
-	netif_set_mtu(f->unit, MIN(MIN(mtu, mru), ao->mru));
+	netif_set_mtu(f->unit, MIN(mtu, mru));
     ppp_send_config(f->unit, mtu,
 		    (ho->neg_asyncmap? ho->asyncmap: 0xffffffff),
 		    ho->neg_pcompression, ho->neg_accompression);