Bug 550280 - NetworkManager confuses IPs when network is enabled via applet
Summary: NetworkManager confuses IPs when network is enabled via applet
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: NetworkManager
Version: 12
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Dan Williams
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-12-24 11:01 UTC by udo
Modified: 2012-02-28 16:44 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2010-04-28 19:55:25 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description udo 2009-12-24 11:01:45 UTC
Description of problem:
NetworkManager confuses IPs when network is enabled via applet

Version-Release number of selected component (if applicable):
NetworkManager-gnome-0.7.997-2.git20091214.fc12.x86_64
NetworkManager-glib-0.7.997-2.git20091214.fc12.x86_64
NetworkManager-0.7.997-2.git20091214.fc12.x86_64


How reproducible:
Set up F12 box with eth0, usb0, usb1, etc.
Disable network via NM applet.
Enable network via applet
Open terminal, check Ip assigned to eth0.
Notice usb0 ip on eth0.

Steps to Reproduce:
1. See above
2.
3.
  
Actual results:
usb0 ip on eth0.

Expected results:
eth0 ip on eth0.


Additional info:
Severe bug. Please do not discuss priority nor severity.
If basic networking is this buggy I only want to know how to help you fix this.
So please do not touch priority nor severity.
Ask me/us for info etc.

Comment 1 Dan Williams 2009-12-26 09:44:43 UTC
Have you locked the configuration for usb0 to the actual usb0 device using the "MAC address" field in the connection editor for that connection?  Unless that field is filled in with the device's MAC address, the connection can be applied to any wired device.

Comment 2 udo 2009-12-26 10:09:24 UTC
So the usb0 connection which ends in an ipaq cradle could have any ipaq inserted.
And thus changing the hardware address.
Same for usb1.

eth0 ifcg DOES have a hardware address. Why not use it?
Why do the ifcfg devices have names?
why do the devices have names?
To use other devices' ifcfg files?

Comment 3 udo 2009-12-27 07:27:46 UTC
so:
link is down
link comes up
link needs to be configured
get device name to that link
find device ifcfg file with same name in it
verify hw address if present
use ip-info

any reasons to do it a different way?
please explain.

Comment 4 Dan Williams 2010-02-05 23:58:14 UTC
Device names are not stable, which is why they aren't used.  Especially with USB, but also with PCI.  Udev attempts to create stable device names, but it does so using MAC addresses.

Note that with udev persistent network device naming, if you insert a different iPaq into your cradle, you'll get a different network device.  It won't be usb0 because udev will rename the device since it has a different MAC address.  So thus the scheme you suggest will break down.

WRT using MAC-locked connections first, that's a possibility, but that has to be weighed against the priority mechanism that's currently used, since it would change behavior.  An alternative is to have a never-apply-to-this-MAC option for each connection where you could enter your eth0 MAC and thus would ensure that the "Auto usb0" connection was never used for eth0.  But that has the same basic problem.

Comment 5 udo 2010-02-06 05:56:37 UTC
That is the reason you assign usb0's IP to eth0 when eth0 has a MAC and usb0 hasn't?
Eth0 has all the info you need yet you assign the wrong IP.
Please fix.

Comment 6 udo 2010-02-06 05:58:43 UTC
And stable device names; that is out of your scope. udev is not networkmanager. Please work with what you get.

1) names plus mac
2) names
3) gamble

Comment 7 Dan Williams 2010-02-09 01:04:49 UTC
The connection defined for usb0 is applied to eth0 because it was the "last used", which is how priority is determined.  If you MAC-lock usb0 to your device's MAC, then it won't get applied to eth0.

Without a MAC address to lock the configuration information too, there is no way to definitively know that the configuration is supposed to be applied to any specific device, since device names are not stable.

Again, if you plug a different iPaq into the cradle, you'll get usb1, not usb0.  So if you lock "Auto usb0" to your iPaq's MAC, your problem is solved.  Using a device name here doesnt' solve the problem at all.

Comment 8 udo 2010-02-09 04:07:34 UTC
You must agree that this is a broken by design functionality that makes NetworkManager work worse than running the ifcfg-ethX scripts manually.

I explained that there is enough info to solve the issue yet you don't even bother to think about it.
We have a device name (eth0) AND a hardware address in ifcfg-eth0.
So you can plug that info to eth0. And NOT something else.

Why should 'last used' matter when MAC-addresses are so dear, aside from the logical to choose device names (udev does that, not you).
This is a bug. This is last century's functionality so please fix.

Comment 9 udo 2010-04-28 16:07:57 UTC
Also see https://bugzilla.redhat.com/show_bug.cgi?id=586427 for interesting discussion relating to this bug.

Comment 10 Dan Williams 2010-04-28 19:55:25 UTC
I disagree that this functionality is broken by design.  Assign a stable MAC address to your device using udev rules and a combination of USB serial number or other USB descriptor attributes.

As I state in the other bug, any scheme based on device names breaks down horribly when you plug more than one USB ethernet device into the machine, since USB enumeration is not stable and the devices may well switch names.

If you do as suggested and lock the connections to the MAC address of the device that you'd like them to be exclusively for, then everything works as expected, and the configurations don't get switched.

Comment 11 udo 2010-04-29 02:42:13 UTC
You can disagree.
It still is borken.
Ot still shows congfusing info.
If not to say 'WRONG" info.

If that is by design, so it is.

Comment 12 udo 2010-04-29 13:22:05 UTC
Udev is the solution. Not working around it in NM.
Agree with assigning all three bugs to udev?
Then you can explain what needs changing there.

Comment 13 Dan Williams 2010-04-29 19:25:26 UTC
Nothing needs changing in udev; there will always be cases where people won't  necessarily need stable devices names, or where stable device names simply cannot be constructed.  The problem is that unless *every* device gets a stable device name, we cannot depend on device names, and not all people want udev to assign them 'wlan56' for example.  Plus, if you clear out your stable device  name rules for some reason, you lose the stable device names.

Instead, the solution is to tell NetworkManager the same piece of information; the actual unique identifier of the device itself.  We may in the future allow use of other udev-assigned IDs for unmanaging devices, but it's certainly not going to be done by device names for the reasons I describe above.

Comment 14 udo 2012-02-28 16:44:31 UTC
NM can not be told to not fiddle with usb0.
NM does not facilitate usb0 with a changing HW address.
I.e.: I cannot specify a HW address.
I cannot tell NM to leave usb0 alone.
So what does that leave us with?
A buggy NM experience.
A frustrated user.
Resulting in another NM uninstall.
Yes, that happens when NM programmers do not allow a usb connected Linux device to work with another Linux device.
Yes, this bug is still current in F16.

PS: your udev observations are false.


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