Lines Matching refs:ai

213 #define GET_AI(ai, afd, addr) \
216 (ai) = get_ai(pai, (afd), (addr)); \
217 if ((ai) == NULL) { \
223 #define GET_PORT(ai, serv) \
226 error = get_port((ai), (serv), 0); \
231 #define GET_CANONNAME(ai, str) \
234 error = get_canonname(pai, (ai), (str)); \
261 freeaddrinfo(ai)
262 struct addrinfo *ai;
267 next = ai->ai_next;
268 if (ai->ai_canonname)
269 free(ai->ai_canonname);
270 /* no need to free(ai->ai_addr) */
271 free(ai);
272 } while ((ai = next) != NULL);
297 struct addrinfo ai;
317 pai = &ai;
643 * fail, return ai anyway to pacify
803 * fail, return ai anyway to pacify
974 get_canonname(pai, ai, str)
976 struct addrinfo *ai;
980 ai->ai_canonname = (char *)malloc(strlen(str) + 1);
981 if (ai->ai_canonname == NULL)
983 strcpy(ai->ai_canonname, str);
995 struct addrinfo *ai;
997 ai = (struct addrinfo *)malloc(sizeof(struct addrinfo)
999 if (ai == NULL)
1002 memcpy(ai, pai, sizeof(struct addrinfo));
1003 ai->ai_addr = (struct sockaddr *)(ai + 1);
1004 memset(ai->ai_addr, 0, afd->a_socklen);
1006 ai->ai_addr->sa_len = afd->a_socklen;
1008 ai->ai_addrlen = afd->a_socklen;
1009 ai->ai_addr->sa_family = ai->ai_family = afd->a_af;
1010 p = (char *)(ai->ai_addr);
1012 return ai;
1016 get_portmatch(ai, servname)
1017 const struct addrinfo *ai;
1022 return get_port((struct addrinfo *)ai, servname, 1);
1026 get_port(ai, servname, matchonly)
1027 struct addrinfo *ai;
1038 switch (ai->ai_family) {
1048 switch (ai->ai_socktype) {
1069 switch (ai->ai_socktype) {
1087 switch (ai->ai_family) {
1089 ((struct sockaddr_in *)ai->ai_addr)->sin_port = port;
1093 ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = port;