mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 02:30:24 +01:00
libnm: implement "ipv4.dhcp-reject-servers" as direct-strv property
This commit is contained in:
parent
4cd58207c1
commit
8079e8969d
2 changed files with 24 additions and 30 deletions
|
|
@ -5351,8 +5351,10 @@ const char *const *
|
|||
nm_setting_ip_config_get_dhcp_reject_servers(NMSettingIPConfig *setting, guint *out_len)
|
||||
{
|
||||
g_return_val_if_fail(NM_IS_SETTING_IP_CONFIG(setting), NULL);
|
||||
return nm_strvarray_get_strv(&NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->dhcp_reject_servers,
|
||||
out_len);
|
||||
|
||||
return nm_strvarray_get_strv(
|
||||
&NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->dhcp_reject_servers.arr,
|
||||
out_len);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -5367,13 +5369,11 @@ nm_setting_ip_config_get_dhcp_reject_servers(NMSettingIPConfig *setting, guint *
|
|||
void
|
||||
nm_setting_ip_config_add_dhcp_reject_server(NMSettingIPConfig *setting, const char *server)
|
||||
{
|
||||
NMSettingIPConfigPrivate *priv;
|
||||
|
||||
g_return_if_fail(NM_IS_SETTING_IP_CONFIG(setting));
|
||||
g_return_if_fail(server != NULL);
|
||||
priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(setting);
|
||||
g_return_if_fail(server);
|
||||
|
||||
nm_strvarray_ensure_and_add(&priv->dhcp_reject_servers, server);
|
||||
nm_strvarray_ensure_and_add(&NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->dhcp_reject_servers.arr,
|
||||
server);
|
||||
_notify(setting, PROP_DHCP_REJECT_SERVERS);
|
||||
}
|
||||
|
||||
|
|
@ -5392,10 +5392,12 @@ nm_setting_ip_config_remove_dhcp_reject_server(NMSettingIPConfig *setting, guint
|
|||
NMSettingIPConfigPrivate *priv;
|
||||
|
||||
g_return_if_fail(NM_IS_SETTING_IP_CONFIG(setting));
|
||||
priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(setting);
|
||||
g_return_if_fail(priv->dhcp_reject_servers && idx < priv->dhcp_reject_servers->len);
|
||||
|
||||
g_array_remove_index(priv->dhcp_reject_servers, idx);
|
||||
priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(setting);
|
||||
|
||||
g_return_if_fail(idx < nm_g_array_len(priv->dhcp_reject_servers.arr));
|
||||
|
||||
nm_strvarray_remove_index(priv->dhcp_reject_servers.arr, idx);
|
||||
_notify(setting, PROP_DHCP_REJECT_SERVERS);
|
||||
}
|
||||
|
||||
|
|
@ -5410,15 +5412,10 @@ nm_setting_ip_config_remove_dhcp_reject_server(NMSettingIPConfig *setting, guint
|
|||
void
|
||||
nm_setting_ip_config_clear_dhcp_reject_servers(NMSettingIPConfig *setting)
|
||||
{
|
||||
NMSettingIPConfigPrivate *priv;
|
||||
|
||||
g_return_if_fail(NM_IS_SETTING_IP_CONFIG(setting));
|
||||
|
||||
priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(setting);
|
||||
if (nm_g_array_len(priv->dhcp_reject_servers) != 0) {
|
||||
nm_clear_pointer(&priv->dhcp_reject_servers, g_array_unref);
|
||||
if (nm_strvarray_clear(&NM_SETTING_IP_CONFIG_GET_PRIVATE(setting)->dhcp_reject_servers.arr))
|
||||
_notify(setting, PROP_DHCP_REJECT_SERVERS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -5708,7 +5705,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
|
|||
}
|
||||
|
||||
/* Validate reject servers */
|
||||
if (priv->dhcp_reject_servers && priv->dhcp_reject_servers->len != 0) {
|
||||
if (priv->dhcp_reject_servers.arr && priv->dhcp_reject_servers.arr->len > 0) {
|
||||
if (NM_SETTING_IP_CONFIG_GET_ADDR_FAMILY(setting) != AF_INET) {
|
||||
g_set_error_literal(error,
|
||||
NM_CONNECTION_ERROR,
|
||||
|
|
@ -5721,17 +5718,17 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < priv->dhcp_reject_servers->len; i++) {
|
||||
for (i = 0; i < priv->dhcp_reject_servers.arr->len; i++) {
|
||||
if (!nm_inet_parse_with_prefix_str(
|
||||
NM_SETTING_IP_CONFIG_GET_ADDR_FAMILY(setting),
|
||||
nm_g_array_index(priv->dhcp_reject_servers, const char *, i),
|
||||
nm_g_array_index(priv->dhcp_reject_servers.arr, const char *, i),
|
||||
NULL,
|
||||
NULL)) {
|
||||
g_set_error(error,
|
||||
NM_CONNECTION_ERROR,
|
||||
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
||||
_("'%s' is not a valid IP or subnet"),
|
||||
nm_g_array_index(priv->dhcp_reject_servers, const char *, i));
|
||||
nm_g_array_index(priv->dhcp_reject_servers.arr, const char *, i));
|
||||
g_prefix_error(error,
|
||||
"%s.%s: ",
|
||||
nm_setting_get_name(setting),
|
||||
|
|
@ -6133,7 +6130,11 @@ _nm_sett_info_property_override_create_array_ip_config(int addr_family)
|
|||
|
||||
_nm_properties_override_gobj(properties_override,
|
||||
obj_properties[PROP_DHCP_REJECT_SERVERS],
|
||||
&nm_sett_info_propert_type_gprop_strv_oldstyle);
|
||||
&nm_sett_info_propert_type_direct_strv,
|
||||
.direct_offset =
|
||||
NM_STRUCT_OFFSET_ENSURE_TYPE(NMValueStrv,
|
||||
NMSettingIPConfigPrivate,
|
||||
dhcp_reject_servers));
|
||||
|
||||
return properties_override;
|
||||
}
|
||||
|
|
@ -6167,9 +6168,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
|||
(NMUtilsCopyFunc) nm_ip_route_dup,
|
||||
(GDestroyNotify) nm_ip_route_unref));
|
||||
break;
|
||||
case PROP_DHCP_REJECT_SERVERS:
|
||||
g_value_set_boxed(value, nm_strvarray_get_strv_non_empty(priv->dhcp_reject_servers, NULL));
|
||||
break;
|
||||
default:
|
||||
_nm_setting_property_get_property_direct(object, prop_id, value, pspec);
|
||||
break;
|
||||
|
|
@ -6228,9 +6226,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
|
|||
(NMUtilsCopyFunc) nm_ip_route_dup,
|
||||
(GDestroyNotify) nm_ip_route_unref);
|
||||
break;
|
||||
case PROP_DHCP_REJECT_SERVERS:
|
||||
nm_strvarray_set_strv(&priv->dhcp_reject_servers, g_value_get_boxed(value));
|
||||
break;
|
||||
default:
|
||||
_nm_setting_property_set_property_direct(object, prop_id, value, pspec);
|
||||
break;
|
||||
|
|
@ -6265,7 +6260,6 @@ finalize(GObject *object)
|
|||
g_ptr_array_unref(priv->addresses);
|
||||
g_ptr_array_unref(priv->routes);
|
||||
nm_g_ptr_array_unref(priv->routing_rules);
|
||||
nm_g_array_unref(priv->dhcp_reject_servers);
|
||||
|
||||
G_OBJECT_CLASS(nm_setting_ip_config_parent_class)->finalize(object);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,13 +174,13 @@ struct _NMSettingIPConfigClass {
|
|||
};
|
||||
|
||||
typedef struct {
|
||||
NMValueStrv dns_search; /* array of domain name strings */
|
||||
NMValueStrv dns_search; /* array of domain name strings */
|
||||
NMValueStrv dhcp_reject_servers;
|
||||
GPtrArray *dns; /* array of IP address strings */
|
||||
GPtrArray *dns_options; /* array of DNS options */
|
||||
GPtrArray *addresses; /* array of NMIPAddress */
|
||||
GPtrArray *routes; /* array of NMIPRoute */
|
||||
GPtrArray *routing_rules;
|
||||
GArray *dhcp_reject_servers;
|
||||
char *method;
|
||||
char *gateway;
|
||||
char *dhcp_hostname;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue