Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 664051

Summary: Special symbol '#' appears in interface names and confuses scripts.
Product: Red Hat Enterprise Linux 6 Reporter: Bill Nottingham <notting>
Component: initscriptsAssignee: initscripts Maintenance Team <initscripts-maint-list>
Status: CLOSED ERRATA QA Contact: qe-baseos-daemons
Severity: high Docs Contact:
Priority: high    
Version: 6.0CC: azelinka, harald, jonathan, linux-bugs, martinez, matt_domsch, mebrown, notting, pknirsch, plautrba, rvokal, shyam_iyer
Target Milestone: rc   
Target Release: 6.1   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: initscripts-9.03.18-1.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 663904
: 664091 (view as bug list) Environment:
Last Closed: 2011-05-19 13:51:47 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 501533, 663904    
Bug Blocks: 554529, 580566, 660627    

Description Bill 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

Comment 8 errata-xmlrpc 2011-05-19 13:51:47 UTC
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