[PATCH] Add dhcp timeout and anycast config options
- From: Sjoerd Simons <sjoerd simons collabora co uk>
- To: networkmanager-list gnome org
- Subject: [PATCH] Add dhcp timeout and anycast config options
- Date: Mon, 4 Aug 2008 12:28:38 +0100
Add configuration options for apply a dhcp timeout and using DHCP using anycast
instead of broadcast.
Signed-off-by: Sjoerd Simons <sjoerd simons collabora co uk>
---
libnm-util/nm-setting-ip4-config.c | 53 ++++++++++++++++++++++++++++++++++-
libnm-util/nm-setting-ip4-config.h | 7 +++++
2 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/libnm-util/nm-setting-ip4-config.c b/libnm-util/nm-setting-ip4-config.c
index 1def822..c7b58d0 100644
--- a/libnm-util/nm-setting-ip4-config.c
+++ b/libnm-util/nm-setting-ip4-config.c
@@ -24,6 +24,7 @@
*/
#include <string.h>
+#include <netinet/ether.h>
#include <dbus/dbus-glib.h>
#include "nm-setting-ip4-config.h"
@@ -79,7 +80,8 @@ enum {
PROP_IGNORE_DHCP_DNS,
PROP_DHCP_CLIENT_ID,
PROP_DHCP_HOSTNAME,
-
+ PROP_DHCP_TIMEOUT,
+ PROP_DHCP_ANYCAST_ADDRESS,
LAST_PROP
};
@@ -205,6 +207,22 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
}
}
+ if (self->dhcp_timeout < NM_SETTING_IP4_MINIMAL_DHCP_TIMEOUT) {
+ g_set_error (error,
+ NM_SETTING_IP4_CONFIG_ERROR,
+ NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY,
+ NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT);
+ return FALSE;
+ }
+
+ if (self->anycast_address != NULL && self->anycast_address->len != ETH_ALEN) {
+ g_set_error (error,
+ NM_SETTING_IP4_CONFIG_ERROR,
+ NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY,
+ NM_SETTING_IP4_CONFIG_DHCP_ANYCAST);
+ return FALSE;
+ }
+
return TRUE;
}
@@ -271,6 +289,14 @@ set_property (GObject *object, guint prop_id,
g_free (setting->dhcp_hostname);
setting->dhcp_hostname = g_value_dup_string (value);
break;
+ case PROP_DHCP_TIMEOUT:
+ setting->dhcp_timeout = g_value_get_uint (value);
+ break;
+ case PROP_DHCP_ANYCAST_ADDRESS:
+ if (setting->anycast_address)
+ g_byte_array_free (setting->anycast_address, TRUE);
+ setting->anycast_address = g_value_dup_boxed (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -308,6 +334,12 @@ get_property (GObject *object, guint prop_id,
case PROP_DHCP_HOSTNAME:
g_value_set_string (value, setting->dhcp_hostname);
break;
+ case PROP_DHCP_TIMEOUT:
+ g_value_set_uint (value, setting->dhcp_timeout);
+ break;
+ case PROP_DHCP_ANYCAST_ADDRESS:
+ g_value_set_boxed (value, setting->anycast_address);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -390,5 +422,22 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class)
"DHCP Hostname",
NULL,
G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
-}
+ g_object_class_install_property
+ (object_class, PROP_DHCP_TIMEOUT,
+ g_param_spec_uint (NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT,
+ "DHCP Timeout",
+ "DHCP Timeout",
+ NM_SETTING_IP4_MINIMAL_DHCP_TIMEOUT,
+ G_MAXUINT,
+ NM_SETTING_IP4_DEFAULT_DHCP_TIMEOUT,
+ G_PARAM_CONSTRUCT| G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+ g_object_class_install_property
+ (object_class, PROP_DHCP_ANYCAST_ADDRESS,
+ nm_param_spec_specialized (NM_SETTING_IP4_CONFIG_DHCP_ANYCAST,
+ "Anycast dhcp mac address",
+ "Anycast dhcp mac address",
+ DBUS_TYPE_G_UCHAR_ARRAY,
+ G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+}
diff --git a/libnm-util/nm-setting-ip4-config.h b/libnm-util/nm-setting-ip4-config.h
index a6928a4..e5b079c 100644
--- a/libnm-util/nm-setting-ip4-config.h
+++ b/libnm-util/nm-setting-ip4-config.h
@@ -61,12 +61,17 @@ GQuark nm_setting_ip4_config_error_quark (void);
#define NM_SETTING_IP4_CONFIG_IGNORE_DHCP_DNS "ignore-dhcp-dns"
#define NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID "dhcp-client-id"
#define NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME "dhcp-hostname"
+#define NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT "dhcp-timeout"
+#define NM_SETTING_IP4_CONFIG_DHCP_ANYCAST "dhcp-anycast-address"
#define NM_SETTING_IP4_CONFIG_METHOD_AUTO "auto"
#define NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL "link-local"
#define NM_SETTING_IP4_CONFIG_METHOD_MANUAL "manual"
#define NM_SETTING_IP4_CONFIG_METHOD_SHARED "shared"
+#define NM_SETTING_IP4_MINIMAL_DHCP_TIMEOUT 10
+#define NM_SETTING_IP4_DEFAULT_DHCP_TIMEOUT 45
+
typedef struct {
guint32 address; /* network byte order */
guint32 prefix;
@@ -84,6 +89,8 @@ typedef struct {
gboolean ignore_dhcp_dns;
char *dhcp_client_id;
char *dhcp_hostname;
+ guint dhcp_timeout;
+ GByteArray *anycast_address; /* Mac address */
} NMSettingIP4Config;
typedef struct {
--
1.5.6.3
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]