Home | History | Annotate | Download | only in net

Lines Matching refs:ai

317 #define GET_AI(ai, afd, addr)					\
320 (ai) = get_ai(pai, (afd), (addr)); \
321 if ((ai) == NULL) { \
327 #define GET_PORT(ai, serv, svd) \
330 error = get_port((ai), (serv), 0, (svd)); \
335 #define GET_CANONNAME(ai, str) \
338 error = get_canonname(pai, (ai), (str)); \
366 freeaddrinfo(struct addrinfo *ai)
370 _DIAGASSERT(ai != NULL);
373 next = ai->ai_next;
374 if (ai->ai_canonname)
375 free(ai->ai_canonname);
376 /* no need to free(ai->ai_addr) */
377 free(ai);
378 ai = next;
379 } while (ai);
417 getport(struct addrinfo *ai) {
420 switch (ai->ai_family) {
422 return &((struct sockaddr_in *)(void *)ai->ai_addr)->sin_port;
425 return &((struct sockaddr_in6 *)(void *)ai->ai_addr)->sin6_port;
460 struct addrinfo ai;
476 memset(&ai, 0, sizeof(ai));
477 pai = &ai;
704 struct addrinfo *ai, **aip;
710 for (n = 0, ai = sentinel->ai_next; ai != NULL; ai = ai->ai_next, n++)
731 for (i = 0, ai = sentinel->ai_next; i < n; ai = ai->ai_next, i++) {
732 aio[i].aio_ai = ai;
733 aio[i].aio_dstscope = gai_addr2scopetype(ai->ai_addr);
734 aio[i].aio_dstpolicy = match_addrselectpolicy(ai->ai_addr,
879 struct addrinfo ai = *aio->aio_ai;
888 switch(ai.ai_family) {
899 ai.ai_socktype = SOCK_DGRAM;
900 ai.ai_protocol = IPPROTO_UDP; /* is UDP too specific? */
901 ai.ai_next = NULL;
903 memcpy(&ss, ai.ai_addr, ai.ai_addrlen);
904 ai.ai_addr = (void *)&ss;
905 get_port(&ai, "1", 0, svd);
908 if ((s = socket(ai.ai_family, ai.ai_socktype | SOCK_CLOEXEC,
909 ai.ai_protocol)) < 0)
911 if (connect(s, ai.ai_addr, ai.ai_addrlen) < 0)
913 srclen = ai.ai_addrlen;
922 if (ai.ai_family == AF_INET6) {
927 memcpy(&ifr6.ifr_addr, ai.ai_addr, ai.ai_addrlen);
1458 get_canonname(const struct addrinfo *pai, struct addrinfo *ai, const char *str)
1462 _DIAGASSERT(ai != NULL);
1466 ai->ai_canonname = strdup(str);
1467 if (ai->ai_canonname == NULL)
1476 struct addrinfo *ai;
1478 ai = calloc(sizeof(struct addrinfo) + addrlen, 1);
1479 if (ai) {
1480 ai->ai_addr = (void *)(ai+1);
1481 ai->ai_addrlen = ai->ai_addr->sa_len = addrlen;
1484 return ai;
1491 struct addrinfo *ai;
1498 ai = allocaddrinfo((socklen_t)afd->a_socklen);
1499 if (ai == NULL)
1502 save = ai->ai_addr;
1503 memcpy(ai, pai, sizeof(struct addrinfo));
1505 /* since we just overwrote all of ai, we have
1507 ai->ai_addr = save;
1508 ai->ai_addrlen = (socklen_t)afd->a_socklen;
1510 ai->ai_addr->sa_family = ai->ai_family = afd->a_af;
1511 p = (char *)(void *)(ai->ai_addr);
1513 return ai;
1517 get_portmatch(const struct addrinfo *ai, const char *servname,
1521 _DIAGASSERT(ai != NULL);
1524 return get_port(ai, servname, 1, svd);
1528 get_port(const struct addrinfo *ai, const char *servname, int matchonly,
1536 _DIAGASSERT(ai != NULL);
1541 switch (ai->ai_family) {
1551 switch (ai->ai_socktype) {
1579 if (ai->ai_flags & AI_NUMERICSERV)
1582 switch (ai->ai_socktype) {
1601 *getport(__UNCONST(ai)) = port;
1706 struct addrinfo ai, *aip;
1869 ai = *pai;
1870 ai.ai_family = (type == T_A) ? AF_INET : AF_INET6;
1871 afd = find_afd(ai.ai_family);
1876 cur->ai_next = get_ai(&ai, afd, (const char *)cp);
2033 struct addrinfo sentinel, *cur, *ai;
2071 ai = getanswer(res, buf, q->n, q->name, q->qtype, pai);
2072 if (ai) {
2073 cur->ai_next = ai;
2078 ai = getanswer(res, buf2, q2->n, q2->name, q2->qtype, pai);
2079 if (ai)
2080 cur->ai_next = ai;
2099 struct addrinfo sentinel, *cur, *ai;
2150 ai = _dns_query(&q, pai, res, 1);
2151 if (ai) {
2152 cur->ai_next = ai;
2172 struct addrinfo sentinel, *ai;
2209 ai = _dns_query(&q, pai, res, 1);
2212 sentinel.ai_next = ai;
2214 if (ai != NULL && res->nsort)
2226 struct addrinfo *ai = NULL;
2247 ai = _dns_srv_lookup(name, servname, pai);
2253 if (ai == NULL) {
2258 ai = _dns_host_lookup(name, pai);
2260 if (ai == NULL) {
2274 *((struct addrinfo **)rv) = ai;
2481 struct addrinfo *ai = NULL;
2506 ai = _yphostent(ypbuf, &ai4);
2507 if (ai) {
2508 cur->ai_next = ai;
2520 ai = _yphostent(ypbuf, pai);
2521 if (ai)
2522 cur->ai_next = ai;
2861 struct addrinfo *ai, *sai;
2868 for (ai = sai; ai; ai = ai->ai_next) {
2869 sockaddr_snprintf(buf, sizeof(buf), "%a", ai->ai_addr);
2872 ai->ai_flags,
2873 ai->ai_family,
2874 ai->ai_socktype,
2875 ai->ai_protocol,
2876 (size_t)ai->ai_addrlen,
2878 ai->ai_canonname,
2879 ai->ai_next);