]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
drivers: Move driver_wired_deinit_common() to a common file
authorSabrina Dubroca <sd@queasysnail.net>
Sun, 27 Nov 2016 19:08:51 +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 26003b0d24b5c1930890874c00b7db6600038aa5..30bf31ce8812499e7fd7c6642f2a0254589aa6d0 100644 (file)
@@ -174,43 +174,8 @@ static void * macsec_qca_init(void *ctx, const char *ifname)
 static void macsec_qca_deinit(void *priv)
 {
        struct macsec_qca_data *drv = priv;
-       int flags;
-
-       if (drv->common.membership &&
-           wired_multicast_membership(drv->common.pf_sock,
-                                      if_nametoindex(drv->common.ifname),
-                                      pae_group_addr, 0) < 0) {
-               wpa_printf(MSG_DEBUG,
-                          "%s: Failed to remove PAE multicast group (PACKET)",
-                          __func__);
-       }
-
-       if (drv->common.multi &&
-           driver_wired_multi(drv->common.ifname, pae_group_addr, 0) < 0) {
-               wpa_printf(MSG_DEBUG,
-                          "%s: Failed to remove PAE multicast group (SIOCDELMULTI)",
-                          __func__);
-       }
-
-       if (drv->common.iff_allmulti &&
-           (driver_wired_get_ifflags(drv->common.ifname, &flags) < 0 ||
-            driver_wired_set_ifflags(drv->common.ifname,
-                                     flags & ~IFF_ALLMULTI) < 0)) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to disable allmulti mode",
-                          __func__);
-       }
-
-       if (drv->common.iff_up &&
-           driver_wired_get_ifflags(drv->common.ifname, &flags) == 0 &&
-           (flags & IFF_UP) &&
-           driver_wired_set_ifflags(drv->common.ifname, flags & ~IFF_UP) < 0) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to set the interface down",
-                          __func__);
-       }
-
-       if (drv->common.pf_sock != -1)
-               close(drv->common.pf_sock);
 
+       driver_wired_deinit_common(&drv->common);
        os_free(drv);
 }
 
index 38476af9182edce53dc8c16a784f579d0ddc77e4..54217bc1d5ccd077ffafd51e17d12b3453f1559a 100644 (file)
@@ -410,41 +410,8 @@ static void * wpa_driver_wired_init(void *ctx, const char *ifname)
 static void wpa_driver_wired_deinit(void *priv)
 {
        struct wpa_driver_wired_data *drv = priv;
-       int flags;
-
-       if (drv->common.membership &&
-           wired_multicast_membership(drv->common.pf_sock,
-                                      if_nametoindex(drv->common.ifname),
-                                      pae_group_addr, 0) < 0) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to remove PAE multicast "
-                          "group (PACKET)", __func__);
-       }
-
-       if (drv->common.multi &&
-           driver_wired_multi(drv->common.ifname, pae_group_addr, 0) < 0) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to remove PAE multicast "
-                          "group (SIOCDELMULTI)", __func__);
-       }
-
-       if (drv->common.iff_allmulti &&
-           (driver_wired_get_ifflags(drv->common.ifname, &flags) < 0 ||
-            driver_wired_set_ifflags(drv->common.ifname,
-                                     flags & ~IFF_ALLMULTI) < 0)) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to disable allmulti mode",
-                          __func__);
-       }
-
-       if (drv->common.iff_up &&
-           driver_wired_get_ifflags(drv->common.ifname, &flags) == 0 &&
-           (flags & IFF_UP) &&
-           driver_wired_set_ifflags(drv->common.ifname, flags & ~IFF_UP) < 0) {
-               wpa_printf(MSG_DEBUG, "%s: Failed to set the interface down",
-                          __func__);
-       }
-
-       if (drv->common.pf_sock != -1)
-               close(drv->common.pf_sock);
 
+       driver_wired_deinit_common(&drv->common);
        os_free(drv);
 }
 
index 6f782c2deaf2cdff0aeb9bea1da1baf24bf93a6d..73c2b1b342546f1362b2f8530b73334d01511887 100644 (file)
@@ -256,3 +256,44 @@ int driver_wired_init_common(struct driver_wired_common_data *common,
 
        return 0;
 }
+
+
+void driver_wired_deinit_common(struct driver_wired_common_data *common)
+{
+       int flags;
+
+       if (common->membership &&
+           wired_multicast_membership(common->pf_sock,
+                                      if_nametoindex(common->ifname),
+                                      pae_group_addr, 0) < 0) {
+               wpa_printf(MSG_DEBUG,
+                          "%s: Failed to remove PAE multicast group (PACKET)",
+                          __func__);
+       }
+
+       if (common->multi &&
+           driver_wired_multi(common->ifname, pae_group_addr, 0) < 0) {
+               wpa_printf(MSG_DEBUG,
+                          "%s: Failed to remove PAE multicast group (SIOCDELMULTI)",
+                          __func__);
+       }
+
+       if (common->iff_allmulti &&
+           (driver_wired_get_ifflags(common->ifname, &flags) < 0 ||
+            driver_wired_set_ifflags(common->ifname,
+                                     flags & ~IFF_ALLMULTI) < 0)) {
+               wpa_printf(MSG_DEBUG, "%s: Failed to disable allmulti mode",
+                          __func__);
+       }
+
+       if (common->iff_up &&
+           driver_wired_get_ifflags(common->ifname, &flags) == 0 &&
+           (flags & IFF_UP) &&
+           driver_wired_set_ifflags(common->ifname, flags & ~IFF_UP) < 0) {
+               wpa_printf(MSG_DEBUG, "%s: Failed to set the interface down",
+                          __func__);
+       }
+
+       if (common->pf_sock != -1)
+               close(common->pf_sock);
+}
index e4f54b91d2ea0f762e6a6ebd34582cbcde74ff0f..f362dbd7c86a1874a93ce43fd7d8b9e5f8d61eb1 100644 (file)
@@ -30,5 +30,6 @@ int driver_wired_get_ifstatus(const char *ifname, int *status);
 
 int driver_wired_init_common(struct driver_wired_common_data *common,
                             const char *ifname, void *ctx);
+void driver_wired_deinit_common(struct driver_wired_common_data *common);
 
 #endif /* DRIVER_WIRED_COMMON_H */