[lfs-dev] Scripts modified to add IPv dual-stack support
jpbion at westvi.com
jpbion at westvi.com
Mon Feb 6 05:06:35 PST 2017
I made the following modifications to my LFS system to provide for
having the inclusive or of (IPv4-static or IPv6-static) to exist on an
interface, while allowing a single ifdown <dev> and ifup <dev> command.
The changes are:
1) In ifconfig.dev file, I allow for the following new options: IP6,
PREFIX6, GATEWAY6. (although most IPv6 situations have you nicely
learning the default gateway from the router, I allow it to still be
set). I created a new service called "ip46-static"
2) In the new ip46-static service, I added ability to read the IP6,
PREFIX6, and GATEWAY6 variables from the ifconfig.dev file, and set the
appropriate addresses on the interface.
3) In the same service, I disabled the removing of the IPv4 gateway from
the routing table altogether. The reason being that removing the address
from the interface removes all routes pointing out from the interface -
so it won't appear in the table anyway. The existing code looked like it
had a logic error, so wouldn't be executed anyway. I just commented it
out - but if someone believes it should be there, easy enough to leave
4) In /sbin/ifup, I added the ability to set the IPv6 default gateway
(again, this really should be learned from the router in IPv6, but the
support is there, if desired).
5) I installed the BLFS traceroute program. I believe if static IPv6 is
added to LFS vs. BLFS, that this package, installed after inetutils,
should be part of LFS as well, as the lack of a v6-capable traceroute on
an IPv6-enabled system is not good.
6) Here's an area that leaves me unhappy: In /sbin/ifdown, I removed the
check for all addresses being removed from an interface before bringing
it down. I just bring it down. If calling 'ifdown' - you kind of want to
bring the interface down.
7) Another reason I am unhappy: It doesn't support the use of dynamic
IPv6 addressing - but then again, neither does LFS (BLFS does).
Rationale for changes the way they are:
a) Most of the time, if someone has both IPv4 and IPv6 addresses on an
interface, they want them both up simultaneously. They want "ifdown
<dev>" and "ifup <dev>" to do that for them, without thinking of issuing
multiple commands. They also want the same logic to work if they just
have one of v4 or v6.
b) Supporting this is simple for the user - just add the IPV6, PREFIXV6,
and perhaps a GATEWAY6 parameter to the same files they already edit.
c) IPv6 is becoming more common. LFS 'standard' should support it.
The changes work for me. I am not happy with (6) all that much at all,
even though it works for me, it may not work for all (I didn't try the
sub-interface (secondary address) case - that's where it may break.) I
am not sure how many LFS users are creating secondary interfaces.
If they are viewed as useful, I will ship the changed files off to
someone. They really weren't much work - perhaps a total of an hour was
spent on this; largely it is copy/paste of other code.
More information about the lfs-dev