You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.0 KiB
56 lines
2.0 KiB
--- a/pppd/lcp.c
|
|
+++ b/pppd/lcp.c
|
|
@@ -73,6 +73,7 @@ static void lcp_delayed_up __P((void *))
|
|
*/
|
|
int lcp_echo_interval = 0; /* Interval between LCP echo-requests */
|
|
int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */
|
|
+bool lcp_echo_adaptive = 0; /* request echo only if the link was idle */
|
|
bool lax_recv = 0; /* accept control chars in asyncmap */
|
|
bool noendpoint = 0; /* don't send/accept endpoint discriminator */
|
|
|
|
@@ -151,6 +152,8 @@ static option_t lcp_option_list[] = {
|
|
OPT_PRIO },
|
|
{ "lcp-echo-interval", o_int, &lcp_echo_interval,
|
|
"Set time in seconds between LCP echo requests", OPT_PRIO },
|
|
+ { "lcp-echo-adaptive", o_bool, &lcp_echo_adaptive,
|
|
+ "Suppress LCP echo requests if traffic was received", 1 },
|
|
{ "lcp-restart", o_int, &lcp_fsm[0].timeouttime,
|
|
"Set time in seconds between LCP retransmissions", OPT_PRIO },
|
|
{ "lcp-max-terminate", o_int, &lcp_fsm[0].maxtermtransmits,
|
|
@@ -2331,6 +2334,22 @@ LcpSendEchoRequest (f)
|
|
}
|
|
}
|
|
|
|
+ /*
|
|
+ * If adaptive echos have been enabled, only send the echo request if
|
|
+ * no traffic was received since the last one.
|
|
+ */
|
|
+ if (lcp_echo_adaptive) {
|
|
+ static unsigned int last_pkts_in = 0;
|
|
+
|
|
+ update_link_stats(f->unit);
|
|
+ link_stats_valid = 0;
|
|
+
|
|
+ if (link_stats.pkts_in != last_pkts_in) {
|
|
+ last_pkts_in = link_stats.pkts_in;
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+
|
|
/*
|
|
* Make and send the echo request frame.
|
|
*/
|
|
--- a/pppd/pppd.8
|
|
+++ b/pppd/pppd.8
|
|
@@ -563,6 +563,11 @@ to 1) if the \fIproxyarp\fR option is us
|
|
dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
|
|
1) in demand mode if the local address changes.
|
|
.TP
|
|
+.B lcp\-echo\-adaptive
|
|
+If this option is used with the \fIlcp\-echo\-failure\fR option then
|
|
+pppd will send LCP echo\-request frames only if no traffic was received
|
|
+from the peer since the last echo\-request was sent.
|
|
+.TP
|
|
.B lcp\-echo\-failure \fIn
|
|
If this option is given, pppd will presume the peer to be dead
|
|
if \fIn\fR LCP echo\-requests are sent without receiving a valid LCP
|
|
|