Поскольку я хотел бы сделать несколько тестов с libpcap и небольшой программой на C, я пытаюсь передать структуру из main () в got_packet (). Прочитав учебник по libpcap, я нашел это:
Прототипом для pcap_loop () является
ниже:
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
Последний аргумент полезен в некоторых
приложения, но много раз просто
установить как NULL. Предположим, у нас есть аргументы
наших собственных, которые мы хотим отправить нашим
функция обратного вызова, в дополнение к
аргументы, которые отправляет pcap_loop (). это
где мы это делаем Очевидно, вы должны
приведите тип к указателю u_char, чтобы
результаты делают это там правильно;
как мы увидим позже, pcap использует
некоторых очень интересных средств
Передача информации в виде
указатель u_char.
Таким образом, в соответствии с этим, можно отправить структуру в got_packet (), используя аргумент номер 4 в pcap_loop (). Но после попытки я получаю ошибку.
Вот мой (ошибочный) код:
int main(int argc, char **argv)
{
/* some line of code, not important */
/* def. of the structure: */
typedef struct _configuration Configuration;
struct _configuration {
int id;
char title[255];
};
/* init. of the structure: */
Configuration conf[2] = {
{0, "foo"},
{1, "bar"}};
/* use pcap_loop with got_packet callback: */
pcap_loop(handle, num_packets, got_packet, &conf);
}
void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
/* this line don't work: */
printf("test: %d\n", *args[0]->id);
}
Я получаю такую ошибку после некоторых тестов:
gcc -c got_packet.c -o got_packet.o
got_packet.c: In function ‘got_packet’:
got_packet.c:25: error: invalid type argument of ‘->’
Вы видите, как я могу отредактировать этот код, чтобы передать conf (с массивом конфигурационной структуры) в функцию got_packet ()?
Большое спасибо за любую помощь.
Привет