This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Problems with ppp and Windows
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