pcap_despacho Subroutine
Propósito
Coleta e processa pacotes.
Biblioteca
Biblioteca pcap (libpcap.a)
Sintaxe
Descrição
O subroutine pcap_despacho lê e processa pacotes. Este subroutine pode ser chamado para ler e processar pacotes que são armazenados em um arquivo de dados de captura de pacotes previamente salvos, conhecido como savefile. A subroutine também pode ler e processar pacotes que estão sendo capturados ao vivo.
Observe que o terceiro parâmetro, callback, é do tipo pcap_handler. Este é um ponteiro para uma subroutinha fornecida pelo usuário com três parâmetros. Defina esta subroutinha fornecida pelo usuário da seguinte forma:
void user_routine(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata)O parâmetro, user, é o parâmetro user que é passado para a subroutine pcap_despacho . O parâmetro, phdr, é um ponteiro para a estrutura pcap_pkthdr que anteceda cada pacote no savefile. O parâmetro, pdata, aponta para os dados do pacote. Isso permite que os usuários definam o seu próprio manuseio de dados de captura de pacotes.
Parâmetros
| Item | Descrição |
|---|---|
| callback | Aponta para uma rotina fornecida pelo usuário que será chamada para cada pacote lido. O usuário é responsável por fornecer um ponteiro válido, e que resultados imprevisíveis podem ocorrer se um ponteiro inválido for fornecido. Nota: A subroutine pcap_dump também pode ser especificada como o parâmetro callback . Se isso for feito, a subroutine pcap_dump_open deve ser chamada primeiro. O ponteiro para a estruturação pcap_dumper_t retornado da subroutine pcap_dump_open deve ser usado como o parâmetro user para a subroutine pcap_despacho . O fragmento do programa a seguir ilustra este uso:
|
| Cnt | Especifica o número máximo de pacotes a processar antes de retornar. Um cnt de -1 processa todos os pacotes recebidos em um buffer. Um cnt de 0 processa todos os pacotes até que ocorra um erro, EOF é atingido, ou o tempo de leitura fora (ao fazer leituras ao vivo e um tempo limite de leitura diferente de zero é especificado). |
| P | Aponta para um descritor de captura de pacotes retornado a partir do pcap_open_offline ou da subroutina pcap_open_live . Isto será usado para armazenar dados de pacotes que são lidos em. |
| Usuário | Especifica o primeiro argumento a passar para a rotina callback . |
Valores De Retorno
Após a conclusão bem-sucedida, a subroutine pcap_despacho retorna o número de pacotes lidos. Se EOF for alcançado em um savefile, zero é retornado. Se a sub-rotina pcap_dispatch não for bem-sucedida, -1 será retornado. Neste caso, o subroutine pcap_geterr ou pcap_perror pode ser usado para obter o texto de erro.