Here is the first patch to bring NetworkManager in to anaconda. The
goals
during this patch:
* Make minimal changes to the current code.
* Bring NetworkManager in and use it starting in stage 1.
* Do not make changes to the NetworkManager related packages as they are
in Fedora, just use them as is and pull in whatever we need.
* Be able to perform IPv4 installs over HTTP and NFS.
In an effort to ease patch-reading pain, I have split the patches up
in to
some sort of logical groupings:
0001-misc.patch
Changes to anaconda.spec and command-stubs
0002-scripts.patch
Changes to upd-instroot and mk-images*
0003-loader.patch
Mostly changes to net.c at the moment, but other
files have some changes.
0004-isys.patch
Changes to isys. iface.c has most of it. The
wireless bits are gone. And I am still working
on isys.c.
What you are going to find in these patches:
1) Lots of changes to upd-instroot and mk-images. NetworkManager
means we
also bring in dbus, hal, PolicyKit, functions, network-functions,
and
other support programs called by those programs or scripts.
dhclient
is in there, along with dhclient-script (which uses bash), and
dhcp6c.
It's a truckload of stuff.
1a) Had to bring in /usr/lib/gconv because NM converts dhcp options to
Unicode. After talking with Dan Williams (dcbw, NM upstream), NM
has
been modified to not perform that conversion. When the new
version of
NM shows up in rawhide, I can dump /usr/lib/gconv.
3) A new function called writeDisabledNetInfo() which writes out ifcfg
files for every found interface so we disable them by default.
4) The new iface.c stuff in isys. This code starts NetworkManager and
introduces a new type called iface_t. This is meant to replace all
uses of networkDeviceConfig and pumpNetIntf and all of the other
various structs that hold net info. Yes, there are a lot of flags
and copies of data right now, but cleanup is later. The rest of the
iface code is to provide a single API inside anaconda to get
information
about an interface (or set information). I expect the iface_t
struct
to get smaller, as well as flags in loaderData to disappear.
5) No more pump or libdhcp.
What works (or, what I've tested locally):
* IPv4 network installs over HTTP (and I guess FTP)
* IPv4 network installs over NFS
I've tested using DHCP and static configuration method. NetworkManager
currently lacks complete support for IPv6, but that's on my to do list.
I want to make sure kickstart isn't completely busted either.
What is obviously not working correctly yet (read: I already know
about it):
* Network configuration information is not carried over to stage 2 yet.
When you are at the post-config step for the network interfaces, it
won't
reflect the current state.
* Any wireless installs. The get_connection() function in loader2/net.c
provides a loop to attach this kind of stuff. When NM wants more
info,
we can prompt here and continue to wait for it to bring up the link.
* IPv6 installs. NetworkManager is currently not quite there yet, but
that's ok because neither are Fedora users in general. I am
working on
NM to bring IPv6 support in to it, at least for Fedora.
What I'm doing next:
* Fix bugs.
* Start removing deprecated code. In particular, STEP_NETWORK,
STEP_IFACE,
and STEP_IP need reworking. In net.c, all of the functions can be
simplified.
* Removal of network parameters in loaderData.
* Communicate more with NetworkManager over D-Bus.
* Add code that can prompt for required parameters as needed when NM
asks
for them (e.g., wireless settings or passwords). This will require
the
D-Bus communication bits to be in place. This step will bring us
wireless
WPA and WEP installs, for example.
* More patches to NetworkManager to support IPv6.
Comments welcome. Would like to commit this ASAP.
--
David Cantrell <dcantrell@xxxxxxxxxx>
Red Hat / Honolulu, HI
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list