Sous-routine pcap_dispatch
Objectif
Collecte et traite les paquets.
Bibliothèque
Bibliothèque pcap (libpcap.a)
Syntaxe
Descriptif
La sous-routine pcap_dispatch lit et traite les paquets. Cette sous-routine peut être appelée pour lire et traiter les paquets qui sont stockés dans un fichier de données de capture de paquets précédemment sauvegardé, appelé fichier de sauvegarde. La sous-routine peut également lire et traiter les paquets en cours de capture.
Notez que le troisième paramètre, callback, est de type pcap_handler. Il s'agit d'un pointeur vers une sous-routine fournie par l'utilisateur avec trois paramètres. Définissez cette sous-routine fournie par l'utilisateur comme suit:
void user_routine(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata)Le paramètre userest le paramètre user qui est transmis à la sous-routine pcap_dispatch . Le paramètre phdrest un pointeur vers la structure pcap_pkthdr qui précède chaque paquet dans le fichier de sauvegarde. Le paramètre, pdata, pointe vers les données de paquet. Cela permet aux utilisateurs de définir leur propre traitement des données de capture de paquets.
Paramètres
| Article | Descriptif |
|---|---|
| callback | Pointe vers une routine fournie par l'utilisateur qui sera appelée pour chaque lecture de paquet. L'utilisateur est chargé de fournir un pointeur valide et des résultats imprévisibles peuvent se produire si un pointeur non valide est fourni. Remarque: La sous-routine pcap_dump peut également être spécifiée en tant que paramètre callback . Dans ce cas, la sous-routine pcap_dump_open doit être appelée en premier. Le pointeur vers la structure pcap_dumper_t renvoyée par la sous-routine pcap_dump_open doit être utilisé comme paramètre user de la sous-routine pcap_dispatch . Le fragment de programme suivant illustre cette utilisation:
|
| Nbre | Indique le nombre maximal de paquets à traiter avant le renvoi. Un cnt de -1 traite tous les paquets reçus dans un tampon. Une valeur cnt de 0 traite tous les paquets jusqu'à ce qu'une erreur se produise, qu'une fin de fichier soit atteinte ou que le délai d'attente de lecture soit dépassé (lorsque des lectures en temps réel sont effectuées et qu'un délai d'attente de lecture différent de zéro est spécifié). |
| p | Pointe vers un descripteur de capture de paquet renvoyé par la sous-routine pcap_open_offline ou pcap_open_live . Il sera utilisé pour stocker les données de paquet qui sont lues. |
| USER | Indique le premier argument à transmettre à la routine callback . |
Valeurs renvoyées
Une fois l'opération terminée, la sous-routine pcap_dispatch renvoie le nombre de paquets lus. Si EOF est atteint dans un fichier de sauvegarde, zéro est renvoyé. Si la sous-routine pcap_dispatch échoue, -1 est renvoyé. Dans ce cas, la sous-routine pcap_geterr ou pcap_perror peut être utilisée pour obtenir le texte de l'erreur.