While debugging the PPPoATM issues of a Debian user, I determined that when the error() function is called by a send_config function like send_config_pppoa of the pppoatm.c plugin then lcp_lowerup() exits earlier and does not raise the lower layer, and pppd just hangs without sending any LCP request. I do not understand who is wrong and should bail out, but I'm attaching the patch used by Red Hat to work around this bug (I see that the PPPoE plugin alrady uses warn() for this case). diff -ruNp ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c --- ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c 2005-05-04 02:00:28.000000000 +0200 +++ ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c 2005-05-04 01:59:11.000000000 +0200 @@ -183,8 +183,11 @@ static void send_config_pppoa(int mtu, int sock; struct ifreq ifr; - if (mtu > pppoatm_max_mtu) - error("Couldn't increase MTU to %d", mtu); + if (pppoatm_max_mtu && mtu > pppoatm_max_mtu) { + warn("Couldn't increase MTU to %d. Using %d", + mtu, pppoatm_max_mtu); + mtu = pppoatm_max_mtu; + } sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) @@ -202,8 +205,11 @@ static void recv_config_pppoa(int mru, int pcomp, int accomp) { - if (mru > pppoatm_max_mru) - error("Couldn't increase MRU to %d", mru); + if (pppoatm_max_mru && mru > pppoatm_max_mru) { + warn("Couldn't increase MRU to %d. Using %d", + mru, pppoatm_max_mru); + mru = pppoatm_max_mru; + } } void plugin_init(void) -- ciao, Marco - To unsubscribe from this list: send the line "unsubscribe linux-ppp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html