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.
Description of problem:
- Bond interface designated 'bond1' is being named 'bond0'
- In 97parse-bond.sh
Version-Release number of selected component (if applicable):
How reproducible:
100%
Steps to Reproduce:
1.
2.
3.
Actual results:
In that script the main work is done in the if/then statement that begins at line 45. it performs a getarg and then calls the routine parsebond(). In that routine, there is a case statement that parses based on the number of positional arguments. If the bond name were passed correctly to that routine, it should parse out bondname=bond1, bondslaves=eth4,eth5 and bondoptions="mode=1"
Instead it appears to parse bondslaves and bondoptions correctly but not bondname. It defaults to bondname=bond0 since $bondname is null.
Looking at /sbin/ifup:
------------------------------------------
# start bond if needed
if [ -e /tmp/bond.info ]; then
. /tmp/bond.info
if [ "$netif" = "$bondname" ] && [ ! -e /tmp/net.$bondname.up ] ; then # We are master bond device
modprobe bonding <<============= bond0 is created automatically
ip link set $netif down
# Stolen from ifup-eth
# add the bits to setup driver parameters here
for arg in $bondoptions ; do
key=${arg%%=*};
value=${arg##*=};
# %{value:0:1} is replaced with non-bash specific construct
if [ "${key}" = "arp_ip_target" -a "${#value}" != "0" -a "+${value%%+*}" != "+" ]; then
OLDIFS=$IFS;
IFS=',';
for arp_ip in $value; do
echo +$arp_ip > /sys/class/net/${netif}/bonding/$key
done
IFS=$OLDIFS;
else
echo $value > /sys/class/net/${netif}/bonding/$key <<===== It tries to set the bonding option here.
${netif} is the value of bondname in /tmp/bond.info. It's bond1. But, /sys/class/net/bond1 is not available, and it failed.
If the following command is done in advance, bond1 should have created in /sys/class/net
echo +bond1 >/sys/class/net/bonding_masters
But, it's not executed in it. So, you cannot use the name 'bond1'.
Expected results:
- Unsure- what is the expected behavior based on looking at the two functions? - The desired end result would be to name the interface 'bond1'
- Are the 'consistent naming' rules in udev also at play here?
Additional info:
The desired end result is to have a system booting diskless to take the following network configuration:
- bond1
- interfaces eth4 and 5
- mode: active-backup
- interface named 'bond1'
What we need is:
1: Is naming a bond a specific name possible in the diskless boot environment?
2: If so, how is this done? Are we encountering a bug?
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://rhn.redhat.com/errata/RHBA-2016-0954.html
Description of problem: - Bond interface designated 'bond1' is being named 'bond0' - In 97parse-bond.sh Version-Release number of selected component (if applicable): How reproducible: 100% Steps to Reproduce: 1. 2. 3. Actual results: In that script the main work is done in the if/then statement that begins at line 45. it performs a getarg and then calls the routine parsebond(). In that routine, there is a case statement that parses based on the number of positional arguments. If the bond name were passed correctly to that routine, it should parse out bondname=bond1, bondslaves=eth4,eth5 and bondoptions="mode=1" Instead it appears to parse bondslaves and bondoptions correctly but not bondname. It defaults to bondname=bond0 since $bondname is null. Looking at /sbin/ifup: ------------------------------------------ # start bond if needed if [ -e /tmp/bond.info ]; then . /tmp/bond.info if [ "$netif" = "$bondname" ] && [ ! -e /tmp/net.$bondname.up ] ; then # We are master bond device modprobe bonding <<============= bond0 is created automatically ip link set $netif down # Stolen from ifup-eth # add the bits to setup driver parameters here for arg in $bondoptions ; do key=${arg%%=*}; value=${arg##*=}; # %{value:0:1} is replaced with non-bash specific construct if [ "${key}" = "arp_ip_target" -a "${#value}" != "0" -a "+${value%%+*}" != "+" ]; then OLDIFS=$IFS; IFS=','; for arp_ip in $value; do echo +$arp_ip > /sys/class/net/${netif}/bonding/$key done IFS=$OLDIFS; else echo $value > /sys/class/net/${netif}/bonding/$key <<===== It tries to set the bonding option here. ${netif} is the value of bondname in /tmp/bond.info. It's bond1. But, /sys/class/net/bond1 is not available, and it failed. If the following command is done in advance, bond1 should have created in /sys/class/net echo +bond1 >/sys/class/net/bonding_masters But, it's not executed in it. So, you cannot use the name 'bond1'. Expected results: - Unsure- what is the expected behavior based on looking at the two functions? - The desired end result would be to name the interface 'bond1' - Are the 'consistent naming' rules in udev also at play here? Additional info: The desired end result is to have a system booting diskless to take the following network configuration: - bond1 - interfaces eth4 and 5 - mode: active-backup - interface named 'bond1' What we need is: 1: Is naming a bond a specific name possible in the diskless boot environment? 2: If so, how is this done? Are we encountering a bug?