Bug 21759

Summary: Смешанные BOOTPROTO не работают.
Product: Sisyphus Reporter: Roman Savochenko <rom_as>
Component: etcnetAssignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: ender, imz, ldv, rider, sem, shaba, vseleznv
Version: unstable   
Hardware: all   
OS: Linux   

Description Roman Savochenko 2009-09-28 15:55:19 MSD
Поставил dhcp-static, а etcnet заявляет мне, что такого нет. Что с ними случилось?
Comment 1 Denis Ovsienko 2009-09-28 17:10:54 MSD
В версии 0.9.10 эта ошибка исправлялась. У вас какая версия?
Comment 2 Roman Savochenko 2009-09-28 17:21:30 MSD
[user@plc-182207 ~]$ rpm -qa | grep etcnet
etcnet-defaults-desktop-0.9.10-alt1
etcnet-0.9.10-alt1
Comment 3 Denis Ovsienko 2009-09-28 18:31:20 MSD
Тогда мне нужен точный способ воспроизвести это.
Comment 4 Roman Savochenko 2009-09-29 09:41:29 MSD
Какой такой точный способ?
Всё стандартно. Имеем eth0/options:
TYPE=eth
BOOTPROTO=dhcp-static

И eth0/ipv4address:
192.168.1.1/24

Перезапускаю сеть и получаю:
unknown BOOTPROTO 'dhcp-static'
Comment 5 Denis Ovsienko 2009-09-29 11:03:45 MSD
Воспроизводится. Починить могу, а объяснить --- нет.

В блоке case есть следующий вариант с pathname expansion:
dhcp[\ -,]static)

На первый взгляд диапазон состоит из всех символов от пробела до запятой. На практике же до некоторых пор диапазон включал только пробел, минус и запятую.

Так вот у меня (Sisyphus, bash-3.2.48-alt3) из командной строки на значении "dhcp-static" он срабатывает, а из файла /etc/net/scripts/config-ipv4 --- не срабатывает. Списать несрабатывание на то, что по неведомым причинам минус между пробелом и запятой раскрылся в символы от пробела до запятой, нельзя. На значении "dhcp%static" имеющееся выражение тоже не реагирует, если оно используется в config-ipv4.

Если исправить на следующий вариант, то он работает и из командной строки, и из файла config-ipv4:
dhcp[-,\ ]static)
Comment 6 Ivan Zakharyaschev 2009-10-30 21:25:16 MSK
(В ответ на комментарий №5)
> Воспроизводится. Починить могу, а объяснить --- нет.

Влияет локаль, но каков именно принцип, я не знаю:

[imz@etik ~]$ bash -c 'case dhcp-static in dhcp[\ -,]static) echo Matched; ;; esac; locale'
Matched
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
[imz@etik ~]$ LC_ALL=C bash -c 'case dhcp-static in dhcp[\ -,]static) echo Matched; ;; esac; locale'
LANG=ru_RU.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
[imz@etik ~]$ rpm -q bash
bash-3.1.17-alt3
[imz@etik ~]$
Comment 7 Ivan Zakharyaschev 2009-10-30 21:30:17 MSK
(В ответ на комментарий №5)

> срабатывает. Списать несрабатывание на то, что по неведомым причинам минус
> между пробелом и запятой раскрылся в символы от пробела до запятой, нельзя. На
> значении "dhcp%static" имеющееся выражение тоже не реагирует, если оно
> используется в config-ipv4.

Хм, в моём тесте реагирует:

[imz@etik ~]$ bash -c 'case dhcp%static in dhcp[\ -,]static) echo Matched; ;; esac; locale'
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
[imz@etik ~]$ LC_ALL=C bash -c 'case dhcp%static in dhcp[\ -,]static) echo Matched; ;; esac; locale'
Matched
LANG=ru_RU.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
[imz@etik ~]$
Comment 8 Afanasov Dmitry 2009-12-04 23:53:49 MSK
рабочий пример:
# cat /etc/net/ifaces/ktl0/ipv4route
default via 192.168.131.1 table ktl realm ktl

192.168.120.2 via 192.168.131.1 realm ktl
95.128.136.130 via 192.168.131.1 realm ktl
62.182.30.146 via 192.168.131.1 realm ktl

add throw 10.0.0.0/8 table ktl
add throw 192.168.0.0/16 table ktl
add throw 172.16.0.0/13 table ktl

как я помню, в докунметации отмечено, что если есть желание добавить маршрут as-is, то надо добавлять add.

рекомендую закрыть как WORKSFORME.
Comment 9 Afanasov Dmitry 2009-12-04 23:54:52 MSK
ой!!! виноват, это рядом должно было быть :)
Comment 10 Sergey Bolshakov 2010-01-20 20:56:19 MSK
fixed in 0.9.10-alt2