Lines Matching defs:ai

196 static void *serialize_addrinfo(void *p, const struct addrinfo *ai, size_t *length, size_t maxlength) {
201 assert(ai);
205 cnl = ai->ai_canonname ? strlen(ai->ai_canonname)+1 : 0;
206 l = sizeof(AddrInfoSerialization) + ai->ai_addrlen + cnl;
211 s.ai_flags = ai->ai_flags;
212 s.ai_family = ai->ai_family;
213 s.ai_socktype = ai->ai_socktype;
214 s.ai_protocol = ai->ai_protocol;
215 s.ai_addrlen = ai->ai_addrlen;
219 memcpy((uint8_t*) p + sizeof(AddrInfoSerialization), ai->ai_addr, ai->ai_addrlen);
221 if (ai->ai_canonname)
222 memcpy((char*) p + sizeof(AddrInfoSerialization) + ai->ai_addrlen, ai->ai_canonname, cnl);
232 struct addrinfo *ai,
254 if (ret == 0 && ai) {
258 for (k = ai; k; k = k->ai_next) {
261 freeaddrinfo(ai);
267 if (ai)
268 freeaddrinfo(ai);
694 struct addrinfo *ai;
710 ai = new0(struct addrinfo, 1);
711 if (!ai)
714 ai->ai_flags = s.ai_flags;
715 ai->ai_family = s.ai_family;
716 ai->ai_socktype = s.ai_socktype;
717 ai->ai_protocol = s.ai_protocol;
718 ai->ai_addrlen = s.ai_addrlen;
721 ai->ai_addr = memdup((const uint8_t*) *p + sizeof(AddrInfoSerialization), s.ai_addrlen);
722 if (!ai->ai_addr) {
723 free(ai);
729 ai->ai_canonname = memdup((const uint8_t*) *p + sizeof(AddrInfoSerialization) + s.ai_addrlen, s.canonname_len);
730 if (!ai->ai_canonname) {
731 free(ai->ai_addr);
732 free(ai);
738 *ret_ai = ai;
787 struct addrinfo *ai = NULL;
789 r = unserialize_addrinfo(&p, &l, &ai);
800 prev->ai_next = ai;
802 q->addrinfo = ai;
804 prev = ai;
1086 static void resolve_freeaddrinfo(struct addrinfo *ai) {
1087 while (ai) {
1088 struct addrinfo *next = ai->ai_next;
1090 free(ai->ai_addr);
1091 free(ai->ai_canonname);
1092 free(ai);
1093 ai = next;