Пример #1
0
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);
}
Пример #2
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;
}
Пример #3
0
/*
 * 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;
}
Пример #4
0
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;
}