История изменений
Исправление ae1234, (текущая версия) :
iptables-1.8.7/iptables/nft-shared.c
void add_addr(struct nftnl_rule *r, enum nft_payload_bases base, int offset,
void *data, void *mask, size_t len, uint32_t op)
{
const unsigned char *m = mask;
bool bitwise = false;
int i;
for (i = 0; i < len; i++) {
if (m[i] != 0xff) {
bitwise = m[i] != 0;
break;
}
}
if (!bitwise)
len = i;
add_payload(r, offset, len, base);
if (bitwise)
add_bitwise(r, mask, len);
add_cmp_ptr(r, op, data, len);
}
bitwise = m != 0; вот тут ошибка
она сканирует маску пока не встретиться не FF - но во флаг записывает true только если НЕ 0 - а у меня как раз 0
замена этого на
bitwise = true;
нормализует работу
Исправление ae1234, :
iptables-1.8.7/iptables/nft-shared.c
void add_addr(struct nftnl_rule *r, enum nft_payload_bases base, int offset,
void *data, void *mask, size_t len, uint32_t op)
{
const unsigned char *m = mask;
bool bitwise = false;
int i;
for (i = 0; i < len; i++) {
if (m[i] != 0xff) {
bitwise = m[i] != 0;
break;
}
}
if (!bitwise)
len = i+1;
add_payload(r, offset, len, base);
if (bitwise)
add_bitwise(r, mask, len);
add_cmp_ptr(r, op, data, len);
}
bitwise = m != 0; вот тут ошибка
она сканирует маску пока не встретиться не FF - но во флаг записывает true только если НЕ 0 - а у меня как раз 0
замена этого на
bitwise = true;
нормализует работу
Исходная версия ae1234, :
iptables-1.8.7/iptables/nft-shared.c
void add_addr(struct nftnl_rule *r, enum nft_payload_bases base, int offset,
void *data, void *mask, size_t len, uint32_t op)
{
const unsigned char *m = mask;
bool bitwise = false;
int i;
for (i = 0; i < len; i++) {
if (m[i] != 0xff) {
bitwise = m[i] != 0;
break;
}
}
if (!bitwise)
len = i+1;
add_payload(r, offset, len, base);
if (bitwise)
add_bitwise(r, mask, len);
add_cmp_ptr(r, op, data, len);
}
bitwise = m != 0; вот тут ошибка