| 1234567891011121314151617181920212223242526272829303132 |
- #include "gai_hdr.h"
- /*
- * Clone a new addrinfo structure from an existing one.
- */
- /* include ga_clone */
- struct addrinfo *
- ga_clone(struct addrinfo *ai)
- {
- struct addrinfo *new;
- if ( (new = calloc(1, sizeof(struct addrinfo))) == NULL)
- return(NULL);
- new->ai_next = ai->ai_next;
- ai->ai_next = new;
- new->ai_flags = 0; /* make sure AI_CLONE is off */
- new->ai_family = ai->ai_family;
- new->ai_socktype = ai->ai_socktype;
- new->ai_protocol = ai->ai_protocol;
- new->ai_canonname = NULL;
- new->ai_addrlen = ai->ai_addrlen;
- if ( (new->ai_addr = malloc(ai->ai_addrlen)) == NULL)
- return(NULL);
- memcpy(new->ai_addr, ai->ai_addr, ai->ai_addrlen);
- return(new);
- }
- /* end ga_clone */
|