Bug 57898 - Не показывает бридж,ели не указать явно имя
Summary: Не показывает бридж,ели не указать явно имя
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: ip-brctl (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-02-18 00:07 MSK by stalker
Modified: 2026-03-18 13:44 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description stalker 2026-02-18 00:07:41 MSK
rpm -qf /usr/sbin/brctl
ip-brctl-0.1-alt1.noarch

[root@alt11 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces

brctl show br150
bridge name     bridge id               STP enabled     interfaces
br150           8000.0e0ed42ea50        no              vlan150@enp7s0f0


Всё дело в строке 481
for line in $(${IP} -br link show type bridge "${dev}" 2>/dev/null); do

быстрохак

- for line in $(${IP} -br link show type bridge "${dev}" 2>/dev/null); do
+ for line in $(${IP} -br link show type bridge ${dev} 2>/dev/null); do

Но это именно хак на скорую руку...
Comment 1 Evgeny Shesteperov 2026-02-23 11:12:34 MSK
Не показывает бридж,ели не указать явно имя

Версия

    ip-brctl-0.1-alt1

Дистрибутивы

- ALT Server 11.0 (Sisyphus)

Шаги Воспроизведения

1.  Установить пакет:

        # apt-get install -y ip-brctl

2.  Создать сетевой мост:

        # ip link add name br150 type bridge && \
        ip link add veth0 type veth peer name veth1 && \
        ip link set veth1 master br150 && \
        ip link set br150 up

3.  Выполнить показ всех мостов:

        # brctl show

Ожидаемый результат: Показан только что настроенный мост:

    bridge name bridge id       STP enabled interfaces
    br150       8000.9e92f658947c   no      veth1@veth0

Так указано в help:

        show        [ <bridge> ]        show a list of bridges

Фактический результат: Ничего не показывает:

    bridge name bridge id       STP enabled interfaces

Воспроизводится в P11.

Дополнительно

Проблема находится в строке 479 файла /usr/sbin/brctl в функции
cmd_show:

    for line in $(${IP} -br link show type bridge "${dev}" 2>/dev/null); do

Когда dev пуст (вызов brctl show без аргументов), команда выполняется
как:

    ip -br link show type bridge ""

Что приводит к ошибке:

    Device "" does not exist.

При этом команда без пустого аргумента работает корректно:

    ip -br link show type bridge    # работает
    ip -br link show type bridge "" # ошибка exit code 1

Предполагаемое исправление

Необходимо условно передавать аргумент, только если он задан:

    if [ -n "${dev}" ]; then
        for line in $(${IP} -br link show type bridge "${dev}" 2>/dev/null); do
    else
        for line in $(${IP} -br link show type bridge 2>/dev/null); do
    fi

Ну или менять документацию и проверять условием выше:

    if [ -z "${dev}" ]; then
        err_dev_exists n "${dev}" "bridge ${dev} does not exist!"
        err_dev_exists n "${dev}" "device ${dev} is not a bridge!" bridge
    fi
Comment 2 stalker 2026-02-23 13:53:31 MSK
Именно в таком ключ не получится -  внутри if ломается цикл  for line in $(${IP}....


Только если блок целиком переносить внутрь if. Но это как-то не красиво
Comment 3 Sergey Vlasov 2026-02-24 08:40:55 MSK
Можно написать ${dev:+"${dev}"}, чтобы сохранить кавычки на случай наличия внутри параметра пробелов, но убрать аргумент, если значение ${dev} пустое.
Comment 4 Repository Robot 2026-02-25 14:44:20 MSK
ip-brctl-0.2-alt1 -> sisyphus:

Wed Feb 25 2026 Alexey Shabalin <shaba@altlinux> 0.2-alt1
- Fix brctl show with no bridge (ALT#57898).
Comment 5 stalker 2026-03-18 10:34:31 MSK
Отправить бы версию с исправлением и в P11
Comment 6 Alexey Shabalin 2026-03-18 13:44:31 MSK
#411791