diff options
author | Richard Dale <richard.dale@codethink.co.uk> | 2015-06-15 09:07:44 +0000 |
---|---|---|
committer | Richard Dale <richard.dale@codethink.co.uk> | 2015-06-15 09:07:44 +0000 |
commit | b7433c9c6b64bc2a40db695c8ce89815ddb670d3 (patch) | |
tree | cdeb7a0dffb4d23898eae2c2b21a8474985a1ff5 | |
parent | 93fbc85be0734ca0f96cc7858b6a9338e91ab7c6 (diff) | |
download | ppp-b7433c9c6b64bc2a40db695c8ce89815ddb670d3.tar.gz |
debian adaptive lcp echo
-rw-r--r-- | pppd/lcp.c | 19 | ||||
-rw-r--r-- | pppd/pppd.8 | 5 |
2 files changed, 24 insertions, 0 deletions
@@ -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, @@ -2332,6 +2335,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. */ if (f->state == OPENED) { diff --git a/pppd/pppd.8 b/pppd/pppd.8 index 3b1f123..6718108 100644 --- a/pppd/pppd.8 +++ b/pppd/pppd.8 @@ -563,6 +563,11 @@ to 1) if the \fIproxyarp\fR option is used, and will enable the 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 |