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 <(E-Mail Removed)> 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?
>
|