Integration of filtering policy and traffic loop analysis#111
Integration of filtering policy and traffic loop analysis#111stepanrodimanov wants to merge 27 commits intotraffic_filteringfrom
Conversation
|
Почему это не делать через merge веток просто и исправления конфликтов? |
|
ну вот надо подтянуть актуальные изменения + изменения от коллег ваших, когда они мои правки поправят, а кажется, что это будет сложнее сделать, т.к. это другие коммиты у вас в ветке |
… into dpdk-integration
KonstantinKondratenko
left a comment
There was a problem hiding this comment.
В целом нормально кажется, но переделка docker мне не нравится
Вопрос -- нужно ли его так сильно переделывать?
А если да, то нгужно аккуратно -- версии указать, зафиксировать tag базового образа
| RUN apt-get update && apt-get install -y \ | ||
| build-essential \ | ||
| cmake \ | ||
| curl \ | ||
| git \ | ||
| wget \ | ||
| meson \ | ||
| ninja-build \ | ||
| libssl-dev \ | ||
| protobuf-compiler \ | ||
| libprotobuf-dev \ | ||
| python3 \ | ||
| python3-pip \ | ||
| libnuma-dev \ | ||
| pkg-config \ | ||
| libcurl4-openssl-dev \ | ||
| libbpf-dev \ | ||
| gcc \ | ||
| g++ \ | ||
| m4 \ | ||
| libpcap-dev \ | ||
| libsqlite3-dev \ | ||
| libstdc++6 \ | ||
| libgcc-s1 \ | ||
| libssl3 \ | ||
| libcurl4 \ | ||
| numactl \ | ||
| sqlite3 \ | ||
| && rm -rf /var/lib/apt/lists/* |
There was a problem hiding this comment.
версии нужно фиксировать
| sqlite3 \ | ||
| && rm -rf /var/lib/apt/lists/* | ||
|
|
||
| RUN pip3 install pyelftools |
There was a problem hiding this comment.
аналогично про версии
- всякие no cache dir и clean нужно делать, если вы выше уже начали ужимать слои через
rm -rf /var/lib/apt/lists/*
| @@ -1,17 +1,54 @@ | |||
| FROM alpine:3.21.3 AS builder | |||
| FROM ubuntu:22.04 | |||
There was a problem hiding this comment.
зачем базовый образ мен6ять, тем более без тега
|
|
||
| ENTRYPOINT ["/usr/local/bin/worker", "/data/test.txt", "sha256"] | ||
| RUN ldconfig | ||
|
|
There was a problem hiding this comment.
наверное стоит какой-то мюльтистейдж прикрутить в перспективе
| rm -f $(TARGET_REAL) $(TARGET_VIRT) | ||
|
|
||
| .PHONY: all clean virt No newline at end of file | ||
| .PHONY: all clean virt |
There was a problem hiding this comment.
new line лучше оставлять
AndrewGavril
left a comment
There was a problem hiding this comment.
По хорошему данный PR должен быть разделен на 3:
- Рефакторинг (укаршательства кода)
- Добавление функций фильтрации относительно имеющихся политик
- Добавление кэша
Ревьюить такое количество кода крайне проблематично.
| #include "../../include/dpdk_filter/constants.h" | ||
| #include "../../include/dpdk_filter/types.h" |
There was a problem hiding this comment.
Относительные пути -- плохая практика, нужно при сборке указать пути до хедеров, чтобы include работал без относительных путей
| #include "../../include/dpdk_filter/constants.h" | ||
| #include "../../include/dpdk_filter/filtr_packets.h" | ||
| #include "../../include/dpdk_filter/net_port.h" | ||
| #include "../../include/dpdk_filter/pars_packets.h" | ||
| #include "../../include/dpdk_filter/constants.h" | ||
| #include "../../include/dpdk_filter/types.h" |
There was a problem hiding this comment.
Аналогично -- убрать относительные пути
| #include "constants.h" | ||
| #include <stdint.h> | ||
| #include <stdbool.h> | ||
| #include <stdint.h> |
There was a problem hiding this comment.
Такие изменения лучше не включать в коммиты, чтобы случайно не получать конфликты с другими изменениями. Данный комментарий исправлять не обязательно, так как с этим кодом работаете только вы
| @@ -1,5 +1,7 @@ | |||
| #include "../../include/dpdk_filter/dns_cache.h" | |||
There was a problem hiding this comment.
Опять относительные пути. Это и далее надо исправить.
| @@ -1,5 +1,7 @@ | |||
| #include "../../include/dpdk_filter/dns_cache.h" | |||
|
|
|||
| static sqlite3 *cache_table; | |||
There was a problem hiding this comment.
Точно ли мы хотим писать на Си, а не на C++?
cache_table потенциально подвержен гонке данных. Лучше бы конечно перейти к C++, сделав класс и защитив примитивами синхронизации такую переменную.
| ret = sqlite3_step(stmt); | ||
| if (ret != SQLITE_DONE) { | ||
| printf("[ERROR] Failed to insert into main_table: %s\n", | ||
| sqlite3_errmsg(cache_table)); | ||
| sqlite3_finalize(stmt); | ||
| return ret; | ||
| } | ||
|
|
||
| ret = sqlite3_finalize(stmt); | ||
| if (ret != SQLITE_OK) { | ||
| printf("[ERROR] Failed to delete prepared statement: %s\n", | ||
| sqlite3_errmsg(cache_table)); | ||
| return ret; | ||
| } |
There was a problem hiding this comment.
Этот код множество раз повторяется для разных полей. Можно вынести в отдельную функцию или переделать в цикл.
|
|
||
| ret = sqlite3_exec(cache_table, "COMMIT;", NULL, NULL, NULL); | ||
| if (ret != SQLITE_OK) { | ||
| printf("[ERROR] Failed to exec COMMIT: %s\n", sqlite3_errmsg(cache_table)); |
There was a problem hiding this comment.
Тут и в остальных местах для вывода разных подписей в начале строки нужно выделить макросы логов, подробнее тут: https://www.valvers.com/open-software/logging-with-gcc/
Можно сделать готовые макросы LOG_ERR, LOG_INFO, LOG_DEBUG, чтобы исключить из строк часть [ERROR], а так же добавить унифицированный формат -- временную метку, вывод функции, где производится лог и т.д.
No description provided.