diff mbox

[v2,1/3] Add getter and setter for EAPOL config parameters.

Message ID 1478170363-13853-1-git-send-email-n.chaprana@samsung.com
State Accepted
Headers show

Commit Message

Nishant Chaprana Nov. 3, 2016, 10:52 a.m. UTC
This patch adds setter and getter for EAPOL config parameters :-
1. ip_addr_go
2. ip_addr_mask
3. ip_addr_start
4. ip_addr_end

Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
---
 wpa_supplicant/dbus/dbus_new_handlers_p2p.c | 63 +++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Dan Williams Nov. 10, 2016, 4:56 p.m. UTC | #1
On Thu, 2016-11-03 at 16:22 +0530, Nishant Chaprana wrote:
> This patch adds setter and getter for EAPOL config parameters :-
> 1. ip_addr_go
> 2. ip_addr_mask
> 3. ip_addr_start
> 4. ip_addr_end

One thought I had here; do we care about IPv6, even eventually?  If so,
we should probably just do strings here instead of byte arrays.

Dan

> Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
> ---
>  wpa_supplicant/dbus/dbus_new_handlers_p2p.c | 63
> +++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
> 
> diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
> b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
> index 73b9e20..a84dbd8 100644
> --- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
> +++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
> @@ -28,6 +28,16 @@
>  #include "../p2p_supplicant.h"
>  #include "../wifi_display.h"
>  
> +static inline int wpas_dbus_validate_dbus_ipaddr(struct
> wpa_dbus_dict_entry entry)
> +{
> +	if (entry.type != DBUS_TYPE_ARRAY ||
> +	    entry.array_type != DBUS_TYPE_BYTE ||
> +	    entry.array_len != 4)
> +		return 0;
> +
> +	return 1;
> +}
> +
>  /**
>   * Parses out the mac address from the peer object path.
>   * @peer_path - object path of the form
> @@ -867,6 +877,30 @@ dbus_bool_t wpas_dbus_getter_p2p_device_config(
>  			goto err_no_mem;
>  	}
>  
> +	/* IP Address GO */
> +	if (!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrGo",
> +					     (char *) wpa_s->conf-
> >ip_addr_go,
> +					     4))
> +		goto err_no_mem;
> +
> +	/* IP Address mask */
> +	if (!wpa_dbus_dict_append_byte_array(&dict_iter,
> "IpAddrMask",
> +					     (char *) wpa_s->conf-
> >ip_addr_mask,
> +					     4))
> +		goto err_no_mem;
> +
> +	/* IP Address Start*/
> +	if (!wpa_dbus_dict_append_byte_array(&dict_iter,
> "IpAddrStart",
> +					     (char *) wpa_s->conf-
> >ip_addr_start,
> +					     4))
> +		goto err_no_mem;
> +
> +	/* IP Address End*/
> +	if (!wpa_dbus_dict_append_byte_array(&dict_iter,
> "IpAddrEnd",
> +					     (char *) wpa_s->conf-
> >ip_addr_end,
> +					     4))
> +		goto err_no_mem;
> +
>  	/* Vendor Extensions */
>  	for (i = 0; i < P2P_MAX_WPS_VENDOR_EXT; i++) {
>  		if (wpa_s->conf->wps_vendor_ext[i] == NULL)
> @@ -1051,6 +1085,35 @@ dbus_bool_t
> wpas_dbus_setter_p2p_device_config(
>  			wpa_s->conf->p2p_intra_bss =
> entry.bool_value;
>  			wpa_s->conf->changed_parameters |=
>  				CFG_CHANGED_P2P_INTRA_BSS;
> +
> +		} else if (os_strcmp(entry.key, "IpAddrGo") == 0) {
> +			if (!wpas_dbus_validate_dbus_ipaddr(entry))
> +				goto error;
> +
> +			os_memcpy(wpa_s->conf->ip_addr_go,
> +				  entry.bytearray_value, 4);
> +
> +		} else if (os_strcmp(entry.key, "IpAddrMask") == 0)
> {
> +			if (!wpas_dbus_validate_dbus_ipaddr(entry))
> +				goto error;
> +
> +			os_memcpy(wpa_s->conf->ip_addr_mask,
> +				  entry.bytearray_value, 4);
> +
> +		} else if (os_strcmp(entry.key, "IpAddrStart") == 0)
> {
> +			if (!wpas_dbus_validate_dbus_ipaddr(entry))
> +				goto error;
> +
> +			os_memcpy(wpa_s->conf->ip_addr_start,
> +				  entry.bytearray_value, 4);
> +
> +		} else if (os_strcmp(entry.key, "IpAddrEnd") == 0) {
> +			if (!wpas_dbus_validate_dbus_ipaddr(entry))
> +				goto error;
> +
> +			os_memcpy(wpa_s->conf->ip_addr_end,
> +				  entry.bytearray_value, 4);
> +
>  		} else if (os_strcmp(entry.key, "GroupIdle") == 0 &&
>  			   entry.type == DBUS_TYPE_UINT32)
>  			wpa_s->conf->p2p_group_idle =
> entry.uint32_value;
Jouni Malinen Nov. 13, 2016, 4:35 p.m. UTC | #2
On Thu, Nov 10, 2016 at 10:56:55AM -0600, Dan Williams wrote:
> On Thu, 2016-11-03 at 16:22 +0530, Nishant Chaprana wrote:
> > This patch adds setter and getter for EAPOL config parameters :-
> > 1. ip_addr_go
> > 2. ip_addr_mask
> > 3. ip_addr_start
> > 4. ip_addr_end
> 
> One thought I had here; do we care about IPv6, even eventually?  If so,
> we should probably just do strings here instead of byte arrays.

Probably not for this P2P+NFC case.. The specification for that
explicitly covers only the IPv4 case and there is no existing protocol
extension to handle IPv6 as part of the 4-way handshake exchange.
Jouni Malinen Nov. 21, 2016, 12:51 p.m. UTC | #3
On Thu, Nov 03, 2016 at 04:22:43PM +0530, Nishant Chaprana wrote:
> This patch adds setter and getter for EAPOL config parameters :-
> 1. ip_addr_go
> 2. ip_addr_mask
> 3. ip_addr_start
> 4. ip_addr_end

Thanks, applied with some cleanup.
diff mbox

Patch

diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
index 73b9e20..a84dbd8 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
@@ -28,6 +28,16 @@ 
 #include "../p2p_supplicant.h"
 #include "../wifi_display.h"
 
+static inline int wpas_dbus_validate_dbus_ipaddr(struct wpa_dbus_dict_entry entry)
+{
+	if (entry.type != DBUS_TYPE_ARRAY ||
+	    entry.array_type != DBUS_TYPE_BYTE ||
+	    entry.array_len != 4)
+		return 0;
+
+	return 1;
+}
+
 /**
  * Parses out the mac address from the peer object path.
  * @peer_path - object path of the form
@@ -867,6 +877,30 @@  dbus_bool_t wpas_dbus_getter_p2p_device_config(
 			goto err_no_mem;
 	}
 
+	/* IP Address GO */
+	if (!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrGo",
+					     (char *) wpa_s->conf->ip_addr_go,
+					     4))
+		goto err_no_mem;
+
+	/* IP Address mask */
+	if (!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrMask",
+					     (char *) wpa_s->conf->ip_addr_mask,
+					     4))
+		goto err_no_mem;
+
+	/* IP Address Start*/
+	if (!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrStart",
+					     (char *) wpa_s->conf->ip_addr_start,
+					     4))
+		goto err_no_mem;
+
+	/* IP Address End*/
+	if (!wpa_dbus_dict_append_byte_array(&dict_iter, "IpAddrEnd",
+					     (char *) wpa_s->conf->ip_addr_end,
+					     4))
+		goto err_no_mem;
+
 	/* Vendor Extensions */
 	for (i = 0; i < P2P_MAX_WPS_VENDOR_EXT; i++) {
 		if (wpa_s->conf->wps_vendor_ext[i] == NULL)
@@ -1051,6 +1085,35 @@  dbus_bool_t wpas_dbus_setter_p2p_device_config(
 			wpa_s->conf->p2p_intra_bss = entry.bool_value;
 			wpa_s->conf->changed_parameters |=
 				CFG_CHANGED_P2P_INTRA_BSS;
+
+		} else if (os_strcmp(entry.key, "IpAddrGo") == 0) {
+			if (!wpas_dbus_validate_dbus_ipaddr(entry))
+				goto error;
+
+			os_memcpy(wpa_s->conf->ip_addr_go,
+				  entry.bytearray_value, 4);
+
+		} else if (os_strcmp(entry.key, "IpAddrMask") == 0) {
+			if (!wpas_dbus_validate_dbus_ipaddr(entry))
+				goto error;
+
+			os_memcpy(wpa_s->conf->ip_addr_mask,
+				  entry.bytearray_value, 4);
+
+		} else if (os_strcmp(entry.key, "IpAddrStart") == 0) {
+			if (!wpas_dbus_validate_dbus_ipaddr(entry))
+				goto error;
+
+			os_memcpy(wpa_s->conf->ip_addr_start,
+				  entry.bytearray_value, 4);
+
+		} else if (os_strcmp(entry.key, "IpAddrEnd") == 0) {
+			if (!wpas_dbus_validate_dbus_ipaddr(entry))
+				goto error;
+
+			os_memcpy(wpa_s->conf->ip_addr_end,
+				  entry.bytearray_value, 4);
+
 		} else if (os_strcmp(entry.key, "GroupIdle") == 0 &&
 			   entry.type == DBUS_TYPE_UINT32)
 			wpa_s->conf->p2p_group_idle = entry.uint32_value;