wpa_supplicant: Fix p2p_group_add when UDP-based ctrl_iface is used
While p2p_group_add ctrl_interface name could be derived from the main interface (simple p2p_group_add command), we failed to bind the same UDP port. Fix this problem and also update the correct ctrl_interface name (port decrement). Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
This commit is contained in:
parent
24bce46e9c
commit
5ae65de0b7
1 changed files with 11 additions and 2 deletions
|
@ -378,6 +378,7 @@ struct ctrl_iface_priv *
|
||||||
wpa_supplicant_ctrl_iface_init(struct wpa_supplicant *wpa_s)
|
wpa_supplicant_ctrl_iface_init(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
struct ctrl_iface_priv *priv;
|
struct ctrl_iface_priv *priv;
|
||||||
|
char port_str[40];
|
||||||
int port = WPA_CTRL_IFACE_PORT;
|
int port = WPA_CTRL_IFACE_PORT;
|
||||||
char *pos;
|
char *pos;
|
||||||
#ifdef CONFIG_CTRL_IFACE_UDP_IPV6
|
#ifdef CONFIG_CTRL_IFACE_UDP_IPV6
|
||||||
|
@ -439,13 +440,21 @@ try_again:
|
||||||
#endif /* CONFIG_CTRL_IFACE_UDP_IPV6 */
|
#endif /* CONFIG_CTRL_IFACE_UDP_IPV6 */
|
||||||
if (bind(priv->sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
|
if (bind(priv->sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
|
||||||
port--;
|
port--;
|
||||||
if ((WPA_CTRL_IFACE_PORT - port) < WPA_CTRL_IFACE_PORT_LIMIT &&
|
if ((WPA_CTRL_IFACE_PORT - port) < WPA_CTRL_IFACE_PORT_LIMIT)
|
||||||
!pos)
|
|
||||||
goto try_again;
|
goto try_again;
|
||||||
wpa_printf(MSG_ERROR, "bind(AF_INET): %s", strerror(errno));
|
wpa_printf(MSG_ERROR, "bind(AF_INET): %s", strerror(errno));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update the ctrl_interface value to match the selected port */
|
||||||
|
os_snprintf(port_str, sizeof(port_str), "udp:%d", port);
|
||||||
|
os_free(wpa_s->conf->ctrl_interface);
|
||||||
|
wpa_s->conf->ctrl_interface = os_strdup(port_str);
|
||||||
|
if (!wpa_s->conf->ctrl_interface) {
|
||||||
|
wpa_msg(wpa_s, MSG_ERROR, "Failed to malloc ctrl_interface");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CTRL_IFACE_UDP_REMOTE
|
#ifdef CONFIG_CTRL_IFACE_UDP_REMOTE
|
||||||
wpa_msg(wpa_s, MSG_DEBUG, "ctrl_iface_init UDP port: %d", port);
|
wpa_msg(wpa_s, MSG_DEBUG, "ctrl_iface_init UDP port: %d", port);
|
||||||
#endif /* CONFIG_CTRL_IFACE_UDP_REMOTE */
|
#endif /* CONFIG_CTRL_IFACE_UDP_REMOTE */
|
||||||
|
|
Loading…
Reference in a new issue