Exemple #1
0
int parse_LSAs_file(char *filename){
	FILE *f;
	f = fopen(filename, "r");
	if(!f){
		return -1;
	}
	char buffer[MAX_BUFFER];
	char sender[MAX_BUFFER];
	int seq_num;
	char neighbors[MAX_BUFFER];
	while(fgets(buffer, MAX_BUFFER, f)){
		sscanf(buffer, "%s %d %s", sender, &seq_num, neighbors);
		// printf("%s, %d, %s\n", sender, seq_num, neighbors);
		struct node* node_p = add_node(sender, &nodes);
		if(exist_in_list(servers, node_p)<0){
			if(strncmp(node_p->name, "router", strlen("router"))!=0 || strlen(node_p->name)<strlen("router")){
				add_node_list(&clients, node_p);
			}
		}
		if(node_p->seq_num<seq_num){
			node_p->seq_num = seq_num;
			free(node_p->neighbors);
			node_p->neighbors = NULL;
			char* neighbor = strtok(neighbors, ",");
			while(neighbor){
				struct node* p_neighbor = add_node(neighbor, &nodes);
				add_node_list(&(node_p->neighbors), p_neighbor);
				neighbor = strtok(NULL, ",");
			}
		}
	}
	fclose(f);
	return 1;
}
Exemple #2
0
// return -1 if error encountered
int parse_server_file(char* filename){
	FILE *f;
	f = fopen(filename, "r");
	if(!f){
		return -1;
	}
	char buffer[MAX_BUFFER];
	while(fgets(buffer, MAX_BUFFER, f)){
		buffer[strlen(buffer)-1] = '\0';
		struct node* p_node = add_node(buffer, &nodes);
		add_node_list(&servers, p_node);
	}
	fclose(f);
	return 1;
}
void init_node_list(u_int n, node_address *names, node_list *nodes)
{
  nodes->node_list_len = 0;
  nodes->node_list_val = 0;
  add_node_list(n, names, nodes);
}