Anton wrote: > Pablo, > > Just a little more thought, this happened when my > application attempted to create a NEW queue, while in > kernel packet queue overrun situation. And after calling > the nfq_create_queue there was no return from it, and only > error message generation in the loop inside the > libnetfilter_queue library. Looks like not a very proper > behaviour. Am I missing something? Oh I see, I did not get the point initially. Does this patch fix the problem? -- "Los honestos son inadaptados sociales" -- Les Luthiers
diff --git a/src/libnetfilter_queue.c b/src/libnetfilter_queue.c index 9e4903b..ec17595 100644 --- a/src/libnetfilter_queue.c +++ b/src/libnetfilter_queue.c @@ -141,7 +141,7 @@ __build_send_cfg_msg(struct nfq_handle *h, u_int8_t command, cmd.pf = htons(pf); nfnl_addattr_l(&u.nmh, sizeof(u), NFQA_CFG_CMD, &cmd, sizeof(cmd)); - return nfnl_talk(h->nfnlh, &u.nmh, 0, 0, NULL, NULL, NULL); + return nfnl_query(h->nfnlh, &u.nmh); } static int __nfq_rcv_pkt(struct nlmsghdr *nlh, struct nfattr *nfa[], @@ -553,7 +553,7 @@ int nfq_set_mode(struct nfq_q_handle *qh, nfnl_addattr_l(&u.nmh, sizeof(u), NFQA_CFG_PARAMS, ¶ms, sizeof(params)); - return nfnl_talk(qh->h->nfnlh, &u.nmh, 0, 0, NULL, NULL, NULL); + return nfnl_query(qh->h->nfnlh, &u.nmh); } /** @@ -581,7 +581,7 @@ int nfq_set_queue_maxlen(struct nfq_q_handle *qh, nfnl_addattr_l(&u.nmh, sizeof(u), NFQA_CFG_QUEUE_MAXLEN, &queue_maxlen, sizeof(queue_maxlen)); - return nfnl_talk(qh->h->nfnlh, &u.nmh, 0, 0, NULL, NULL, NULL); + return nfnl_query(qh->h->nfnlh, &u.nmh); } /**