Re: Multilink PPP Problem
- From: Kenneth Kassing <kkass@xxxxxxxxxxx>
- Date: Mon, 06 Nov 2006 13:48:32 -0500
Thanks for the reply.
Please note, I am running 2.4.4 and Multilink is built into the code. I can establish an initial Multilink connection, the problem occurs when the remote link goes down and then comes back. (The remote link is also ppp 2.4.4)
Yes, "Multi-Link" is listed in protocol_list which explains why it is printing there. I am actually referring to what happens a few lines above.
It loops over a table of structures for each protocol looking for a match. It only reaches the print statement because there is not a match for Multilink at this point.
----------------------------------------------
for (i = 0; (protp = protocols[i]) != NULL; ++i) {
if (protp->protocol == protocol && protp->enabled_flag) {
...
}
...
}
----------------------------------------------
If you look near loine 270 in main.c, you will see where this protocol list is created. It is composed of pointers to structures defined in the file for each of the protocols. Multilink does not provide one of these structures.
----------------------------------------------
/*
* PPP Data Link Layer "protocol" table.
* One entry per supported protocol.
* The last entry must be NULL.
*/
struct protent *protocols[] = {
----------------------------------------------
Thanks
-Ken
Clifford Kite wrote:
Kenneth Kassing <kkass@xxxxxxxxxxx> wrote:.I am trying to use pppd to do multilink over several hdlc interfaces. For my test case, I have two identical units connected back to back. The link establishes correctly and will pass data. If the master link is reset for any reason, the master fails to reestablish a connection.
For a test case, I manually disable the link on one side, and then re-enable it. I tail the syslog for the link i did not reset to wach the output from pppd. I see that pppd is rejecting the configure requests for multilink. Here is the error message I see:
sent [IPCP ConfReq id=0x1 <addr 192.168.254.1>]
rcvd [proto=0x3d] 80 00 00 07 80 21 02 01 00 0a
Unsupported protocol 'Multi-Link' (0x3d) received
sent [LCP ProtRej id=0x6 00 3d 80 00 00 07 80 21 02 01 00 0a]
rcvd [proto=0x3d] 40 00 00 08 03 06 c0 a8 fe 01
Unsupported protocol 'Multi-Link' (0x3d) received
sent [LCP ProtRej id=0x8 00 3d 40 00 00 08 03 06 c0 a8 fe 01]
rcvd [proto=0x3d] 40 00 00 0a 03 06 c0 a8 fe 00
I have looked into the code, and found that pppd is looking to match protocols in "struct protent *protocols[]" table. Multilink does not have an entry in this table, and therefore will never link correctly.
That's odd. Here, in main.c of pppd 2.4.4, this
Multi-Link
is in "struct protocol_list" there, and pppd looks in protocol_list for
protocol names. Pppd only prints the name if it can be found, and that
particular message isn't anywhere else in the code:
~$ grep 'Unsupported protocol' pppd/*.[hc]
pppd/main.c: warn("Unsupported protocol '%s' (0x%x) received", pname,
protocol);
pppd/main.c: warn("Unsupported protocol 0x%x received", protocol);
Any suggestions here?
Upgrade? Compile MP into pppd?
- Follow-Ups:
- Re: Multilink PPP Problem
- From: Clifford Kite
- Re: Multilink PPP Problem
- References:
- Multilink PPP Problem
- From: Kenneth Kassing
- Re: Multilink PPP Problem
- From: Clifford Kite
- Multilink PPP Problem
- Prev by Date: Re: get into the private campus server
- Next by Date: Re: get into the private campus server
- Previous by thread: Re: Multilink PPP Problem
- Next by thread: Re: Multilink PPP Problem
- Index(es):
Relevant Pages
|