1 |
slords |
1.1 |
--- ppp-2.4.3/pppd/ccp.c 2004-11-13 02:28:15.000000000 +0000 |
2 |
|
|
+++ ppp-2.4.3/pppd/ccp.c 2004-11-22 16:36:21.654092711 +0000 |
3 |
|
|
@@ -67,6 +67,7 @@ |
4 |
|
|
*/ |
5 |
|
|
#ifdef MPPE |
6 |
|
|
bool refuse_mppe_stateful = 1; /* Allow stateful mode? */ |
7 |
|
|
+bool mppe_lower_mtu = 1; /* Set to 0 to disable dropping the MTU by 4 */ |
8 |
|
|
#endif |
9 |
|
|
|
10 |
|
|
static option_t ccp_option_list[] = { |
11 |
|
|
@@ -156,6 +157,15 @@ |
12 |
|
|
"allow MPPE stateful mode", OPT_PRIO }, |
13 |
|
|
{ "nomppe-stateful", o_bool, &refuse_mppe_stateful, |
14 |
|
|
"disallow MPPE stateful mode", OPT_PRIO | 1 }, |
15 |
|
|
+ |
16 |
|
|
+ /* Option to avoid lowering our MTU by 4 (as should be done) to avoid |
17 |
|
|
+ * breakage with devices that don't handle PMTUD |
18 |
|
|
+ */ |
19 |
|
|
+ { "mppe-lower-mtu", o_bool, &mppe_lower_mtu, |
20 |
|
|
+ "lower the MTU by 4 bytes for MPPE connections", OPT_PRIO | 1 }, |
21 |
|
|
+ { "nomppe-lower-mtu", o_bool, &mppe_lower_mtu, |
22 |
|
|
+ "don't lower the MTU by 4 bytes for MPPE connections", OPT_PRIO }, |
23 |
|
|
+ |
24 |
|
|
#endif /* MPPE */ |
25 |
|
|
|
26 |
|
|
{ NULL } |
27 |
|
|
@@ -1185,9 +1195,16 @@ |
28 |
|
|
* allocate MPPE_PAD extra bytes in xmit buffers. |
29 |
|
|
*/ |
30 |
|
|
mtu = netif_get_mtu(f->unit); |
31 |
|
|
- if (mtu) |
32 |
|
|
- netif_set_mtu(f->unit, mtu - MPPE_PAD); |
33 |
|
|
- else |
34 |
|
|
+ if (mtu) { |
35 |
|
|
+ /* Dropping the MTU seems to break Path MTU discovery |
36 |
|
|
+ * particularly where load-balancers are involved. |
37 |
|
|
+ * Not dropping the MTU may mean the occasional packet |
38 |
|
|
+ * goes unencrypted due to them being 4 bytes larger |
39 |
|
|
+ * and CCP thinking it's not worth encrypting. |
40 |
|
|
+ */ |
41 |
|
|
+ if (mppe_lower_mtu) |
42 |
|
|
+ netif_set_mtu(f->unit, mtu - MPPE_PAD); |
43 |
|
|
+ } else |
44 |
|
|
newret = CONFREJ; |
45 |
|
|
} |
46 |
|
|
|
47 |
|
|
--- ppp-2.4.3/pppd/pppd.8 2004-11-22 16:36:21.663090491 +0000 |
48 |
|
|
+++ ppp-2.4.3/pppd/pppd.8 2004-11-22 16:43:15.169028425 +0000 |
49 |
|
|
@@ -622,6 +622,10 @@ |
50 |
|
|
Enables the use of PPP multilink; this is an alias for the `multilink' |
51 |
|
|
option. This option is currently only available under Linux. |
52 |
|
|
.TP |
53 |
|
|
+.B mppe\-lower\-mtu |
54 |
|
|
+Lowers the MTU by 4 bytes for MPPE connections. This is the correct |
55 |
|
|
+behaviour but breaks accessing some sites. This is the default. |
56 |
|
|
+.TP |
57 |
|
|
.B mppe\-stateful |
58 |
|
|
Allow MPPE to use stateful mode. Stateless mode is still attempted first. |
59 |
|
|
The default is to disallow stateful mode. |
60 |
|
|
@@ -766,6 +770,11 @@ |
61 |
|
|
.B nomppe\-128 |
62 |
|
|
Disable 128-bit encryption with MPPE. |
63 |
|
|
.TP |
64 |
|
|
+.TP |
65 |
|
|
+.B nomppe\-lower\-mtu |
66 |
|
|
+Disables lowering the MTU by 4 bytes for MPPE connections. This is sometimes |
67 |
|
|
+required to access servers behind load balancing devices that break Path |
68 |
|
|
+MTU Discovery. |
69 |
|
|
.B nomppe\-stateful |
70 |
|
|
Disable MPPE stateful mode. This is the default. |
71 |
|
|
.TP |