mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
	devel@linuxdriverproject.org, virtualization@lists.osdl.org,
	olaf@aepfle.de, apw@canonical.com
Subject: Re: [PATCH V2 06/18] Tools: hv: Further refactor kvp_get_ip_address()
Date: Tue, 14 Aug 2012 02:46:11 +0100	[thread overview]
Message-ID: <1344908771.824.156.camel@deadeye.wl.decadent.org.uk> (raw)
In-Reply-To: <1344877627-21779-6-git-send-email-kys@microsoft.com>

[-- Attachment #1: Type: text/plain, Size: 4125 bytes --]

On Mon, 2012-08-13 at 10:06 -0700, K. Y. Srinivasan wrote:
> In preparation for making kvp_get_ip_address() more generic, factor out
> the code for handling IP addresses.
> 
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
> Reviewed-by: Olaf Hering <olaf@aepfle.de>
> Reviewed-by: Ben Hutchings <ben@decadent.org.uk>

I looked at your last patch set, so in a sense these have been reviewed
by me.  But the 'Reviewed-by' line in a commit message means the
reviewer thinks it's OK; the reviewer must say that, and I didn't.

Ben.

> ---
>  tools/hv/hv_kvp_daemon.c |   94 ++++++++++++++++++++-------------------------
>  1 files changed, 42 insertions(+), 52 deletions(-)
> 
> diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c
> index 3af37f0..3dc989f 100644
> --- a/tools/hv/hv_kvp_daemon.c
> +++ b/tools/hv/hv_kvp_daemon.c
> @@ -491,17 +491,50 @@ done:
>  	return;
>  }
>  
> +static int kvp_process_ip_address(void *addrp,
> +				int family, char *buffer,
> +				int length,  int *offset)
> +{
> +	struct sockaddr_in *addr;
> +	struct sockaddr_in6 *addr6;
> +	int addr_length;
> +	char tmp[50];
> +	const char *str;
> +
> +	if (family == AF_INET) {
> +		addr = (struct sockaddr_in *)addrp;
> +		str = inet_ntop(family, &addr->sin_addr, tmp, 50);
> +		addr_length = INET_ADDRSTRLEN;
> +	} else {
> +		addr6 = (struct sockaddr_in6 *)addrp;
> +		str = inet_ntop(family, &addr6->sin6_addr.s6_addr, tmp, 50);
> +		addr_length = INET6_ADDRSTRLEN;
> +	}
> +
> +	if ((length - *offset) < addr_length + 1)
> +		return 1;
> +	if (str == NULL) {
> +		strcpy(buffer, "inet_ntop failed\n");
> +		return 1;
> +	}
> +	if (*offset == 0)
> +		strcpy(buffer, tmp);
> +	else
> +		strcat(buffer, tmp);
> +	strcat(buffer, ";");
> +
> +	*offset += strlen(str) + 1;
> +	return 0;
> +}
> +
>  static int
>  kvp_get_ip_address(int family, char *if_name, int op,
>  		 void  *out_buffer, int length)
>  {
>  	struct ifaddrs *ifap;
>  	struct ifaddrs *curp;
> -	int ipv4_len = strlen("255.255.255.255") + 1;
> -	int ipv6_len = strlen("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")+1;
>  	int offset = 0;
>  	const char *str;
> -	char tmp[50];
>  	int error = 0;
>  	char *buffer;
>  	struct hv_kvp_ipaddr_value *ip_buffer;
> @@ -556,55 +589,12 @@ kvp_get_ip_address(int family, char *if_name, int op,
>  			continue;
>  		}
>  
> -		if ((curp->ifa_addr->sa_family == AF_INET) &&
> -			((family == AF_INET) || (family == 0))) {
> -			struct sockaddr_in *addr =
> -			(struct sockaddr_in *) curp->ifa_addr;
> -
> -			str = inet_ntop(AF_INET, &addr->sin_addr, tmp, 50);
> -			if (str == NULL) {
> -				strcpy(buffer, "inet_ntop failed\n");
> -				error = 1;
> -				goto getaddr_done;
> -			}
> -			if (offset == 0)
> -				strcpy(buffer, tmp);
> -			else
> -				strcat(buffer, tmp);
> -			strcat(buffer, ";");
> -
> -			offset += strlen(str) + 1;
> -			if ((length - offset) < (ipv4_len + 1))
> -				goto getaddr_done;
> -
> -		} else if ((family == AF_INET6) || (family == 0)) {
> -
> -			/*
> -			 * We only support AF_INET and AF_INET6
> -			 * and the list of addresses is separated by a ";".
> -			 */
> -			struct sockaddr_in6 *addr =
> -				(struct sockaddr_in6 *) curp->ifa_addr;
> -
> -			str = inet_ntop(AF_INET6,
> -					&addr->sin6_addr.s6_addr,
> -					tmp, 50);
> -			if (str == NULL) {
> -				strcpy(buffer, "inet_ntop failed\n");
> -				error = 1;
> -				goto getaddr_done;
> -			}
> -			if (offset == 0)
> -				strcpy(buffer, tmp);
> -			else
> -				strcat(buffer, tmp);
> -			strcat(buffer, ";");
> -			offset += strlen(str) + 1;
> -			if ((length - offset) < (ipv6_len + 1))
> -				goto getaddr_done;
> -
> -		}
> -
> +		error = kvp_process_ip_address(curp->ifa_addr,
> +						curp->ifa_addr->sa_family,
> +						buffer,
> +						length, &offset);
> +		if (error)
> +			goto getaddr_done;
>  
>  		curp = curp->ifa_next;
>  	}

-- 
Ben Hutchings
I say we take off; nuke the site from orbit.  It's the only way to be sure.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  reply	other threads:[~2012-08-14  1:46 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-13 17:06 [PATCH V2 00/18] drivers: hv: kvp K. Y. Srinivasan
2012-08-13 17:06 ` [PATCH V2 01/18] Drivers: hv: vmbus: Use the standard format string to format GUIDs K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 02/18] Drivers: hv: Add KVP definitions for IP address injection K. Y. Srinivasan
2012-08-14  1:38     ` Greg KH
2012-08-14  1:56       ` Ben Hutchings
2012-08-14  2:56       ` KY Srinivasan
2012-08-15 12:39         ` KY Srinivasan
2012-08-13 17:06   ` [PATCH V2 03/18] Drivers: hv: kvp: Cleanup error handling in KVP K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 04/18] Drivers: hv: kvp: Support the new IP injection messages K. Y. Srinivasan
2012-08-16 20:50     ` Greg KH
2012-08-13 17:06   ` [PATCH V2 05/18] Tools: hv: Prepare to expand kvp_get_ip_address() functionality K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 06/18] Tools: hv: Further refactor kvp_get_ip_address() K. Y. Srinivasan
2012-08-14  1:46     ` Ben Hutchings [this message]
2012-08-14  3:01       ` KY Srinivasan
2012-08-13 17:06   ` [PATCH V2 07/18] Tools: hv: Gather address family information K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 08/18] Tools: hv: Gather subnet information K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 09/18] Tools: hv: Represent the ipv6 mask using CIDR notation K. Y. Srinivasan
2012-08-13 17:06   ` [PATCH V2 10/18] Tools: hv: Gather ipv[4,6] gateway information K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 11/18] Tools: hv: Gather DNS information K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 12/18] Tools: hv: Gather DHCP information K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 13/18] Tools: hv: Implement the KVP verb - KVP_OP_SET_IP_INFO K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 14/18] Tools: hv: Rename the function kvp_get_ip_address() K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 15/18] Tools: hv: Implement the KVP verb - KVP_OP_GET_IP_INFO K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 16/18] Tools: hv: Get rid of some unused variables K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 17/18] Tools: hv: Correctly type string variables K. Y. Srinivasan
2012-08-13 17:07   ` [PATCH V2 18/18] Tools: hv: Properly manage open streams K. Y. Srinivasan
2012-08-14  1:57     ` Ben Hutchings
2012-08-14  3:17       ` KY Srinivasan
2012-08-16 20:55 ` [PATCH V2 00/18] drivers: hv: kvp Greg KH
2012-08-16 22:40   ` KY Srinivasan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1344908771.824.156.camel@deadeye.wl.decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=apw@canonical.com \
    --cc=devel@linuxdriverproject.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kys@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=olaf@aepfle.de \
    --cc=virtualization@lists.osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®