summaryrefslogtreecommitdiffstats
path: root/loader2
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2007-03-06 21:04:22 +0000
committerDavid Cantrell <dcantrell@redhat.com>2007-03-06 21:04:22 +0000
commita0cbd557572e11c999432423cb828f59a0205080 (patch)
tree764743d0ac2189bab840aef3c20de8684c4b76ad /loader2
parent59ad00ea01a65907d53dc1980ddfb3b381a8cedb (diff)
downloadanaconda-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.c34
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;
}