When 3Com decided to build a PPPoE <-> ADSL modem - 3ComDualLink, they decided that conforming to the PPPoE RFC was entirely too plain. Instead of using boring ASSIGNED values for the PPPoE session and discovery protocols, they decided ones starting with 0x3c would be much more customer orientated! So, instead of 0x8863 and 0x8864 for Discovery and Session packets respectively, they decided to use 0x3c12 and 0x3c13... insanity!
Luckily enough, rp-pppoe was kind enough to allow us to specifiy different frame headers. So if you're using rp-pppoe just add "-f 3c12:3c13" to the pppoe command line.
Unfortunately, things are not so simple in kernel mode.
I've made a diff you can apply to the ppp-2.4.2 tarball, or put it in the debian/patches directory and re-build the deb. Here's the unified diff.
Man, if only thats where it ended. It seems that linux/if_ether.h has ..
and the kernel module uses that!
But we can get around this (hackishly for now, hopefully someone will add an IOCTL to do this), by using the following patch.
Uncomment debug in that file, if you have any problems.
Good Luck
To use this modem with FreeBSD set
sysctl net.graph.nonstandard_pppoe=1
After you have the ng_pppoe moduled loaded. Put it in /etc/sysctl.conf to make it persistent. For more information about using PPPoE in FreeBSD see the handbook.
2 pages link to 3ComDualLinkPPPoE: