В рамках работы над https://bugzilla.altlinux.org/32167 Как-то вот так например: --- functions.bak 2018-12-03 16:30:57.000000000 +0400 +++ functions 2019-08-31 13:01:39.750502691 +0400 @@ -128,6 +128,9 @@ { local NAME=${1:?missing 1st arg to $FUNCNAME} local CAND=${NAME%%[0-9]*} + if [ $CAND = "ether" ]; then + CAND=eth + fi supported_type $CAND && echo $CAND }
кавычки забыл: [ "$CAND" = "ether" ]
Или, может, правильнее несколько симлинков просто добавить: create-ether -> create-eth destroy-ether -> destroy-eth setup-ether -> setup-eth shutdown-ether -> shutdown-eth
Похоже вариант с тремя строчками в functions проще. Нет возражений по поводу такой доработки?
(In reply to Sergey Y. Afonin from comment #3) > Похоже вариант с тремя строчками в functions проще. Нет возражений по поводу > такой доработки? https://lists.altlinux.org/pipermail/devel/2020-April/210614.html Как там с обновлением?
Не совсем понятно - зачем. TYPE же всегда можно указать.
(In reply to Anton Farygin from comment #5) > Не совсем понятно - зачем. > TYPE же всегда можно указать. Для удобства. TYPE вообще же для всего можно написать, но есть автоопределение. :-)
Мне не очевидно почему имя ether должно быть обработано особым образом. Как я вижу оно не является умолчанием даже в udev-rule-generator сейчас. Имена интерфейсов могут быть произвольные, мы же не будем добавлять все варианты имен, которые кто-то у себя может использовать? Скорее уж логичнее добавлять поддержку для стандартной схемы именования, которая используется в udev сейчас (вида enp0s1). Но я и этого не хочу делать, текущая функция проста и понятна, а усложнение ее будет выглядеть уже как набор костылей, достаточно посмотреть на предложенный патч. Я думаю, что стоит вообще перестать полагаться на это автоопределение типа и всегда указывать тип явно в конфиге.
Лучше тогда уж логику переписать на sysfs или udev. Там уже есть определение типа интерфейса. /sys/class/net/<name>/type = 1 это eth
да, тоже вариант. Хотя надо посмотреть, возможно для других типов интерфейсов тип определяется до того, как интерфейсы создаются.
(Ответ для Mikhail Efremov на комментарий #9) > да, тоже вариант. Хотя надо посмотреть, возможно для других типов > интерфейсов тип определяется до того, как интерфейсы создаются. Да, это определение происходит в самом начале, при чтении конфигов. Собственно, функция называется name2type() и делает именно то, что заявлено в названии. Добавлять в нее заглядывание в sysfs точно не надо. Можно сделать еще одну функцию для этого, но мне кажется это тоже лишнее.
(In reply to Mikhail Efremov from comment #7) > Мне не очевидно почему имя ether должно быть обработано особым образом. Как > я вижу оно не является умолчанием даже в udev-rule-generator сейчас. Только потому, что пока от этого ломается Альтератор и etcnet интерфейсы не поднимает без type. А так всё готово. Ручка в /etc/sysconfig, можно переключить даже без обновления пакета. > Имена интерфейсов могут быть произвольные, мы же не будем добавлять все варианты Да, но какое-то должно же быть по умолчанию, и это не eth, так как eth сломали в udev. Я бы с удовольствием ничего не менял, если бы у кого-то ручки шаловливые до udev не дотянулись.
(In reply to Mikhail Efremov from comment #7) > Я думаю, что стоит вообще перестать полагаться на это автоопределение типа и > всегда указывать тип явно в конфиге. Хотя, в общем-то, тоже вариант, но будет ли удобно и не будет ли каких-то проблем с забывчивостью. Пока-то параметр необязательный.
(Ответ для Sergey Y. Afonin на комментарий #11) > Только потому, что пока от этого ломается Альтератор и etcnet интерфейсы не > поднимает без type. Alterator-net-eth всегда прописывал TYPE явно. > Да, но какое-то должно же быть по умолчанию, и это не eth, так как eth > сломали в udev. Я бы с удовольствием ничего не менял, если бы у кого-то > ручки шаловливые до udev не дотянулись. Это умолчание тогда уж имена вида enp0s1, как я писал выше. > Хотя, в общем-то, тоже вариант, но будет ли удобно и не будет ли каких-то > проблем с забывчивостью. Пока-то параметр необязательный. TYPE всегда обязательный, просто etcnet может попытаться угадать его по имени. Разумеется, всегда надежнее указать явно.
(In reply to Mikhail Efremov from comment #13) > Это умолчание тогда уж имена вида enp0s1, как я писал выше. За такие имена вообще руки надо отрывать. Однообразия нет, постоянности нет. Чего добились - не ясно.
(In reply to Mikhail Efremov from comment #13) > > Только потому, что пока от этого ломается Альтератор и etcnet интерфейсы не > > поднимает без type. > > Alterator-net-eth всегда прописывал TYPE явно. Хотя про Alterator, возможно, я поторопился. Было такое сообщение: https://lists.altlinux.org/pipermail/devel/2019-August/208342.html Я решил, что что-то сломалось, но может быть я был не прав. Уточню.
(Ответ для Mikhail Efremov на комментарий #10) > (Ответ для Mikhail Efremov на комментарий #9) > > да, тоже вариант. Хотя надо посмотреть, возможно для других типов > > интерфейсов тип определяется до того, как интерфейсы создаются. > > Да, это определение происходит в самом начале, при чтении конфигов. > Собственно, функция называется name2type() и делает именно то, что заявлено > в названии. Добавлять в нее заглядывание в sysfs точно не надо. Можно > сделать еще одну функцию для этого, но мне кажется это тоже лишнее. Я честно говоря не понял о чём речь. Если интерфейса на момент входа в эту функцию нет, то его уже после этого никто не создаст (в случае с eth). А если есть, то тип интерфейса можно взять из sysfs, вместо автоугадава по имени.
Тип определяет какие функции etcnet будет использовать дальше. В случае виртуальных интерфейсов (вроде bridge) как раз тип и определяет, что их нужно создавать.
Это понятно. но в случае, если запрашиваемый интерфейс уже есть, а тип явно не определён. то разумно было бы уточнить этот тип через sysfs, а не полагаться в логике определения на имя интерфейса.