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 - Special symbol '#' appears in interface names and confuses scripts.
Summary: Special symbol '#' appears in interface names and confuses scripts.
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: initscripts
Version: 6.0
Hardware: All
OS: Linux
high
high
Target Milestone: rc
: 6.1
Assignee: initscripts Maintenance Team
QA Contact: qe-baseos-daemons
URL:
Whiteboard:
Depends On: 501533 663904
Blocks: 554529 580566 660627
TreeView+ depends on / blocked
 
Reported: 2010-12-17 20:06 UTC by Bill Nottingham
Modified: 2014-03-17 03:25 UTC (History)
12 users (show)

Fixed In Version: initscripts-9.03.18-1.el6
Doc Type: Bug Fix
Doc Text:
Clone Of: 663904
: 664091 (view as bug list)
Environment:
Last Closed: 2011-05-19 13:51:47 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2011:0647 0 normal SHIPPED_LIVE initscripts bug fix and enhancement update 2011-05-19 09:37:27 UTC

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


Note You need to log in before you can comment on or make changes to this bug.