Por que é o terceiro parâmetro para pcap_next_ex um tipo ponteiro incompatível?

StackOverflow https://stackoverflow.com/questions/430678

  •  08-07-2019
  •  | 
  •  

Pergunta

Disclaimer:. Isto é para uma lição de casa, mas a questão não é sobre a atribuição, apenas sobre estranheza geral sintaxe

Eu estou tentando usar libpcap no contexto de um programa muito maior, mas quando eu tentar obter o cabeçalho do pacote e os dados para cada gcc pacote reclama que o terceiro parâmetro para pcap_next_ex é de um tipo ponteiro incompatível. Aqui está um código de exemplo para ver o que eu estou falando:

#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>

int main()
{
    pcap_t *pcap;
    char pcapErr[PCAP_ERRBUF_SIZE];
    struct pcap_pkthdr *pktHeader;
    u_char *pktData;

    pcap = pcap_open_offline("somefile.pcap", pcapErr);
    if (pcap == NULL)
    {
        fprintf(stderr, "pcap_open_offline failed: %s\n", pcapErr);
        exit(EXIT_FAILURE);
    }

    while (pcap_next_ex(pcap, &pktHeader, &pktData) == 1)
    {
        // do things here
    }

    pcap_close(pcap);

    return EXIT_SUCCESS;
}

As páginas de homem indicou que o protótipo para pcap_next_ex () é:

int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header, const u_char **pkt_data)

Como exatamente é o que eu estou passando um tipo ponteiro incompatível? Obrigado.

Foi útil?

Solução

Alterar a declaração de pktData para ler:

const u_char *pktData;

e gcc deve parar de reclamar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top