Вобщем iptables-restore вылетает тут:
Код |
---|
iptables-1.2.11/libiptc/libiptc.c:
int
TC_COMMIT(TC_HANDLE_T *handle)
{
...
if (setsockopt(sockfd, TC_IPPROTO, SO_SET_REPLACE, repl,
sizeof(*repl) + (*handle)->entries.size) < 0) {
free(repl-&g t;counters);
free(repl);
free(newcoun ters);
return 0;
}
...
|
setsockopt() в Netfilter дает EAGAIN здесь:
Код |
---|
/usr/src/linux/net/ipv4/netfilter/ip_tables.c:
static struct ipt_table_info *
replace_table(struct ipt_table *table,
unsigned int num_counters,
struct ipt_table_info *newinfo,
int *error)
{
...
/* Do the substitution. */
write_lock_bh(&table->lock);
/* Check inside lock: is the old number correct? */
if (num_counters != table->private->number) {
duprintf("num_counters != table->private->number (%u/%u)\n",
num_counters, table->private->number);
write_unlock_bh(&table->lock);
*error = -EAGAIN;
return NULL;
}
...
} |
В чем проблема пока неясно, но по сути EAGAIN это некритическая ошибка, требующая повторного обращения к вызванной функции, iptables должен попытаться повторить setsockopt(), получив EAGAIN. Нужно отмылить о баге девелоперам в coreteam@netfilter.org, авось что умное скажут или сплоит на багу, err ну т.е. патчик
, пришлют.