+2004-10-14 Dan Williams <dcbw@redhat.com>
+
+ Patch from Robert Paskowitz:
+ * NEWS
+ src/NetworkManagerDevice.[ch]
+ src/backends/NetworkManagerDebian.c
+ src/backends/NetworkManagerGentoo.c
+ src/backends/NetworkManagerRedHat.c
+ src/backends/NetworkManagerSlackware.c
+ - Add support for grabbing and using a broadcast address
+ from system config files
+ - Some Gentoo backend fixes for grabbing network config
+ - Fix LOG_WARN->LOG_WARNING
+
2004-10-14 Dan Williams <dcbw@redhat.com>
* NEWS: a few small fixes in the credits
* Lots of fixes, Dan Williams
* Support static IP addresses, Dan Williams
+ - Get broadcast address from config files, Robert Paskowitz
* Support for non-ESSID-broadcasting base stations, Dan Williams
* Only accept and manager 802.3 and 802.11 devices, Dan Williams
* Don't blow away an active wired connection on startup, Dan Williams
guint32 ip4_gateway;
guint32 ip4_address;
guint32 ip4_netmask;
+ guint32 ip4_broadcast;
/* FIXME: ip6 stuff */
} NMDeviceConfigInfo;
dev->config_info.ip4_netmask = netmask;
}
+guint32 nm_device_config_get_ip4_broadcast (NMDevice *dev)
+{
+ g_return_val_if_fail (dev != NULL, 0);
+
+ return (dev->config_info.ip4_broadcast);
+}
+
+void nm_device_config_set_ip4_broadcast (NMDevice *dev, guint32 broadcast)
+{
+ g_return_if_fail (dev != NULL);
+
+ dev->config_info.ip4_broadcast = broadcast;
+}
/****************************************/
void nm_device_config_set_ip4_gateway (NMDevice *dev, guint32 gateway);
guint32 nm_device_config_get_ip4_netmask (NMDevice *dev);
void nm_device_config_set_ip4_netmask (NMDevice *dev, guint32 netmask);
+guint32 nm_device_config_get_ip4_broadcast (NMDevice *dev);
+void nm_device_config_set_ip4_broadcast (NMDevice *dev, guint32 broadcast);
/* Utility routines */
NMDevice * nm_get_device_by_udi (NMData *data, const char *udi);
*/
gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev)
{
- syslog (LOG_WARN, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
+ syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
}
*/
gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev)
{
- syslog (LOG_WARN, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
-}
-
-
-/*
- * nm_system_device_update_config_info
- *
- * Retrieve any relevant configuration info for a particular device
- * from the system network configuration information. Clear out existing
- * info before setting stuff too.
- *
- */
-void nm_system_device_update_config_info (NMDevice *dev)
-{
+ syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
}
guint32 ip4_address = 0;
guint32 ip4_netmask = 0;
guint32 ip4_gateway = 0;
+ guint32 ip4_broadcast = 0;
g_return_if_fail (dev != NULL);
nm_device_config_set_ip4_address (dev, 0);
nm_device_config_set_ip4_gateway (dev, 0);
nm_device_config_set_ip4_netmask (dev, 0);
+ nm_device_config_set_ip4_broadcast (dev, 0);
/* Gentoo systems store this information in
* /etc/conf.d/net, this is for all interfaces.
}
else
{
- syslog (LOG_WARNING, "Device '%s' is setup as static, and we do not (yet) support that\n",
- nm_device_get_iface (dev));
use_dhcp = FALSE;
confToken = strtok(&buffer[strlen(confline) + 2], " ");
while (count < 3)
else if (strcmp(confToken, "broadcast") == 0)
{
confToken = strtok(NULL, " ");
+ ip4_broadcast = inet_addr (confToken);
count++;
bNext = 1;
}
sscanf(buffer, ipline, &ipa, &ipb, &ipc, &ipd);
sprintf(ipline, "%d.%d.%d.%d", ipa, ipb, ipc, ipd);
ip4_gateway = inet_addr (ipline);
- syslog (LOG_WARNING, "Gateway(%s): %s", nm_device_get_iface (dev), ipline);
}
}
}
nm_device_config_set_ip4_gateway (dev, ip4_gateway);
if (ip4_netmask)
nm_device_config_set_ip4_netmask (dev, ip4_netmask);
+ if (ip4_broadcast)
+ nm_device_config_set_ip4_broadcast (dev, ip4_broadcast);
}
}
addr = nm_device_config_get_ip4_address (dev);
netmask = nm_device_config_get_ip4_netmask (dev);
iface = nm_device_get_iface (dev);
+ broadcast = nm_device_config_get_ip4_broadcast (dev);
/* Calculate the prefix (# bits stripped off by the netmask) */
for (i = 0; i < IPBITS; i++)
prefix--;
}
- /* Calculate the broadcast address */
- broadcast = ((addr & (int)netmask) | ~(int)netmask);
+ /* Calculate the broadcast address if the user didn't specify one */
+ if (!broadcast)
+ broadcast = ((addr & (int)netmask) | ~(int)netmask);
/* FIXME: what if some other device is already using our IP address? */
guint32 ip4_address = 0;
guint32 ip4_netmask = 0;
guint32 ip4_gateway = 0;
+ guint32 ip4_broadcast = 0;
g_return_if_fail (dev != NULL);
nm_device_config_set_ip4_address (dev, 0);
nm_device_config_set_ip4_gateway (dev, 0);
nm_device_config_set_ip4_netmask (dev, 0);
+ nm_device_config_set_ip4_broadcast (dev, 0);
/* Red Hat/Fedora Core systems store this information in
* /etc/sysconfig/network-scripts/ifcfg-* where * is the interface
}
}
+ buf = svGetValue (file, "BROADCAST");
+ if (buf)
+ {
+ ip4_broadcast = inet_addr (buf);
+ free (buf);
+ }
+
if (!use_dhcp && (!ip4_address || !ip4_gateway || !ip4_netmask))
{
syslog (LOG_ERR, "Error: network configuration for device '%s' was invalid (non-DCHP configuration,"
nm_device_config_set_ip4_gateway (dev, ip4_gateway);
if (ip4_netmask)
nm_device_config_set_ip4_netmask (dev, ip4_netmask);
+ if (ip4_broadcast)
+ nm_device_config_set_ip4_broadcast (dev, ip4_broadcast);
#if 0
syslog (LOG_DEBUG, "------ Config (%s)", nm_device_get_iface (dev));
*/
gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev)
{
- syslog (LOG_WARN, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
+ syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n");
}