diff -Naur ppp-2.4.5/pppd/main.c ppp-2.4.5_patched/pppd/main.c --- ppp-2.4.5/pppd/main.c 2010-08-30 07:36:35.000000000 +0300 +++ ppp-2.4.5_patched/pppd/main.c 2010-08-30 07:41:10.844666729 +0300 @@ -565,6 +565,8 @@ if (!persist || asked_to_quit || (maxfail > 0 && unsuccess >= maxfail)) break; + else + sleep(pause_between_reconnect); if (demand) demand_discard(); @@ -581,6 +583,8 @@ } while (phase == PHASE_HOLDOFF); if (!persist) break; + else + sleep(pause_between_reconnect); } wait_children(); diff -Naur ppp-2.4.5/pppd/options.c ppp-2.4.5_patched/pppd/options.c --- ppp-2.4.5/pppd/options.c 2010-08-30 07:36:35.000000000 +0300 +++ ppp-2.4.5_patched/pppd/options.c 2010-08-30 07:44:05.162666733 +0300 @@ -101,6 +101,7 @@ char user[MAXNAMELEN]; /* Username for PAP */ char passwd[MAXSECRETLEN]; /* Password for PAP */ bool persist = 0; /* Reopen link after it goes down */ +int pause_between_reconnect = 5; /* set pause between reconnects to avoid log flood/high cpu usage */ bool killoldaddr = 0; /* If our IP is reassigned on reconnect, kill active TCP connections using the old IP. */ @@ -229,6 +230,8 @@ { "persist", o_bool, &persist, "Keep on reopening connection after close", OPT_PRIO | 1 }, + { "pause_between_reconnect", o_int, &pause_between_reconnect, + "set pause between reconnects to avoid log flood/high cpu usage", OPT_PRIO }, { "nopersist", o_bool, &persist, "Turn off persist option", OPT_PRIOSUB }, diff -Naur ppp-2.4.5/pppd/pppd.h ppp-2.4.5_patched/pppd/pppd.h --- ppp-2.4.5/pppd/pppd.h 2010-08-30 07:36:35.000000000 +0300 +++ ppp-2.4.5_patched/pppd/pppd.h 2010-08-30 07:44:39.502666729 +0300 @@ -294,6 +294,7 @@ extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */ extern bool auth_required; /* Peer is required to authenticate */ extern bool persist; /* Reopen link after it goes down */ +extern int pause_between_reconnect; /* set pause between reconnects to avoid log flood/high cpu usage */ extern bool uselogin; /* Use /etc/passwd for checking PAP */ extern bool session_mgmt; /* Do session management (login records) */ extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */ diff -Naur ppp-2.4.5/pppd/tty.c ppp-2.4.5_patched/pppd/tty.c --- ppp-2.4.5/pppd/tty.c 2009-11-17 00:26:07.000000000 +0200 +++ ppp-2.4.5_patched/pppd/tty.c 2010-08-30 07:42:39.874666731 +0300 @@ -582,6 +582,8 @@ } if (!persist || err != EINTR) goto errret; + else + sleep(pause_between_reconnect); } ttyfd = real_ttyfd; if ((fdflags = fcntl(ttyfd, F_GETFL)) == -1 @@ -731,6 +733,8 @@ } if (!persist || errno != EINTR || hungup || got_sigterm) goto errret; + else + sleep(pause_between_reconnect); } close(i); }