Bug 15738
Summary: | PPP and CallBack Control Protocol | ||
---|---|---|---|
Product: | [Retired] Red Hat Linux | Reporter: | Gilberto Mardegan <info> |
Component: | ppp | Assignee: | Nalin Dahyabhai <nalin> |
Status: | CLOSED RAWHIDE | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | high | ||
Version: | 7.1 | CC: | aleksey, john_hull, michael_e_brown, nerijus, shishz, support |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i386 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2001-08-10 06:57:36 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Gilberto Mardegan
2000-08-08 16:26:37 UTC
This problem exists in PPP2.3.11, and PPP2.4.0+. When pppd is compiled with "#define CBCP_SUPPORT YES", enabling the Callback Control Protocol, the Link Control Protocol (LCP) issues conflicting and erroneous packets. First, <callback CBCP> is sent in an LCP request packet, and then <callback CBCP> is sent in an LCP reject packet. This may be observed when connecting to a peer that supports CBCP, such as Microsoft Windows. Although Windows peers essentially ignore the LCP reject following the LCP request, other peers do not ignore the reject and cancel CBCP. SOLUTION The function lcp_reqci() in lcp.c is missing a case in the switch statement for CI_CALLBACK. The following code should be added: /* * Bug fix: This case was missing in PPP2.3.11. */ case CI_CALLBACK: LCPDEBUG(("lcp_reqci: rcvd CALLBACK")); GETCHAR(cishort, p); LCPDEBUG(("(%d)", cishort)); #ifdef CBCP_SUPPORT if (!ao->neg_cbcp || cishort != CBCP_OPT) { orc = CONFNAK; PUTCHAR(CI_CALLBACK, nakp); PUTCHAR(CILEN_CHAR, nakp); PUTCHAR(CBCP_OPT, nakp); break; } ho->neg_cbcp = 1; #else orc = CONFREJ; #endif break; ------------------------------------------------------------------------ This patch will be folded into ppp-2.4.1-2 and later. Thanks! Unfortunately Brown's bug fix makes things worse, not better. The Linux pppd does NOT support server CBCP. Ie, pppd SHOULD reject a ConfReq from the Windows box, since that is a request that the Linux system act as a server, as I understand it. Linux pppd cannot. This patch in fact has messed up a number of people who have set up as ppp servers. The Win machine does a ConfReq for callback, Linux accepts. Then after authentication, The win machine hangs up, as it is supposed to, waiting for the callback. But Linux's acceptance was fake-- it had no intention of calling back, and it then times out sending IPCP requests to the Win box. Ie, this patch should be removed from the Redhat ppp. |