On Thu, 2012-02-23 at 15:25 +0800, Weiping Pan wrote: > Example of problem: > Assume there are two connections, one is "Auto eth0" and the other is > "Vlan43", and the "Auto eth0" is the first connection on the list. > Assume we want to find a correct connection for vlan43 device first, > and match_ethernet_connection() will return TRUE, so > real_get_best_auto_connection() will return connection "Auto eth0" . > > The logic of function match_ethernet_connection() is confused, > the goal of this function is to check whether the connection will match the > device, > not that whether the device will match the connection. > So we should first check the virtual interface name of the connection, > and if mismatch, we can quit as soon as possible. > > Changelog: > V2: fix definition of iface > > Signed-off-by: Weiping Pan <[email protected]> > --- > src/nm-device-ethernet.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c > index f39fd66..fa89f8c 100644 > --- a/src/nm-device-ethernet.c > +++ b/src/nm-device-ethernet.c > @@ -597,6 +597,14 @@ match_ethernet_connection (NMDevice *device, > NMConnection *connection, > NMDeviceEthernet *self = NM_DEVICE_ETHERNET (device); > NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self); > NMSettingWired *s_wired; > + const char *driver; > + > + driver = nm_device_get_driver (device); > + if (!strcmp (driver, "8021q") || !strcmp (driver, "bonding")) { > + const char *iface = nm_connection_get_virtual_iface_name > (connection); > + if (!iface || strcmp (nm_device_get_iface (device), iface)) > + return FALSE; > + } > > s_wired = nm_connection_get_setting_wired (connection);
I'm actually moving VLAN interfaces to a separate device class in the 'vlan-cleanups' branch, which in the process removes anything VLAN related from nm-device-ethernet.c... Thus this hunk won't be required there. Dan _______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
