Provide own_addr buffer in hapd_init() parameters
[wpasupplicant] / src / drivers / driver_prism54.c
index f2837cc..f2c6916 100644 (file)
@@ -941,9 +941,9 @@ static void handle_802_3(int sock, void *eloop_ctx, void *sock_ctx)
 }
 
 
-static int prism54_init_sockets(struct prism54_driver_data *drv)
+static int prism54_init_sockets(struct prism54_driver_data *drv,
+                               struct wpa_init_params *params)
 {
-       struct hostapd_data *hapd = drv->hapd;
        struct ifreq ifr;
        struct sockaddr_ll addr;
 
@@ -960,9 +960,9 @@ static int prism54_init_sockets(struct prism54_driver_data *drv)
        }
 
         memset(&ifr, 0, sizeof(ifr));
-       if (hapd->conf->bridge[0] != '\0') {
-               printf("opening bridge: %s\n", hapd->conf->bridge);
-               os_strlcpy(ifr.ifr_name, hapd->conf->bridge,
+       if (params->num_bridge && params->bridge[0]) {
+               printf("opening bridge: %s\n", params->bridge[0]);
+               os_strlcpy(ifr.ifr_name, params->bridge[0],
                           sizeof(ifr.ifr_name));
        } else {
                os_strlcpy(ifr.ifr_name, drv->iface, sizeof(ifr.ifr_name));
@@ -996,7 +996,7 @@ static int prism54_init_sockets(struct prism54_driver_data *drv)
                       ifr.ifr_hwaddr.sa_family);
                return -1;
        }
-       memcpy(drv->hapd->own_addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
+       memcpy(params->own_addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
 
        drv->pim_sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
        if (drv->pim_sock < 0) {
@@ -1048,7 +1048,7 @@ static void * prism54_driver_init(struct hostapd_data *hapd,
        drv->pim_sock = drv->sock = -1;
        memcpy(drv->iface, params->ifname, sizeof(drv->iface));
 
-       if (prism54_init_sockets(drv)) {
+       if (prism54_init_sockets(drv, params)) {
                free(drv);
                return NULL;
        }