DescriptionBill Nottingham
2010-12-17 20:06:15 UTC
+++ This bug was initially created as a clone of Bug #663904 +++
Description of problem:
biosdevname set a names like 'pci3#1' to interfaces.
Some scripts treats '#' as as special symbol.
It may be better to use sifferent separator, like '_' or '-' (seee patch).
Version-Release number of selected component (if applicable):
biosdevname-0.3.4-1
How reproducible:
Always, if pci card is in slot
Steps to Reproduce:
1. Inser pci network card
2. create appropriate config file /etc/sysconfig/network-scripts/ifcfg-pciNxM
3. service network restart
Actual results:
Interface appears up, but some errors shown:
grep: ifcfg-ifcfg-pci3#1: No such file or directory
Expected results:
Scripts works w/o errors.
Additional info:
There are some old 3-rd party scripts, so it may be better not to fix scripts, but use different separator.
--- Additional comment from atu.ua on 2010-12-17 04:55:46 EST ---
Created attachment 469322[details]
User symbol '_' as a separator
--- Additional comment from matt_domsch on 2010-12-17 08:22:11 EST ---
_ is taken in my scheme, to separate NIC partitions & SR-IOV virtual functions. I'd rather fix the scripts to allow a # in the name. Pointers to such scripts? Was this a rawhide install?
--- Additional comment from matt_domsch on 2010-12-17 09:04:09 EST ---
I can't see a failure when using pci2#1 as an interface name, on a Fedora 14 system + biosdevname. ifup/ifdown work as expected. Can you provide pointers to the failing scripts on your system?
--- Additional comment from atu.ua on 2010-12-17 09:36:18 EST ---
Some of them - /etc/init.d/network from initscripts.
Problem part:
# bring up all other interfaces configured to come up boot time
for i in $interfaces; do
unset DEVICEYPE SLAVE
eval $(LANG=C grep -F "DEVICE=" ifcfg-$i)
eval $(LANG=C grep -F "TYPE=" ifcfg-$i)
eval $(LANG=C grep -F "SLAVE=" ifcfg-$i)
After this eval's error message appears:
grep: ifcfg-ifcfg-pci3#1: No such file or directory
Really, it seems, that some substitutions requires quoting "".
But it's a too common error.
Real error in in this lines :
interfaces=$(ls ifcfg* | \
LANG=C sed -e "$__sed_discard_ignored_files" \
-e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
-e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \ # HERE!
LANG=C sort -k 1,1 -k 2n | \
LANG=C sed 's/ //')
May be some another non bash-special symbol, like '@' '=' ,
and add it to allowed char in all scripts?
Dot '.' and ':' are reserver for VLAN-s and aliases.
--- Additional comment from matt_domsch on 2010-12-17 10:21:45 EST ---
1) the fact that it's grepping ifcfg-ifcfg-pci3#1 (note the duplicate ifcfg parts of the name) is a problem. I've never seen that before.
2) sounds like an initscripts problem. Re-assigning. I agree the sed you note with #HERE will need adjustment to accept the new separator # in the match.
--- Additional comment from matt_domsch on 2010-12-17 10:53:25 EST ---
Initscripts patch to add # fixes it:
diff --git a/rc.d/init.d/network b/rc.d/init.d/network
index 482bb7b..b31060b 100755
--- a/rc.d/init.d/network
+++ b/rc.d/init.d/network
@@ -46,7 +46,7 @@ cd /etc/sysconfig/network-scripts
interfaces=$(ls ifcfg* | \
LANG=C sed -e "$__sed_discard_ignored_files" \
-e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
- -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
+ -e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
LANG=C sort -k 1,1 -k 2n | \
LANG=C sed 's/ //')
rc=0
On my system, this results in the interfaces being properly found:
em1 em2 pci2#1
--- Additional comment from matt_domsch on 2010-12-17 10:56:49 EST ---
Created attachment 469405[details]
0001-add-as-a-valid-characer-in-network-device-names.patch
initscript patch
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.
http://rhn.redhat.com/errata/RHBA-2011-0647.html