device: merge branch 'th/device-cleanup-addr-family'

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/665
This commit is contained in:
Thomas Haller
2020-11-01 16:47:14 +01:00
12 changed files with 338 additions and 443 deletions

View File

@@ -57,16 +57,12 @@ typedef enum { /*< skip >*/
/* aliases: */ /* aliases: */
LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6, LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6,
LOGD_IP = LOGD_IP4 | LOGD_IP6, LOGD_IP = LOGD_IP4 | LOGD_IP6,
#define LOGD_DHCPX(is_ipv4) ((is_ipv4) ? LOGD_DHCP4 : LOGD_DHCP6)
#define LOGD_IPX(is_ipv4) ((is_ipv4) ? LOGD_IP4 : LOGD_IP6)
} NMLogDomain; } NMLogDomain;
static inline NMLogDomain
LOGD_DHCP_from_addr_family(int addr_family)
{
nm_assert_addr_family(addr_family);
return addr_family == AF_INET6 ? LOGD_DHCP6 : LOGD_DHCP4;
}
/* Log levels */ /* Log levels */
typedef enum { /*< skip >*/ typedef enum { /*< skip >*/
LOGL_TRACE, LOGL_TRACE,

View File

@@ -152,7 +152,7 @@ nm_utils_get_ip_config_method(NMConnection *connection, int addr_family)
s_con = nm_connection_get_setting_connection(connection); s_con = nm_connection_get_setting_connection(connection);
if (addr_family == AF_INET) { if (NM_IS_IPv4(addr_family)) {
g_return_val_if_fail(s_con != NULL, NM_SETTING_IP4_CONFIG_METHOD_AUTO); g_return_val_if_fail(s_con != NULL, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
s_ip = nm_connection_get_setting_ip4_config(connection); s_ip = nm_connection_get_setting_ip4_config(connection);
@@ -164,7 +164,6 @@ nm_utils_get_ip_config_method(NMConnection *connection, int addr_family)
return method; return method;
} }
if (addr_family == AF_INET6) {
g_return_val_if_fail(s_con != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO); g_return_val_if_fail(s_con != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
s_ip = nm_connection_get_setting_ip6_config(connection); s_ip = nm_connection_get_setting_ip6_config(connection);
@@ -174,9 +173,6 @@ nm_utils_get_ip_config_method(NMConnection *connection, int addr_family)
method = nm_setting_ip_config_get_method(s_ip); method = nm_setting_ip_config_get_method(s_ip);
g_return_val_if_fail(method != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO); g_return_val_if_fail(method != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
return method; return method;
}
g_return_val_if_reached("" /* bogus */);
} }
gboolean gboolean
@@ -204,7 +200,7 @@ nm_utils_connection_has_default_route(NMConnection *connection,
} }
method = nm_utils_get_ip_config_method(connection, addr_family); method = nm_utils_get_ip_config_method(connection, addr_family);
if (addr_family == AF_INET) { if (NM_IS_IPv4(addr_family)) {
if (NM_IN_STRSET(method, if (NM_IN_STRSET(method,
NM_SETTING_IP4_CONFIG_METHOD_DISABLED, NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL)) NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL))
@@ -1312,7 +1308,7 @@ nm_utils_ip_route_attribute_to_platform(int addr_family,
else else
r->table_coerced = nm_platform_route_table_coerce(table ?: (route_table ?: RT_TABLE_MAIN)); r->table_coerced = nm_platform_route_table_coerce(table ?: (route_table ?: RT_TABLE_MAIN));
if (addr_family == AF_INET) { if (NM_IS_IPv4(addr_family)) {
guint8 scope; guint8 scope;
GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_TOS, r4->tos, BYTE, byte, 0); GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_TOS, r4->tos, BYTE, byte, 0);
@@ -1338,14 +1334,14 @@ nm_utils_ip_route_attribute_to_platform(int addr_family,
if ((variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_SRC)) if ((variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_SRC))
&& g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) { && g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
if (inet_pton(addr_family, g_variant_get_string(variant, NULL), &addr) == 1) { if (inet_pton(addr_family, g_variant_get_string(variant, NULL), &addr) == 1) {
if (addr_family == AF_INET) if (NM_IS_IPv4(addr_family))
r4->pref_src = addr.addr4; r4->pref_src = addr.addr4;
else else
r6->pref_src = addr.addr6; r6->pref_src = addr.addr6;
} }
} }
if (addr_family == AF_INET6 if (!NM_IS_IPv4(addr_family)
&& (variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_FROM)) && (variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_FROM))
&& g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) { && g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
int prefix; int prefix;
@@ -1392,7 +1388,7 @@ nm_utils_ip_addresses_to_dbus(int addr_family,
GVariant ** out_address_data, GVariant ** out_address_data,
GVariant ** out_addresses) GVariant ** out_addresses)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
GVariantBuilder builder_data; GVariantBuilder builder_data;
GVariantBuilder builder_legacy; GVariantBuilder builder_legacy;
char addr_str[NM_UTILS_INET_ADDRSTRLEN]; char addr_str[NM_UTILS_INET_ADDRSTRLEN];
@@ -1516,7 +1512,7 @@ nm_utils_ip_routes_to_dbus(int addr_family,
GVariant ** out_route_data, GVariant ** out_route_data,
GVariant ** out_routes) GVariant ** out_routes)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDedupMultiIter iter; NMDedupMultiIter iter;
const NMPObject *obj; const NMPObject *obj;
GVariantBuilder builder_data; GVariantBuilder builder_data;

View File

@@ -54,17 +54,7 @@ gboolean nm_device_set_ip_iface(NMDevice *self, const char *iface);
void nm_device_activate_schedule_stage3_ip_config_start(NMDevice *device); void nm_device_activate_schedule_stage3_ip_config_start(NMDevice *device);
gboolean nm_device_activate_stage3_ip4_start(NMDevice *self); gboolean nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family);
gboolean nm_device_activate_stage3_ip6_start(NMDevice *self);
static inline gboolean
nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family)
{
if (NM_IS_IPv4(addr_family))
return nm_device_activate_stage3_ip4_start(self);
return nm_device_activate_stage3_ip6_start(self);
}
gboolean nm_device_bring_up(NMDevice *self, gboolean wait, gboolean *no_firmware); gboolean nm_device_bring_up(NMDevice *self, gboolean wait, gboolean *no_firmware);

File diff suppressed because it is too large Load Diff

View File

@@ -209,7 +209,7 @@ nm_utils_ip6_route_metric_normalize(guint32 metric)
static inline guint32 static inline guint32
nm_utils_ip_route_metric_normalize(int addr_family, guint32 metric) nm_utils_ip_route_metric_normalize(int addr_family, guint32 metric)
{ {
return addr_family == AF_INET6 ? nm_utils_ip6_route_metric_normalize(metric) : metric; return NM_IS_IPv4(addr_family) ? metric : nm_utils_ip6_route_metric_normalize(metric);
} }
static inline guint32 static inline guint32

View File

@@ -587,9 +587,7 @@ _route_valid_6(const NMPlatformIP6Route *r)
static gboolean static gboolean
_route_valid(int addr_family, gconstpointer r) _route_valid(int addr_family, gconstpointer r)
{ {
nm_assert_addr_family(addr_family); return NM_IS_IPv4(addr_family) ? _route_valid_4(r) : _route_valid_6(r);
return addr_family == AF_INET ? _route_valid_4(r) : _route_valid_6(r);
} }
static gboolean static gboolean
@@ -1204,8 +1202,7 @@ nm_l3_config_data_add_address_full(NML3ConfigData * self,
nm_assert(!obj_new || NMP_OBJECT_GET_ADDR_FAMILY(obj_new) == addr_family); nm_assert(!obj_new || NMP_OBJECT_GET_ADDR_FAMILY(obj_new) == addr_family);
changed = _l3_config_data_add_obj(self->multi_idx, changed = _l3_config_data_add_obj(self->multi_idx,
addr_family == AF_INET ? &self->idx_addresses_4 &self->idx_addresses_x[NM_IS_IPv4(addr_family)],
: &self->idx_addresses_6,
self->ifindex, self->ifindex,
obj_new, obj_new,
(const NMPlatformObject *) pl_new, (const NMPlatformObject *) pl_new,
@@ -1252,7 +1249,7 @@ nm_l3_config_data_add_route_full(NML3ConfigData * self,
else else
self->has_routes_with_type_local_6_set = FALSE; self->has_routes_with_type_local_6_set = FALSE;
if (_l3_config_data_add_obj(self->multi_idx, if (_l3_config_data_add_obj(self->multi_idx,
addr_family == AF_INET ? &self->idx_routes_4 : &self->idx_routes_6, &self->idx_routes_x[NM_IS_IPv4(addr_family)],
self->ifindex, self->ifindex,
obj_new, obj_new,
(const NMPlatformObject *) pl_new, (const NMPlatformObject *) pl_new,

View File

@@ -223,21 +223,13 @@ const NMDedupMultiHeadEntry *nm_l3_config_data_lookup_objs(const NML3ConfigData
static inline const NMDedupMultiHeadEntry * static inline const NMDedupMultiHeadEntry *
nm_l3_config_data_lookup_addresses(const NML3ConfigData *self, int addr_family) nm_l3_config_data_lookup_addresses(const NML3ConfigData *self, int addr_family)
{ {
nm_assert_addr_family(addr_family); return nm_l3_config_data_lookup_objs(self, NMP_OBJECT_TYPE_IP_ADDRESS(NM_IS_IPv4(addr_family)));
return nm_l3_config_data_lookup_objs(self,
addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ADDRESS
: NMP_OBJECT_TYPE_IP6_ADDRESS);
} }
static inline const NMDedupMultiHeadEntry * static inline const NMDedupMultiHeadEntry *
nm_l3_config_data_lookup_routes(const NML3ConfigData *self, int addr_family) nm_l3_config_data_lookup_routes(const NML3ConfigData *self, int addr_family)
{ {
nm_assert_addr_family(addr_family); return nm_l3_config_data_lookup_objs(self, NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)));
return nm_l3_config_data_lookup_objs(self,
addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ROUTE
: NMP_OBJECT_TYPE_IP6_ROUTE);
} }
#define nm_l3_config_data_iter_obj_for_each(iter, self, obj, type) \ #define nm_l3_config_data_iter_obj_for_each(iter, self, obj, type) \

View File

@@ -637,7 +637,7 @@ _l3cfg_externally_removed_objs_track(NML3Cfg *self, const NMPObject *obj, gboole
static void static void
_l3cfg_externally_removed_objs_pickup(NML3Cfg *self, int addr_family) _l3cfg_externally_removed_objs_pickup(NML3Cfg *self, int addr_family)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDedupMultiIter iter; NMDedupMultiIter iter;
const NMPObject *obj; const NMPObject *obj;
@@ -3233,7 +3233,7 @@ _l3_commit_one(NML3Cfg * self,
gboolean changed_combined_l3cd, gboolean changed_combined_l3cd,
const NML3ConfigData *l3cd_old) const NML3ConfigData *l3cd_old)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
gs_unref_ptrarray GPtrArray *addresses = NULL; gs_unref_ptrarray GPtrArray *addresses = NULL;
gs_unref_ptrarray GPtrArray *routes = NULL; gs_unref_ptrarray GPtrArray *routes = NULL;
gs_unref_ptrarray GPtrArray *addresses_prune = NULL; gs_unref_ptrarray GPtrArray *addresses_prune = NULL;

View File

@@ -17,18 +17,6 @@
#define NM_LOG_CONFIG_BACKEND_SYSLOG "syslog" #define NM_LOG_CONFIG_BACKEND_SYSLOG "syslog"
#define NM_LOG_CONFIG_BACKEND_JOURNAL "journal" #define NM_LOG_CONFIG_BACKEND_JOURNAL "journal"
static inline NMLogDomain
LOGD_IP_from_af(int addr_family)
{
switch (addr_family) {
case AF_INET:
return LOGD_IP4;
case AF_INET6:
return LOGD_IP6;
}
g_return_val_if_reached(LOGD_NONE);
}
#define nm_log_err(domain, ...) nm_log(LOGL_ERR, (domain), NULL, NULL, __VA_ARGS__) #define nm_log_err(domain, ...) nm_log(LOGL_ERR, (domain), NULL, NULL, __VA_ARGS__)
#define nm_log_warn(domain, ...) nm_log(LOGL_WARN, (domain), NULL, NULL, __VA_ARGS__) #define nm_log_warn(domain, ...) nm_log(LOGL_WARN, (domain), NULL, NULL, __VA_ARGS__)
#define nm_log_info(domain, ...) nm_log(LOGL_INFO, (domain), NULL, NULL, __VA_ARGS__) #define nm_log_info(domain, ...) nm_log(LOGL_INFO, (domain), NULL, NULL, __VA_ARGS__)

View File

@@ -3740,7 +3740,7 @@ _addr_array_clean_expired(int addr_family,
} }
#endif #endif
if (addr_family == AF_INET6 && NM_FLAGS_HAS(a->n_ifa_flags, IFA_F_TEMPORARY)) { if (!NM_IS_IPv4(addr_family) && NM_FLAGS_HAS(a->n_ifa_flags, IFA_F_TEMPORARY)) {
/* temporary addresses are never added explicitly by NetworkManager but /* temporary addresses are never added explicitly by NetworkManager but
* kernel adds them via mngtempaddr flag. * kernel adds them via mngtempaddr flag.
* *
@@ -3981,7 +3981,7 @@ nm_platform_ip_address_sync(NMPlatform *self,
GPtrArray * addresses_prune) GPtrArray * addresses_prune)
{ {
const gint32 now = nm_utils_get_monotonic_timestamp_sec(); const gint32 now = nm_utils_get_monotonic_timestamp_sec();
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
gs_unref_hashtable GHashTable *known_addresses_idx = NULL; gs_unref_hashtable GHashTable *known_addresses_idx = NULL;
GPtrArray * plat_addresses; GPtrArray * plat_addresses;
GHashTable * known_subnets = NULL; GHashTable * known_subnets = NULL;
@@ -4330,7 +4330,7 @@ nm_platform_ip_address_get_prune_list(NMPlatform *self,
int ifindex, int ifindex,
gboolean exclude_ipv6_temporary_addrs) gboolean exclude_ipv6_temporary_addrs)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMDedupMultiHeadEntry *head_entry; const NMDedupMultiHeadEntry *head_entry;
NMPLookup lookup; NMPLookup lookup;
GPtrArray * result; GPtrArray * result;
@@ -4382,10 +4382,7 @@ nm_platform_ip_route_get_prune_list(NMPlatform * self,
NM_IP_ROUTE_TABLE_SYNC_MODE_FULL, NM_IP_ROUTE_TABLE_SYNC_MODE_FULL,
NM_IP_ROUTE_TABLE_SYNC_MODE_ALL)); NM_IP_ROUTE_TABLE_SYNC_MODE_ALL));
nmp_lookup_init_object(&lookup, nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)), ifindex);
addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ROUTE
: NMP_OBJECT_TYPE_IP6_ROUTE,
ifindex);
head_entry = nm_platform_lookup(self, &lookup); head_entry = nm_platform_lookup(self, &lookup);
if (!head_entry) if (!head_entry)
return NULL; return NULL;
@@ -4441,6 +4438,7 @@ nm_platform_ip_route_sync(NMPlatform *self,
GPtrArray * routes_prune, GPtrArray * routes_prune,
GPtrArray **out_temporary_not_available) GPtrArray **out_temporary_not_available)
{ {
const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMPlatformVTableRoute *vt; const NMPlatformVTableRoute *vt;
gs_unref_hashtable GHashTable *routes_idx = NULL; gs_unref_hashtable GHashTable *routes_idx = NULL;
const NMPObject * conf_o; const NMPObject * conf_o;
@@ -4450,10 +4448,8 @@ nm_platform_ip_route_sync(NMPlatform *self,
gboolean success = TRUE; gboolean success = TRUE;
char sbuf1[sizeof(_nm_utils_to_string_buffer)]; char sbuf1[sizeof(_nm_utils_to_string_buffer)];
char sbuf2[sizeof(_nm_utils_to_string_buffer)]; char sbuf2[sizeof(_nm_utils_to_string_buffer)];
const gboolean IS_IPv4 = (addr_family == AF_INET);
nm_assert(NM_IS_PLATFORM(self)); nm_assert(NM_IS_PLATFORM(self));
nm_assert(NM_IN_SET(addr_family, AF_INET, AF_INET6));
nm_assert(ifindex > 0); nm_assert(ifindex > 0);
vt = &nm_platform_vtable_route.vx[IS_IPv4]; vt = &nm_platform_vtable_route.vx[IS_IPv4];
@@ -4665,9 +4661,9 @@ sync_route_add:
prune_o = routes_prune->pdata[i]; prune_o = routes_prune->pdata[i];
nm_assert((addr_family == AF_INET nm_assert((NM_IS_IPv4(addr_family)
&& NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP4_ROUTE) && NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP4_ROUTE)
|| (addr_family == AF_INET6 || (!NM_IS_IPv4(addr_family)
&& NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP6_ROUTE)); && NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP6_ROUTE));
if (routes_idx && g_hash_table_lookup(routes_idx, prune_o)) if (routes_idx && g_hash_table_lookup(routes_idx, prune_o))
@@ -4810,7 +4806,7 @@ _ip_route_add(NMPlatform *self, NMPNlmFlags flags, int addr_family, gconstpointe
_LOG3D("route: %-10s IPv%c route: %s", _LOG3D("route: %-10s IPv%c route: %s",
_nmp_nlm_flag_to_string(flags & NMP_NLM_FLAG_FMASK), _nmp_nlm_flag_to_string(flags & NMP_NLM_FLAG_FMASK),
nm_utils_addr_family_to_char(addr_family), nm_utils_addr_family_to_char(addr_family),
addr_family == AF_INET ? nm_platform_ip4_route_to_string(route, sbuf, sizeof(sbuf)) NM_IS_IPv4(addr_family) ? nm_platform_ip4_route_to_string(route, sbuf, sizeof(sbuf))
: nm_platform_ip6_route_to_string(route, sbuf, sizeof(sbuf))); : nm_platform_ip6_route_to_string(route, sbuf, sizeof(sbuf)));
return klass->ip_route_add(self, flags, addr_family, route); return klass->ip_route_add(self, flags, addr_family, route);

View File

@@ -89,7 +89,7 @@ nmtstp_platform_ip6_address_get_all(NMPlatform *self, int ifindex)
const NMPlatformIPAddress * const NMPlatformIPAddress *
nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family, gconstpointer addr) nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family, gconstpointer addr)
{ {
const gboolean IS_IPv4 = NM_IS_IPv4(addr_family); const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMPlatformIPAddress *found = NULL; const NMPlatformIPAddress *found = NULL;
NMDedupMultiIter iter; NMDedupMultiIter iter;
const NMPObject * obj; const NMPObject * obj;

View File

@@ -18,8 +18,8 @@ get_missing_options()
get_src_con_defaults() get_src_con_defaults()
{ {
sed -ne 's/.*\<NM_CON_DEFAULT\s*("\([^"]*\)").*/\1/p' $(find "$srcdir/src/" -name \*.c ! -name test\*.c) sed -n 's/\<NM_CON_DEFAULT/\n\0/gp' $(find "$srcdir/src/" -name \*.c ! -name test\*.c) |
sed -ne 's/.*\<NM_CON_DEFAULT_NOP\s*("\([^"]*\)").*/\1/p' $(find "$srcdir/src/" -name \*.c ! -name test\*.c) sed -n 's/.*\<NM_CON_DEFAULT\(_NOP\)\?\s*("\([^"]*\)").*/\2/p'
} }
get_man_con_defaults() get_man_con_defaults()