Good intentions that never get followed through...

[prev] [thread] [next] [lurker] [Date index for 2006/03/27]

From: Mike Beattie
Subject: Good intentions that never get followed through...
Date: 03:10 on 27 Mar 2006
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 <mike@xxxxxxxx.xxx>

Generated at 16:00 on 04 Apr 2006 by mariachi 0.52