Я пишу простой преобразователь сетевых пакетов на C++, который меняет только значение TTL (на данный момент). Основной цикл получает запросы из очереди netfilter с помощью Recv(fd, buf, sizeof(buf), 0), а затем обрабатывает эти запросы с помощью nfq_handle_packet(h, buf, rv). Размер буфера составляет 500000000 байт, что составляет около 500 мегабайт или 4000 мегабит. Скорость интернета далеко не близка к 4 гигабитам (и даже если бы она была 4 гигабита, я не передаю столько данных), но функция Recv продолжает получать ENOBUFS («Нет буфера доступное пространство» при форматировании с помощью strerror), когда я, например, запускаю тест скорости на сайтеspeed.cloudflare.com. Я не понимаю, как мне здесь не хватает буферного пространства. Код, который получает запросы:
// created before in the code: char buf[500000000] = {0};
fd = nfq_fd(h);
while (true) {
rv = recv(fd, buf, sizeof(buf), 0);
if (rv < 0) {
std::cout packetsRejected += 1;
return result;
}
uint8_t ipVersion = (packetData[0] & 0b11110000) >> 4;
if (ipVersion == 4) {
uint8_t headerLength = packetData[0] & 0b1111;
if (headerLength < 5 || headerLength > 15) {
int result = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
data->packetsRejected += 1;
data->bytesRejected += length;
return result;
}
headerLength *= 4;
packetData[8] = 64;
fixIPv4Checksum(packetData, headerLength);
}
int result = nfq_set_verdict(qh, id, NF_ACCEPT, length, packetData);
data->packetsAccepted += 1;
data->bytesAccepted += length;
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... hen-my-buf
Почему я продолжаю получать ошибки ENOBUFS в моей программе nfqueue, даже если мой буфер достаточно велик? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я не вижу UDP-пакеты в очереди NFQUEUE в Ubuntu, хотя правила iptables настроены правильно.
Anonymous » » в форуме Linux - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему printf () в моей программе SDL не печатает в окне вывода моей IDE?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-