Yes, thought so ...
Tech Name:Mike Beattie
Tech Street2:-
Tech Street3:
Tech City:Dunedin
Tech State/Province:Otago
Tech Postal Code:9001
Tech Country:NZ
On 27/03/2006, at 2:10 PM, Mike Beattie wrote:
Right, so I've dutifully been quagmired in
http://we.hates-software.com/ for
the last few days (Was introduced sometime last year, and forced
myself then
to ignore it till I had the time to read.. :P).. And I feel empowered
enough to share with you lovely bitter folk, a Hate of mine that
reared its
pustule infected head on Friday.
So, I live in a part of the world that has a severely Intellectually
Handicapped Broadband service. No points for guessing where. Anyway,
I've
got this 2mbit/128kbit connection at home, that's basically grown from
a
24/7 56k modem link some years ago. Some years ago, the 486 firewall
with
ISA 10mbit NIC's was un-hateful. Now, on the otherhand, I get about
85-90kbytes/sec through this box. Ok, so perhaps I should replace it
with
something a little more grunty, that can get me the full potential of
that
2mbit.
Enter one disused "development" Linksys WRT54G. Update the firmware to
the
latest OpenWRT (RC4, as of Friday, RC5 was released today... *seethe*).
"Development", because I'd hacked it to add an SD card slot.. no
matter, the
firewall could probably do with a little storage for logs and whatnot.
Anyway, I have this slightly tempermental, but definitely better than
the
alternatives, 3com HomeConnect ADSL Modem. 3com, in their infinite
wisdom,
decided to change the Ethernet frame types for its implementation of
PPPoE.
This is a whole other Hate that I just won't go into now. (PPPoE on
the LAN
side, it's an Access Concentrator.. it basically converts the PPPoA
ADSL we
have here to PPPoE on my side.. just a bridge, doesn't do any login or
anything). Oh... and the modified frame type values? 0x3c12 and
0x3c13.
Now, I can't imagine why they chose those....
On with the story, less rambling... Ok, so the linux kernel mode pppoe
driver, and the pppd plugin to use kernel mode pppoe, don't support
these
different frame types. Hackery time. Fetch the OpenWRT dev environment
from
Subversion. Type 'make'. Wait. Wait some more. and some more... ok,
done.
(download sources for kernel, gcc, etc, etc, build crosscompile
environment). Find locations to change frame types, to see if it'll
work.
Kernel tree - include/linux/if_ether.h. easy. pppd. Hrm.. ok, plugins..
ahh.. pppd/plugins/rp-pppoe/pppoe.h:
/* Ethernet frame types according to RFC 2516 */
#define ETH_PPPOE_DISCOVERY 0x8863
#define ETH_PPPOE_SESSION 0x8864
/* But some brain-dead peers disobey the RFC, so frame types are
variables */
extern UINT16_t Eth_PPPOE_Discovery;
extern UINT16_t Eth_PPPOE_Session;
Oh, brilliant! there must be some config options to do this.. that
makes it
easy!
Hunt around... Ok, those variables are only given values in one place,
in if.c:
/* Initialize frame types to RFC 2516 values. Some broken peers
apparently
use different frame types... sigh... */
UINT16_t Eth_PPPOE_Discovery = ETH_PPPOE_DISCOVERY;
UINT16_t Eth_PPPOE_Session = ETH_PPPOE_SESSION;
HATE. HATE, and some more HATE. Ok, I can see the intention is there to
perhaps actually do something useful with those values in variables...
but
honestly, whinging about some "broken" and "brain-dead" peers not
using the
right frame type values, then half-heartedly having a go at supporting
them?
Would have been better to just define the bloody values, and not say
anything.. *Argh*.
Now, this probably isn't the best hate I could muster.. but supposedly
I
need to be doing this thing called work.. Thankfully I finished battle
with
the SCO box last week... there's some Hate there, but it's worn off a
little
now.
Mike.
--
Mike Beattie <[email protected]>