int wps_er_ssdp_init(struct wps_er *er) { if (add_ssdp_network(er->ifname)) { wpa_printf(MSG_INFO, "WPS ER: Failed to add routing entry for " "SSDP"); return -1; } er->multicast_sd = ssdp_open_multicast_sock(er->ip_addr); if (er->multicast_sd < 0) { wpa_printf(MSG_INFO, "WPS ER: Failed to open multicast socket " "for SSDP"); return -1; } er->ssdp_sd = ssdp_listener_open(); if (er->ssdp_sd < 0) { wpa_printf(MSG_INFO, "WPS ER: Failed to open SSDP listener " "socket"); return -1; } if (eloop_register_sock(er->multicast_sd, EVENT_TYPE_READ, wps_er_ssdp_rx, er, NULL) || eloop_register_sock(er->ssdp_sd, EVENT_TYPE_READ, wps_er_ssdp_rx, er, NULL)) return -1; wps_er_send_ssdp_msearch(er); return 0; }
void wps_er_refresh(struct wps_er *er) { struct wps_er_ap *ap; struct wps_er_sta *sta; dl_list_for_each(ap, &er->ap, struct wps_er_ap, list) { wps_er_ap_event(er->wps, ap, WPS_EV_ER_AP_ADD); dl_list_for_each(sta, &ap->sta, struct wps_er_sta, list) wps_er_sta_event(er->wps, sta, WPS_EV_ER_ENROLLEE_ADD); } wps_er_send_ssdp_msearch(er); }
int wps_er_ssdp_init(struct wps_er *er) { if (add_ssdp_network(er->ifname)) return -1; er->multicast_sd = ssdp_open_multicast_sock(er->ip_addr); if (er->multicast_sd < 0) return -1; er->ssdp_sd = ssdp_listener_open(); if (er->ssdp_sd < 0) return -1; if (eloop_register_sock(er->multicast_sd, EVENT_TYPE_READ, wps_er_ssdp_rx, er, NULL) || eloop_register_sock(er->ssdp_sd, EVENT_TYPE_READ, wps_er_ssdp_rx, er, NULL)) return -1; wps_er_send_ssdp_msearch(er); return 0; }