diff options
author | David Cantrell <dcantrell@redhat.com> | 2007-03-06 21:04:22 +0000 |
---|---|---|
committer | David Cantrell <dcantrell@redhat.com> | 2007-03-06 21:04:22 +0000 |
commit | a0cbd557572e11c999432423cb828f59a0205080 (patch) | |
tree | 764743d0ac2189bab840aef3c20de8684c4b76ad /loader2 | |
parent | 59ad00ea01a65907d53dc1980ddfb3b381a8cedb (diff) | |
download | anaconda-a0cbd557572e11c999432423cb828f59a0205080.tar.gz anaconda-a0cbd557572e11c999432423cb828f59a0205080.tar.xz anaconda-a0cbd557572e11c999432423cb828f59a0205080.zip |
* loader2/net.c (initLoopback): Init loopback correctly, have to go back
to using ioctl() rather than netlink. (#229670)
Diffstat (limited to 'loader2')
-rw-r--r-- | loader2/net.c | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/loader2/net.c b/loader2/net.c index c56e139b0..c30c7e02e 100644 --- a/loader2/net.c +++ b/loader2/net.c @@ -22,6 +22,7 @@ */ #include <sys/types.h> +#include <sys/ioctl.h> #include <sys/socket.h> #include <sys/utsname.h> #include <arpa/inet.h> @@ -210,23 +211,30 @@ static void parseEthtoolSettings(struct loaderData_s * loaderData) { } void initLoopback(void) { - NLH_t nh; - NIC_t nic; - uint32_t nflags; + struct ifreq req; + int s; - /* open nic handle and set device name */ - nh = nic_open(nic_sys_logger); - nic = nic_by_name(nh, "lo"); + s = socket(AF_INET, SOCK_DGRAM, 0); - /* bring the interface up */ - nflags = nic_get_flags(nic); - if ((nflags & (IFF_UP | IFF_RUNNING)) == 0) { - nic_set_flags(nic, nflags | IFF_UP | IFF_RUNNING); - nic_update(nic); + memset(&req, 0, sizeof(req)); + strcpy(req.ifr_name, "lo"); + + if (ioctl(s, SIOCGIFFLAGS, &req)) { + logMessage(LOG_ERR, "ioctl SIOCGIFFLAGS failed: %d %s\n", errno, + strerror(errno)); + close(s); + return; + } + + req.ifr_flags |= (IFF_UP | IFF_RUNNING); + if (ioctl(s, SIOCSIFFLAGS, &req)) { + logMessage(LOG_ERR, "ioctl SIOCSIFFLAGS failed: %d %s\n", errno, + strerror(errno)); + close(s); + return; } - /* clean up */ - nic_close(&nh); + close(s); return; } |