[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