> -----Original Message----- > From: Alexey Melnikov [mailto:alexey.melnikov@xxxxxxxxx] > Sent: Thursday, August 06, 2009 7:08 PM > To: Xu, Qiang (FXSGSC) > Cc: cyrus-sasl@xxxxxxxxxxxxxxxxxxxx > Subject: Re: IPv6 Kerberos server address handling in SASL2 > GSSAPI plugin > > Neither. I meant _sasl_ipfromstring() called from sasl_setprop() [in > lib/common.c]. Just had quick look at the func: ======================================================= /* This code might be useful in the future, but it isn't now, so.... */ #if 0 int _sasl_iptostring(const struct sockaddr *addr, socklen_t addrlen, char *out, unsigned outlen) { char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV]; int niflags; if(!addr || !out) return SASL_BADPARAM; niflags = (NI_NUMERICHOST | NI_NUMERICSERV); #ifdef NI_WITHSCOPEID if (addr->sa_family == AF_INET6) niflags |= NI_WITHSCOPEID; #endif if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), niflags) != 0) return SASL_BADPARAM; if(outlen < strlen(hbuf) + strlen(pbuf) + 2) return SASL_BUFOVER; snprintf(out, outlen, "%s;%s", hbuf, pbuf); return SASL_OK; } #endif int _sasl_ipfromstring(const char *addr, struct sockaddr *out, socklen_t outlen) { int i, j; struct addrinfo hints, *ai = NULL; char hbuf[NI_MAXHOST]; /* A NULL out pointer just implies we don't do a copy, just verify it */ if(!addr) return SASL_BADPARAM; /* Parse the address */ for (i = 0; addr[i] != '\0' && addr[i] != ';'; i++) { if (i >= NI_MAXHOST) return SASL_BADPARAM; hbuf[i] = addr[i]; } hbuf[i] = '\0'; if (addr[i] == ';') i++; /* XXX: Do we need this check? */ for (j = i; addr[j] != '\0'; j++) if (!isdigit((int)(addr[j]))) return SASL_BADPARAM; memset(&hints, 0, sizeof(hints)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST; if (getaddrinfo(hbuf, &addr[i], &hints, &ai) != 0) return SASL_BADPARAM; if (out) { if (outlen < (socklen_t)ai->ai_addrlen) { freeaddrinfo(ai); return SASL_BUFOVER; } memcpy(out, ai->ai_addr, ai->ai_addrlen); } freeaddrinfo(ai); return SASL_OK; } ======================================================= So in my eyes, _sasl_ipfromstring is just a wrapper of getaddrinfo(). But I am not sure if this function is involved in locating the Kerberos server with an IPv6 address? Thanks, Xu Qiang