[ECOS] Re: Problems with ppp and Windows

Kelvin Lawson klawson@ad-holdings.co.uk
Thu Jun 17 14:04:00 GMT 2004


Hi Øyvind,

> I've put together a memory allocation debug feature patch... 
> 
> http://ecos.sourceware.org/ml/ecos-discuss/2004-06/msg00161.html

It looks useful, thanks for that.

>>I think the proper place to add some debug notification is at the usage 
>>points of network mallocs. In the case of PPP, after the MALLOC() 
>>failed, it ought to have done something about it or printed some debug, 
>>rather than just carrying on broken.
> 
> Does it make any sense at all to bring up the PPP connection if these
> initial allocations fail?

Well that depends. If only a VJC allocation fails then it may be 
possible to bring up a PPP interface that refuses to negotiate VJC. I 
don't know if we really need to worry about providing this kind of 
fallback operation though.

> Note that I saw the lockup on accept() even if the VJC compression
> buffers could be allocated.

Your generic malloc fail patch should be pretty useful then, to catch 
any kind of allocation failing.

>>For PPP there are a bunch of configuration options that aren't covered 
>>by the cyg_ppp_options_t structure. I've added a few options here to 
>>handle authorisation for dialin connections. Similarly you could extend 
>>it to disable things like VJ compression to reduce the memory requirements.
> 
> Care to share? :-)

Certainly. I'm just experimenting with it at the moment though, so I'm 
not yet confident that it should go into the eCos tree. But in the 
meantime if you want to investigate, here's a summary:

. Set auth_required = 1 if you want to require authentication from the 
other end.
. Set wo->neg_chap and wo->neg_upap to 1 depending on which you want to 
use for authentication (see lcp.c)
. You can extend cyg_ppp_options_t to accomodate the above 3 options.
. Finally fix up the functions in auth.c to do your username/password 
lookup (maybe you want them in a fixed array, or read a password file 
off a disk or whatever). For CHAP, you can use get_secret() to look up 
the user/pass. For PAP, use check_passwd(), ensuring that 
have_pap_secret() returns 1. Also think about whether you will accept 
the IPs offered by the peer, and see function ip_addr_check().

Cheers,
Kelvin.


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list