patches past 2.4.5
I have become the maintainer of a PPPoE LNS/BMC "server" product in use at some 500 ISPs. (I am adding IPv6/RFC6204 support to it)
This product has a history in well known PPPoE implementations, and there are a number of patches in our pppd repository which are not in the pppd repo.
https://github.com/mcr/pppd/commits/master
The patches were kept in a huge CVS, and some of the differences I discovered were actually regressions against bugs fixes in 2.4.5, which I've elimited.
There are still build issues when building with options different from those that the product builds with that I'm resolving. Mostly the product
removes code that it does not need. I am considering setting up a travis-CI
build that enumerates all the options.
This is a summary of the summary of the changes. I'm posting this rather than actual patches because I don't think the patches are fully cooked (some do not compile on their own yet, depending upon patches further on, and I have to re-order them some more), and some may have no wider interest. I want to prioritize the things of most interest to the wider community.
I would appreciate knowing
a) things you think are stupid and I should keep to myself.
b) things you want as-is
c) things that need some discussion.
1) added Makefile options to point at kernel usr/include when building
2) added pap reauthentication
I haven't figured out the why of this yet :-)
3) added pap-interval option
Kills off pap LCP process after some amount of time. This violates the PPP specifications, but is necessary for the LNS/BMC to protect itself against password cracking attackers.
4) make many error messages say more about which fd and unit had the failure Just better logging.
RADIUS plugin changes:
5) added support for framed-IP netmask
6) added Roaring Penguin custom radius options relating to bandwidth limits.
7) free-up vendor dictionaries when done
8) if we find an invalid option in radius config file, it is fatal
9) be more tolerant about corrupted or missing sequence number files
BUILD OPTIONS
10) make l2tp and winbind optional.
11) added extended pppd stats
12) keep beetter track of plugins, and do not load them multiple times even if mentioned multiple times (**)
13) be able to restart LCP option negotiation by longjmp back to beginning
14) make on-demand dialing an optional build option (USE_DEMAND)
15) make ESP an optional build option (USE_EAP)
16) track the number of nakci for MRU things, and fail if it keeps going on.
17) change size of MRU from 1500 to 9000, and let it be negotiated down. Requires resizing many buffers to use JUMBO_PPP_MRU.
18) added FULL_LCP build option, not yet clear what problem it fixes.
19) a fix which deals with some bug in an OSX/Mac PPP stack issue
20) added USE_FULL_IPCP build option, not yet clear what problem it fixes.
21) make compression an optional build (COMP)
22) use BCOPY rather than slprintf for username and password
-- seems to be related to having non-US-ASCII usernames available in logs
23) added USE_ECP build option
24) added ALL_OPTIONS define --- removes a bunch of options.
25) made async tty an optional build option (USE_SERIAL)
26) added USE_FULL_AUTH build option --- turns on many authentication mechanisms
27) added LONGCOUNTER defines to Makefile -- use long long for bytes in/out.
28) added bandwidth limits --- options and down into kernel
29) whitespace changes -- a lot of files have trailing whitespace I made one patch which removed them all with no other changes. Removing trailing whitespace is my editor default now, so if we want to keep them all, I'll want to put some emacs style/mode values into files I edit.
30) some patches to deal with a dozen or so
declared with attribute warn_unused_result [-Wunused-result] warnings.
(I always try to build with -Werror)
Signature · 3 lines
] Never tell me the odds! | ipv6 mesh networks [ ] Michael Richardson, Sandelman Software Works | network architect [ ] [email protected] http://www.sandelman.ca/ | ruby on rails [
Quoted 1 line · Michael Richardson
RADIUS plugin changes:
...
Quoted 1 line
8) if we find an invalid option in radius config file, it is fatal
This one is stupid. I recently sent you a patch to revert it. pppd should not die just because a new option which the radius plugin doesn't care about has been added to the radiusclient. Is the radius plugin reading the config file to validate it for correctness, or to read a few items which it cares about?
Quoted 11 lines · Charlie Brady
Quoted 1 line · Michael Richardson
RADIUS plugin changes:
...
Quoted 1 line
8) if we find an invalid option in radius config file, it is fatal
This one is stupid. I recently sent you a patch to revert it. pppd should not die just because a new option which the radius plugin doesn't care about has been added to the radiusclient. Is the radius plugin reading the config file to validate it for correctness, or to read a few items which it cares about?
Like I said, it might well be that some of the things I saw were not in fact "features", but regressions. This one also seemed daft to me, and I haven't yet found reasons for a bunch of other things. I.e. does this fix a real customer problem?
I think this is an example of this.
Signature · 3 lines
] Never tell me the odds! | ipv6 mesh networks [ ] Michael Richardson, Sandelman Software Works | network architect [ ] [email protected] http://www.sandelman.ca/ | ruby on rails [