From a0cbd557572e11c999432423cb828f59a0205080 Mon Sep 17 00:00:00 2001 From: David Cantrell Date: Tue, 6 Mar 2007 21:04:22 +0000 Subject: * loader2/net.c (initLoopback): Init loopback correctly, have to go back to using ioctl() rather than netlink. (#229670) --- loader2/net.c | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'loader2') 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 +#include #include #include #include @@ -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; } -- cgit