From b972ec96236afc662b21ace09d6adaa29d222411 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 28 Dec 2008 03:30:12 +0100 Subject: Use helpers for ifup and ifdown --- plugins/Makefile.am | 2 +- plugins/ethernet.c | 92 +++-------------------------------------------------- 2 files changed, 5 insertions(+), 89 deletions(-) (limited to 'plugins') diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 09ca6f7f..b71e6b9c 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -9,7 +9,7 @@ loopback_la_SOURCES = loopback.c netdev_la_SOURCES = netdev.c -ethernet_la_SOURCES = ethernet.c +ethernet_la_SOURCES = ethernet.c inet.h inet.c wifi_la_SOURCES = wifi.c inet.h inet.c supplicant.h supplicant.c wifi_la_LIBADD = @GDBUS_LIBS@ diff --git a/plugins/ethernet.c b/plugins/ethernet.c index 08cfb4fe..5ddc7653 100644 --- a/plugins/ethernet.c +++ b/plugins/ethernet.c @@ -36,6 +36,8 @@ #include #include +#include "inet.h" + struct ethernet_data { int index; unsigned flags; @@ -90,92 +92,6 @@ static struct connman_rtnl ethernet_rtnl = { .newlink = ethernet_newlink, }; -static int iface_up(struct ethernet_data *ethernet) -{ - struct ifreq ifr; - int sk, err; - - DBG("index %d flags %d", ethernet->index, ethernet->flags); - - sk = socket(PF_INET, SOCK_DGRAM, 0); - if (sk < 0) - return -errno; - - memset(&ifr, 0, sizeof(ifr)); - ifr.ifr_ifindex = ethernet->index; - - if (ioctl(sk, SIOCGIFNAME, &ifr) < 0) { - err = -errno; - goto done; - } - - if (ioctl(sk, SIOCGIFFLAGS, &ifr) < 0) { - err = -errno; - goto done; - } - - if (ifr.ifr_flags & IFF_UP) { - err = -EALREADY; - goto done; - } - - ifr.ifr_flags |= IFF_UP; - - if (ioctl(sk, SIOCSIFFLAGS, &ifr) < 0) { - err = -errno; - goto done; - } - - err = 0; - -done: - close(sk); - - return err; -} - -static int iface_down(struct ethernet_data *ethernet) -{ - struct ifreq ifr; - int sk, err; - - DBG("index %d flags %d", ethernet->index, ethernet->flags); - - sk = socket(PF_INET, SOCK_DGRAM, 0); - if (sk < 0) - return -errno; - - memset(&ifr, 0, sizeof(ifr)); - ifr.ifr_ifindex = ethernet->index; - - if (ioctl(sk, SIOCGIFNAME, &ifr) < 0) { - err = -errno; - goto done; - } - - if (ioctl(sk, SIOCGIFFLAGS, &ifr) < 0) { - err = -errno; - goto done; - } - - if (!(ifr.ifr_flags & IFF_UP)) { - err = -EALREADY; - goto done; - } - - ifr.ifr_flags &= ~IFF_UP; - - if (ioctl(sk, SIOCSIFFLAGS, &ifr) < 0) - err = -errno; - else - err = 0; - -done: - close(sk); - - return err; -} - static int ethernet_probe(struct connman_device *device) { struct ethernet_data *ethernet; @@ -216,7 +132,7 @@ static int ethernet_enable(struct connman_device *device) DBG("device %p", device); - return iface_up(ethernet); + return inet_ifup(ethernet->index); } static int ethernet_disable(struct connman_device *device) @@ -225,7 +141,7 @@ static int ethernet_disable(struct connman_device *device) DBG("device %p", device); - return iface_down(ethernet); + return inet_ifdown(ethernet->index); } static struct connman_device_driver ethernet_driver = { -- cgit v1.2.3