Pourquoi le troisième paramètre de pcap_next_ex est-il un type de pointeur incompatible?

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

  •  08-07-2019
  •  | 
  •  

Question

Clause de non-responsabilité: il s’agit d’un devoir, mais la question ne concerne pas le devoir, mais la bizarrerie de la syntaxe générale.

J'essaie d'utiliser libpcap dans le contexte d'un programme beaucoup plus volumineux, mais lorsque j'essaie d'obtenir l'en-tête et les données de paquet pour chaque paquet, gcc se plaint que le troisième paramètre de pcap_next_ex est d'un type de pointeur incompatible. Voici un exemple de code pour voir de quoi je parle:

#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;
}

Les pages de manuel indiquent que le prototype de pcap_next_ex () est:

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

Comment est-ce que je passe exactement un type de pointeur incompatible? Merci.

Était-ce utile?

La solution

Modifiez la déclaration de pktData comme suit:

const u_char *pktData;

et gcc devraient cesser de se plaindre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top