qosd: добавлены базовые дисциплины Complex QoS ESR

А именно:

+ [B|P]FIFO;
+ HTB;
+ RED;
+ WRED (a.k.a. `gred` в Linux/TC и нашем CLI);
+ SFQ.

Два замечания:

1. Вместо GRED и RED теперь WRED и RED: RED — как был, так и есть, а
   WRED — специальный узел, который несёт глобальные настройки GRED, но
   параметры RED на VQ задаются через подключение дочерних узлов RED.
2. Параметры RED для SFQ также были оптимизированы: в узле SFQ их не
   будет, но зато к SFQ можно подключить один дочерний узел. Если
   подключить туда RED, то настройки RED будут применяться для per-flow
   RED дисциплины SFQ.
This commit is contained in:
Сергей Маринкевич
2025-09-02 19:56:58 +07:00
parent 4846a7fa53
commit ffa45f060a
19 changed files with 481 additions and 138 deletions
+12
View File
@@ -0,0 +1,12 @@
#pragma once
#include "links/TypedLink.h"
#include "links/OneToManyLink.h"
#include <type_traits>
#include <typeinfo>
/// \brief Связь "один-ко-многим" между элементами одного типа.
/// Каждый дочерний элемент должен быть того же типа, что и родитель.
/// \tparam TElem Тип элемента.
/// \tparam TExpected Опциональный ожидаемый конкретный тип детей.
template <class TElem, class TExpected = void>
using TypedOneToManyLink = TypedLink<TElem, OneToManyLink<TElem>, TExpected>;