[stgt] [PATCH 4/5] Call user defined callback progam from target_redirected()

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Sat Sep 18 10:42:45 CEST 2010


On Fri, 17 Sep 2010 18:02:05 -0700
Chandra Seetharaman <sekharan at us.ibm.com> wrote:

> Implement the calling of user defined callback.
> 
> Basically, the callback is called from target_redirected() to get 
> redirect address, redirect port and redirect reason in 
> "string_addr:string_port:string_reason" syntax.
> 
> Signed-Off-By: Chandra Seetharaman <sekharan at us.ibm.com>
> ---
>  usr/iscsi/target.c |   32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> Index: tgt-1.0.8/usr/iscsi/target.c
> ===================================================================
> --- tgt-1.0.8.orig/usr/iscsi/target.c
> +++ tgt-1.0.8/usr/iscsi/target.c
> @@ -197,7 +197,38 @@ int target_redirected(struct iscsi_targe
>  	socklen_t len;
>  	int ret, rsn;
>  	char *p, *q, *str, *port, *addr;
> +	char buffer[NI_MAXHOST + NI_MAXSERV + 4];
>  
> +	if (target->redirect_info.callback) {
> +		bzero(buffer, NI_MAXHOST + NI_MAXSERV + 4);
> +		ret = call_program(target->redirect_info.callback,
> +			NULL, NULL, buffer, NI_MAXHOST + NI_MAXSERV + 4, 0);
> +		if (ret)
> +			goto predefined;
> +
> +		/* syntax is string_addr:string_port:string_reason */
> +		addr = p = buffer;
> +		while (*p != ':' && *p != '\0')
> +			p++;
> +		if (!*p)
> +			goto predefined;
> +		*p = '\0';
> +		port = ++p;
> +		while (*p != ':' && *p != '\0')
> +			p++;
> +		if (!*p)
> +			goto predefined;
> +		*p = '\0';

Can this handle an ipv6 address like [2001:2c0:418:1::2]:3260?
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list