示例#1
0
int main(int argc, char *argv[])
{
    Parameters *params; // user defined parameters
    double ***phi;      // flux array
    FILE *fp = NULL;    // output file

    // Get inputs
    params = set_default_params();
    parse_params("parameters", params);
    read_CLI(argc, argv, params);
    print_params(params);

    // Initial guess of flux
    phi = init_flux(params);

    solve(phi, params);

    printf("keff = %f\n", params->k);

    // Write solution
    if(params->write_flux == TRUE) {
        write_flux(phi, params, fp);
    }

    // Free memory
    free_flux(phi);
    free(params);

    return 0;
}
示例#2
0
int main(int argc, char **argv) {
	if(argc < 2) {
		errno = EINVAL;
		perror("Un fichier pcap doit être passé en argument");
		exit(1);
	}
	
	char errbuf[PCAP_ERRBUF_SIZE];
	pkthdr h;	
	Flux *flu;

	// Ouverture du fichier
	pcap_t *file = pcap_open_offline(argv[1], errbuf);
	
	const u_char *packet = pcap_next(file, &h);
	// Taille des en-têtes
	u_int size_ip, size_tcp;
	// Structures des différents en-têtes
	const sniff_eth *ethernet; /* The ethernet header */
	const sniff_ip *ip; /* The IP header */
	const sniff_tcp *tcp; /* The TCP header */

	// Lecture des packets
	while(packet != NULL) {
		ethernet = (sniff_eth*)(packet);
		// Si on a l'entête IP qui suit
		if(ethernet->type == IP_T) {
			ip = (sniff_ip*)(packet + SIZE_ETHERNET);
			size_ip = IP_HL(ip)*4;
			// Si c'est un protocole TCP
			if(ip->prot == TCP) {
				tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
				size_tcp = TH_OFF(tcp)*4;
				// On récupère les IPs
				u_char *ip_src = calloc(IP_LEN, sizeof(u_char));
				memcpy(ip_src, ip->src, sizeof(ip->src));
				u_char *ip_dst = calloc(IP_LEN, sizeof(u_char));
				memcpy(ip_dst, ip->dst, sizeof(ip->dst));
				// On récupère les ports
				int port_src = htons(tcp->s_port);
				int port_dst = htons(tcp->d_port);
				// On change la taille du packet par la taille des données
				h.len = htons(ip->tot_len) - size_ip - size_tcp;
				
				// on récupère le flux, ou on en creer un s'il n'existe pas
				flu = add_flux(ip_src, ip_dst, port_src, port_dst);
				// Si on a un flux alors on lui ajoute ce packet
				if(flu != NULL) add_packet(flu, &h);
			}
		}
		// On lit le packet suivant
		packet = pcap_next(file, &h);
	}

	// On ecrit les fichiers de flux
	write_flux();
	// On nettoie la mémoire
	clean();
	
	printf("Pour créer le graph représentant l'évolution du débit en fonction du temps sur un flux,\n");
	printf("Choisissez le flux qui correspond à votre téléchargement, notez son numéro et taper dans la console:\n$ ./plot numero_flux\n");

	return 0;
}