static void * wpa_driver_hostap_init(void *ctx, const char *ifname) { struct wpa_driver_hostap_data *drv; drv = os_zalloc(sizeof(*drv)); if (drv == NULL) return NULL; drv->wext = wpa_driver_wext_init(ctx, ifname); if (drv->wext == NULL) { os_free(drv); return NULL; } drv->ctx = ctx; os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); drv->sock = socket(PF_INET, SOCK_DGRAM, 0); if (drv->sock < 0) { perror("socket"); wpa_driver_wext_deinit(drv->wext); os_free(drv); return NULL; } if (os_strncmp(ifname, "wlan", 4) == 0) { /* * Host AP driver may use both wlan# and wifi# interface in * wireless events. */ char ifname2[IFNAMSIZ + 1]; os_strlcpy(ifname2, ifname, sizeof(ifname2)); os_memcpy(ifname2, "wifi", 4); wpa_driver_wext_alternative_ifindex(drv->wext, ifname2); } wpa_driver_hostap_set_wpa(drv, 1); return drv; }
int wpa_driver_awext_alternative_ifindex(struct wpa_driver_awext_data *drv, const char *ifname) { return wpa_driver_wext_alternative_ifindex(drv->wext, ifname); }