static int populate(struct ifaddrs *ifa, int fd, struct lifreq *lifrp, int nlif, int af, char **bufp) { char *buf = *bufp; size_t slen; while (nlif > 0) { ifa->ifa_next = (nlif > 1) ? ifa + 1 : NULL; (void) strcpy(ifa->ifa_name = buf, lifrp->lifr_name); slen = strlen(lifrp->lifr_name) + 1; buf += (slen + 3) & ~3; if (ioctl(fd, SIOCGLIFFLAGS, lifrp) == -1) ifa->ifa_flags = 0; else ifa->ifa_flags = lifrp->lifr_flags; if (ioctl(fd, SIOCGLIFADDR, lifrp) == -1) ifa->ifa_addr = NULL; else ifa->ifa_addr = addrcpy(&lifrp->lifr_addr, &buf); if (ioctl(fd, SIOCGLIFNETMASK, lifrp) == -1) ifa->ifa_netmask = NULL; else ifa->ifa_netmask = addrcpy(&lifrp->lifr_addr, &buf); if (ifa->ifa_flags & IFF_POINTOPOINT) { if (ioctl(fd, SIOCGLIFDSTADDR, lifrp) == -1) ifa->ifa_dstaddr = NULL; else ifa->ifa_dstaddr = addrcpy(&lifrp->lifr_dstaddr, &buf); } else if (ifa->ifa_flags & IFF_BROADCAST) { if (ioctl(fd, SIOCGLIFBRDADDR, lifrp) == -1) ifa->ifa_broadaddr = NULL; else ifa->ifa_broadaddr = addrcpy(&lifrp->lifr_broadaddr, &buf); } else { ifa->ifa_dstaddr = NULL; } ifa++; nlif--; lifrp++; } *bufp = buf; return (0); }
struct transfer_node *new_download_node(const struct sockaddr_in *addr, const unsigned char *md5) { struct transfer_node *new_node; new_node = (struct transfer_node *)malloc(sizeof(struct transfer_node)); addrcpy(&new_node->addrto, addr); memcpy(new_node->file_info.md5, md5, MD5_DIGEST_LENGTH); return new_node; }
/* * Funzione che crea un nuovo nodo. */ struct peer_node *new_peer_node(const struct sockaddr_in *peer_addr, unsigned long peer_rate, unsigned short port) { struct peer_node *new_node; new_node = (struct peer_node *)malloc(sizeof(struct peer_node)); new_node->flag = 1; new_node->peer_rate = peer_rate; new_node->dw_port = port; addrcpy(&new_node->peer_addr, peer_addr); return new_node; }
struct near_node *create_new_near_node(int socksd, const struct sockaddr_in *addr){ int rc; struct near_node *ret = (struct near_node *)malloc(sizeof(struct near_node)); ret->socksd = socksd; addrcpy(&ret->addr, addr); if ((rc = pthread_mutex_init(&ret->mutex, NULL)) != 0) { fprintf(stderr, "create_new_near_node error - can't initialize lock: %s\n", strerror(rc)); return NULL; } return ret; }