1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- --- 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
|