mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-25 09:30:36 +01:00
2006-01-10 Robert Love <rml@novell.com>
* src/nm-device-802-11-wireless.c, src/nm-device-802-11-wireless.h, src/nm-device-802-3-ethernet.c, src/nm-device-802-3-ethernet.h, src/nm-device.c: Fix a FIXME! Reimplement the function nm_device_update_hw_address() in device subclass variants, nm_device_802_3_ethernet_set_address() and nm_device_802_11_wireless_set_address(), hook them up, and use them. This fixes the existing bug where MAC addresses are all zeros. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1309 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
5f10fc0638
commit
5b8589dfb0
6 changed files with 87 additions and 12 deletions
10
ChangeLog
10
ChangeLog
|
|
@ -1,3 +1,13 @@
|
|||
2006-01-10 Robert Love <rml@novell.com>
|
||||
|
||||
* src/nm-device-802-11-wireless.c, src/nm-device-802-11-wireless.h,
|
||||
src/nm-device-802-3-ethernet.c, src/nm-device-802-3-ethernet.h,
|
||||
src/nm-device.c: Fix a FIXME! Reimplement the function
|
||||
nm_device_update_hw_address() in device subclass variants,
|
||||
nm_device_802_3_ethernet_set_address() and
|
||||
nm_device_802_11_wireless_set_address(), hook them up, and use them.
|
||||
This fixes the existing bug where MAC addresses are all zeros.
|
||||
|
||||
2006-01-10 Robert Love <rml@novell.com>
|
||||
|
||||
* gnome/applet/applet-dbus-devices.c, gnome/applet/applet-dbus.h,
|
||||
|
|
|
|||
|
|
@ -409,7 +409,6 @@ nm_device_802_11_wireless_copy_allowed_to_dev_list (NMDevice80211Wireless *self,
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* nm_device_802_11_wireless_get_address
|
||||
*
|
||||
|
|
@ -427,6 +426,36 @@ nm_device_802_11_wireless_get_address (NMDevice80211Wireless *self,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* nm_device_802_11_wireless_set_address
|
||||
*
|
||||
* Set a device's hardware address
|
||||
*
|
||||
*/
|
||||
void
|
||||
nm_device_802_11_wireless_set_address (NMDevice80211Wireless *self)
|
||||
{
|
||||
NMDevice *dev = NM_DEVICE (self);
|
||||
struct ifreq req;
|
||||
NMSock *sk;
|
||||
int ret;
|
||||
|
||||
g_return_if_fail (self != NULL);
|
||||
|
||||
sk = nm_dev_sock_open (dev, DEV_GENERAL, __FUNCTION__, NULL);
|
||||
if (!sk)
|
||||
return;
|
||||
memset (&req, 0, sizeof (struct ifreq));
|
||||
strncpy (req.ifr_name, nm_device_get_iface (dev), sizeof (req.ifr_name) - 1);
|
||||
|
||||
ret = ioctl (nm_dev_sock_get_fd (sk), SIOCGIFHWADDR, &req);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
memcpy (&(self->priv->hw_addr), &(req.ifr_hwaddr.sa_data), sizeof (struct ether_addr));
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
link_to_specific_ap (NMDevice80211Wireless *self,
|
||||
NMAccessPoint *ap,
|
||||
|
|
|
|||
|
|
@ -82,6 +82,8 @@ void nm_device_802_11_wireless_set_essid (NMDevice80211Wireless *self,
|
|||
void nm_device_802_11_wireless_get_address (NMDevice80211Wireless *dev,
|
||||
struct ether_addr *addr);
|
||||
|
||||
void nm_device_802_11_wireless_set_address (NMDevice80211Wireless *dev);
|
||||
|
||||
void nm_device_802_11_wireless_get_bssid (NMDevice80211Wireless *dev,
|
||||
struct ether_addr *bssid);
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ real_start (NMDevice *dev)
|
|||
|
||||
|
||||
/*
|
||||
* nm_device_get_hw_address
|
||||
* nm_device_802_3_ethernet_get_address
|
||||
*
|
||||
* Get a device's hardware address
|
||||
*
|
||||
|
|
@ -149,6 +149,36 @@ nm_device_802_3_ethernet_get_address (NMDevice8023Ethernet *self, struct ether_a
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* nm_device_802_3_ethernet_set_address
|
||||
*
|
||||
* Set a device's hardware address
|
||||
*
|
||||
*/
|
||||
void
|
||||
nm_device_802_3_ethernet_set_address (NMDevice8023Ethernet *self)
|
||||
{
|
||||
NMDevice *dev = NM_DEVICE (self);
|
||||
struct ifreq req;
|
||||
NMSock *sk;
|
||||
int ret;
|
||||
|
||||
g_return_if_fail (self != NULL);
|
||||
|
||||
sk = nm_dev_sock_open (dev, DEV_GENERAL, __FUNCTION__, NULL);
|
||||
if (!sk)
|
||||
return;
|
||||
memset (&req, 0, sizeof (struct ifreq));
|
||||
strncpy (req.ifr_name, nm_device_get_iface (dev), sizeof (req.ifr_name) - 1);
|
||||
|
||||
ret = ioctl (nm_dev_sock_get_fd (sk), SIOCGIFHWADDR, &req);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
memcpy (&(self->priv->hw_addr), &(req.ifr_hwaddr.sa_data), sizeof (struct ether_addr));
|
||||
}
|
||||
|
||||
|
||||
static guint32
|
||||
real_get_generic_capabilities (NMDevice *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -83,6 +83,8 @@ static inline gboolean nm_device_is_802_3_ethernet (NMDevice *dev)
|
|||
void nm_device_802_3_ethernet_get_address (NMDevice8023Ethernet *dev,
|
||||
struct ether_addr *addr);
|
||||
|
||||
void nm_device_802_3_ethernet_set_address (NMDevice8023Ethernet *dev);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* NM_DEVICE_802_3_ETHERNET_H */
|
||||
|
|
|
|||
|
|
@ -191,10 +191,12 @@ nm_device_new (const char *iface,
|
|||
nm_device_bring_up_wait (dev, FALSE);
|
||||
|
||||
nm_device_update_ip4_address (dev);
|
||||
/* FIXME */
|
||||
#if 0
|
||||
nm_device_update_hw_address (dev);
|
||||
#endif
|
||||
|
||||
/* Update the device's hardware address */
|
||||
if (nm_device_is_802_3_ethernet (dev))
|
||||
nm_device_802_3_ethernet_set_address (NM_DEVICE_802_3_ETHERNET (dev));
|
||||
else if (nm_device_is_802_11_wireless (dev))
|
||||
nm_device_802_11_wireless_set_address (NM_DEVICE_802_11_WIRELESS (dev));
|
||||
|
||||
/* Grab IP config data for this device from the system configuration files */
|
||||
dev->priv->system_config_data = nm_system_device_get_system_config (dev);
|
||||
|
|
@ -1715,14 +1717,14 @@ nm_device_set_up_down (NMDevice *self,
|
|||
|
||||
nm_system_device_set_up_down (self, up);
|
||||
|
||||
/* Make sure we have a valid MAC address, some cards reload firmware when they
|
||||
/*
|
||||
* Make sure that we have a valid MAC address, some cards reload firmware when they
|
||||
* are brought up.
|
||||
*/
|
||||
/* FIXME */
|
||||
#if 0
|
||||
if (up && !nm_ethernet_address_is_valid (&(self->priv->hw_addr)))
|
||||
nm_device_update_hw_address (self);
|
||||
#endif
|
||||
if (nm_device_is_802_3_ethernet (self))
|
||||
nm_device_802_3_ethernet_set_address (NM_DEVICE_802_3_ETHERNET (self));
|
||||
else if (nm_device_is_802_11_wireless (self))
|
||||
nm_device_802_11_wireless_set_address (NM_DEVICE_802_11_WIRELESS (self));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue