Exemplo n.º 1
0
int probe_request(void *recvbuf, int sockfd, struct sockaddr_in recv_addr){
	int *getIndex;
	int i;
	struct probe_d2s_reply probe_reply;
	struct group **groupTable;
	char app_name[D2MCE_APP_NAME_LEN+1] = {0};
	char group_name[D2MCE_GROUP_NAME_LEN+1] = {0};
	
	groupTable = (struct group**)getTable(g_GroupTable);
	memcpy(app_name, recvbuf + sizeof(struct probe_s2d_req), ((struct probe_s2d_req*)recvbuf)->app_len);
	memcpy(group_name, recvbuf + sizeof(struct probe_s2d_req) + ((struct probe_s2d_req*)recvbuf)->app_len , ((struct probe_s2d_req*)recvbuf)->group_len);

	getIndex = find_groups(app_name, group_name, &((struct probe_s2d_req*)recvbuf)->group_num);

	for(i=0; i<((struct probe_s2d_req*)recvbuf)->group_num ; i++){
		probe_reply.msg_type = MSG_PROBE_REPLY;
		strncpy(probe_reply.app_name, groupTable[getIndex[i]]->app_name, D2MCE_APP_NAME_LEN);
//		memcpy(probe_reply.app_name, groupTable[getIndex[i]]->app_name, strlen(groupTable[getIndex[i]]->app_name));
		strncpy(probe_reply.group_name, groupTable[getIndex[i]]->group_name, D2MCE_GROUP_NAME_LEN);
//		memcpy(probe_reply.group_name, groupTable[getIndex[i]]->group_name, strlen(groupTable[getIndex[i]]->group_name));
		probe_reply.group_instance = groupTable[getIndex[i]]->group_instance;
		probe_reply.ip = groupTable[getIndex[i]]->ip;
		probe_reply.port = groupTable[getIndex[i]]->port;
		probe_reply.id = groupTable[getIndex[i]]->id;
		sendto(sockfd, (void*) &probe_reply, sizeof(struct probe_d2s_reply), 0, (struct sockaddr*) &recv_addr, sizeof(recv_addr));
	}	
	free(getIndex);
	return 1;
}
Exemplo n.º 2
0
char *user_uid(char *user){
    char *c_grp;
    list *group=find_groups(user);
    struct group *grp;
    while(group){
        c_grp=group->key;
        grp=list_find(groups,c_grp);
        if(grp->uid)
            return grp->uid;
        group=group->next;
    }
    return NULL;
}
Exemplo n.º 3
0
/* 0 if it's not specified. 1 if the user doesn't need a password */
int user_nopassword(char *user){
    char *c_grp;
    list *group=find_groups(user);
    struct group *grp;
    if(!group)
        return 0; //user doesn't exist
    while(group){
        c_grp=group->key;
        grp=list_find(groups,c_grp);
        if(grp->nopassword)
            return 1;
        group=group->next;
    }
    return 0;
}