]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
drivers: Move driver_wired_get_ifflags() to a common file
authorSabrina Dubroca <sd@queasysnail.net>
Sun, 27 Nov 2016 19:08:47 +0000 (20:08 +0100)
committerJouni Malinen <j@w1.fi>
Wed, 30 Nov 2016 17:33:43 +0000 (19:33 +0200)
This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
src/drivers/driver_macsec_qca.c
src/drivers/driver_wired.c
src/drivers/driver_wired_common.c
src/drivers/driver_wired_common.h

index 6c07e0144caa718a7b241ec1a1c983d67d383f3e..d0d4611c06a604b48619346dc38faad25c796638 100644 (file)
@@ -99,31 +99,6 @@ static int macsec_qca_get_capa(void *priv, struct wpa_driver_capa *capa)
 }
 
 
-static int macsec_qca_get_ifflags(const char *ifname, int *flags)
-{
-       struct ifreq ifr;
-       int s;
-
-       s = socket(PF_INET, SOCK_DGRAM, 0);
-       if (s < 0) {
-               wpa_printf(MSG_ERROR, "socket: %s", strerror(errno));
-               return -1;
-       }
-
-       os_memset(&ifr, 0, sizeof(ifr));
-       os_strlcpy(ifr.ifr_name, ifname, IFNAMSIZ);
-       if (ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
-               wpa_printf(MSG_ERROR, "ioctl[SIOCGIFFLAGS]: %s",
-                          strerror(errno));
-               close(s);
-               return -1;
-       }
-       close(s);
-       *flags = ifr.ifr_flags & 0xffff;
-       return 0;
-}
-
-
 static int macsec_qca_set_ifflags(const char *ifname, int flags)
 {
        struct ifreq ifr;
@@ -252,7 +227,7 @@ static void * macsec_qca_init(void *ctx, const char *ifname)
        drv->common.pf_sock = -1;
 #endif /* __linux__ */
 
-       if (macsec_qca_get_ifflags(ifname, &flags) == 0 &&
+       if (driver_wired_get_ifflags(ifname, &flags) == 0 &&
            !(flags & IFF_UP) &&
            macsec_qca_set_ifflags(ifname, flags | IFF_UP) == 0) {
                drv->common.iff_up = 1;
@@ -270,7 +245,7 @@ static void * macsec_qca_init(void *ctx, const char *ifname)
                           "%s: Added multicast membership with SIOCADDMULTI",
                           __func__);
                drv->common.multi = 1;
-       } else if (macsec_qca_get_ifflags(ifname, &flags) < 0) {
+       } else if (driver_wired_get_ifflags(ifname, &flags) < 0) {
                wpa_printf(MSG_INFO, "%s: Could not get interface flags",
                           __func__);
                os_free(drv);
@@ -325,7 +300,7 @@ static void macsec_qca_deinit(void *priv)
        }
 
        if (drv->common.iff_allmulti &&
-           (macsec_qca_get_ifflags(drv->common.ifname, &flags) < 0 ||
+           (driver_wired_get_ifflags(drv->common.ifname, &flags) < 0 ||
             macsec_qca_set_ifflags(drv->common.ifname,
                                    flags & ~IFF_ALLMULTI) < 0)) {
                wpa_printf(MSG_DEBUG, "%s: Failed to disable allmulti mode",
@@ -333,7 +308,7 @@ static void macsec_qca_deinit(void *priv)
        }
 
        if (drv->common.iff_up &&
-           macsec_qca_get_ifflags(drv->common.ifname, &flags) == 0 &&
+           driver_wired_get_ifflags(drv->common.ifname, &flags) == 0 &&
            (flags & IFF_UP) &&
            macsec_qca_set_ifflags(drv->common.ifname, flags & ~IFF_UP) < 0) {
                wpa_printf(MSG_DEBUG, "%s: Failed to set the interface down",
index 20c66e3991887c15ed7329a343cdb1c738d32393..ad49eaf5de604e08b0350e58cad42c8aaa618048 100644 (file)
@@ -390,31 +390,6 @@ static int wpa_driver_wired_get_capa(void *priv, struct wpa_driver_capa *capa)
 }
 
 
-static int wpa_driver_wired_get_ifflags(const char *ifname, int *flags)
-{
-       struct ifreq ifr;
-       int s;
-
-       s = socket(PF_INET, SOCK_DGRAM, 0);
-       if (s < 0) {
-               wpa_printf(MSG_ERROR, "socket: %s", strerror(errno));
-               return -1;
-       }
-
-       os_memset(&ifr, 0, sizeof(ifr));
-       os_strlcpy(ifr.ifr_name, ifname, IFNAMSIZ);
-       if (ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
-               wpa_printf(MSG_ERROR, "ioctl[SIOCGIFFLAGS]: %s",
-                          strerror(errno));
-               close(s);
-               return -1;
-       }
-       close(s);
-       *flags = ifr.ifr_flags & 0xffff;
-       return 0;
-}
-
-
 static int wpa_driver_wired_set_ifflags(const char *ifname, int flags)
 {
        struct ifreq ifr;
@@ -488,7 +463,7 @@ static void * wpa_driver_wired_init(void *ctx, const char *ifname)
        drv->common.pf_sock = -1;
 #endif /* __linux__ */
 
-       if (wpa_driver_wired_get_ifflags(ifname, &flags) == 0 &&
+       if (driver_wired_get_ifflags(ifname, &flags) == 0 &&
            !(flags & IFF_UP) &&
            wpa_driver_wired_set_ifflags(ifname, flags | IFF_UP) == 0) {
                drv->common.iff_up = 1;
@@ -504,7 +479,7 @@ static void * wpa_driver_wired_init(void *ctx, const char *ifname)
                wpa_printf(MSG_DEBUG, "%s: Added multicast membership with "
                           "SIOCADDMULTI", __func__);
                drv->common.multi = 1;
-       } else if (wpa_driver_wired_get_ifflags(ifname, &flags) < 0) {
+       } else if (driver_wired_get_ifflags(ifname, &flags) < 0) {
                wpa_printf(MSG_INFO, "%s: Could not get interface "
                           "flags", __func__);
                os_free(drv);
@@ -558,7 +533,7 @@ static void wpa_driver_wired_deinit(void *priv)
        }
 
        if (drv->common.iff_allmulti &&
-           (wpa_driver_wired_get_ifflags(drv->common.ifname, &flags) < 0 ||
+           (driver_wired_get_ifflags(drv->common.ifname, &flags) < 0 ||
             wpa_driver_wired_set_ifflags(drv->common.ifname,
                                          flags & ~IFF_ALLMULTI) < 0)) {
                wpa_printf(MSG_DEBUG, "%s: Failed to disable allmulti mode",
@@ -566,7 +541,7 @@ static void wpa_driver_wired_deinit(void *priv)
        }
 
        if (drv->common.iff_up &&
-           wpa_driver_wired_get_ifflags(drv->common.ifname, &flags) == 0 &&
+           driver_wired_get_ifflags(drv->common.ifname, &flags) == 0 &&
            (flags & IFF_UP) &&
            wpa_driver_wired_set_ifflags(drv->common.ifname,
                                         flags & ~IFF_UP) < 0) {
index 4cb04daf9bed366e4d60344a5012c8dde964daf7..a84dcc70c8f4bfad71ba56942bfc9e9f14d9f41a 100644 (file)
 #endif /* __sun__ */
 
 
+int driver_wired_get_ifflags(const char *ifname, int *flags)
+{
+       struct ifreq ifr;
+       int s;
+
+       s = socket(PF_INET, SOCK_DGRAM, 0);
+       if (s < 0) {
+               wpa_printf(MSG_ERROR, "socket: %s", strerror(errno));
+               return -1;
+       }
+
+       os_memset(&ifr, 0, sizeof(ifr));
+       os_strlcpy(ifr.ifr_name, ifname, IFNAMSIZ);
+       if (ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
+               wpa_printf(MSG_ERROR, "ioctl[SIOCGIFFLAGS]: %s",
+                          strerror(errno));
+               close(s);
+               return -1;
+       }
+       close(s);
+       *flags = ifr.ifr_flags & 0xffff;
+       return 0;
+}
+
+
 int driver_wired_multi(const char *ifname, const u8 *addr, int add)
 {
        struct ifreq ifr;
index 9bbe94fd1940a6565d5685345eca53ace61cdb90..b8ed0e0020a99b5c67aeca6758020258a9cb1fe3 100644 (file)
@@ -22,6 +22,7 @@ struct driver_wired_common_data {
 static const u8 pae_group_addr[ETH_ALEN] =
 { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03 };
 
+int driver_wired_get_ifflags(const char *ifname, int *flags);
 int driver_wired_multi(const char *ifname, const u8 *addr, int add);
 int wired_multicast_membership(int sock, int ifindex, const u8 *addr, int add);