summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/devices/nm-device-macsec.c9
-rw-r--r--src/devices/nm-device-macvlan.c15
-rw-r--r--src/devices/nm-device-tun.c25
-rw-r--r--src/devices/nm-device-vxlan.c70
4 files changed, 63 insertions, 56 deletions
diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c
index 8b51f8ce60..554238a320 100644
--- a/src/devices/nm-device-macsec.c
+++ b/src/devices/nm-device-macsec.c
@@ -186,8 +186,12 @@ update_properties (NMDevice *device)
nm_device_parent_set_ifindex (device, props->parent_ifindex);
#define CHECK_PROPERTY_CHANGED(field, prop) \
- if (props->field != priv->props.field) \
- _notify (self, prop)
+ G_STMT_START { \
+ if (priv->props.field != props->field) { \
+ priv->props.field = props->field; \
+ _notify (self, prop); \
+ } \
+ } G_STMT_END
CHECK_PROPERTY_CHANGED (sci, PROP_SCI);
CHECK_PROPERTY_CHANGED (cipher_suite, PROP_CIPHER_SUITE);
@@ -202,7 +206,6 @@ update_properties (NMDevice *device)
CHECK_PROPERTY_CHANGED (scb, PROP_SCB);
CHECK_PROPERTY_CHANGED (replay_protect, PROP_REPLAY_PROTECT);
- priv->props = *props;
g_object_thaw_notify ((GObject *) device);
}
diff --git a/src/devices/nm-device-macvlan.c b/src/devices/nm-device-macvlan.c
index 2a461543b0..a336012909 100644
--- a/src/devices/nm-device-macvlan.c
+++ b/src/devices/nm-device-macvlan.c
@@ -197,12 +197,17 @@ update_properties (NMDevice *device)
g_object_freeze_notify (object);
nm_device_parent_set_ifindex (device, plink->parent);
- if (priv->props.mode != props->mode)
- _notify (self, PROP_MODE);
- if (priv->props.no_promisc != props->no_promisc)
- _notify (self, PROP_NO_PROMISC);
- priv->props = *props;
+#define CHECK_PROPERTY_CHANGED(field, prop) \
+ G_STMT_START { \
+ if (priv->props.field != props->field) { \
+ priv->props.field = props->field; \
+ _notify (self, prop); \
+ } \
+ } G_STMT_END
+
+ CHECK_PROPERTY_CHANGED (mode, PROP_MODE);
+ CHECK_PROPERTY_CHANGED (no_promisc, PROP_NO_PROMISC);
g_object_thaw_notify (object);
}
diff --git a/src/devices/nm-device-tun.c b/src/devices/nm-device-tun.c
index a7d7c0bf19..fa837c4b6e 100644
--- a/src/devices/nm-device-tun.c
+++ b/src/devices/nm-device-tun.c
@@ -99,18 +99,19 @@ update_properties (NMDeviceTun *self)
g_object_freeze_notify (object);
- if (priv->props.owner != props.owner)
- _notify (self, PROP_OWNER);
- if (priv->props.group != props.group)
- _notify (self, PROP_GROUP);
- if (priv->props.no_pi != props.no_pi)
- _notify (self, PROP_NO_PI);
- if (priv->props.vnet_hdr != props.vnet_hdr)
- _notify (self, PROP_VNET_HDR);
- if (priv->props.multi_queue != props.multi_queue)
- _notify (self, PROP_MULTI_QUEUE);
-
- memcpy (&priv->props, &props, sizeof (NMPlatformTunProperties));
+#define CHECK_PROPERTY_CHANGED(field, prop) \
+ G_STMT_START { \
+ if (priv->props.field != props.field) { \
+ priv->props.field = props.field; \
+ _notify (self, prop); \
+ } \
+ } G_STMT_END
+
+ CHECK_PROPERTY_CHANGED (owner, PROP_OWNER);
+ CHECK_PROPERTY_CHANGED (group, PROP_GROUP);
+ CHECK_PROPERTY_CHANGED (no_pi, PROP_NO_PI);
+ CHECK_PROPERTY_CHANGED (vnet_hdr, PROP_VNET_HDR);
+ CHECK_PROPERTY_CHANGED (multi_queue, PROP_MULTI_QUEUE);
g_object_thaw_notify (object);
}
diff --git a/src/devices/nm-device-vxlan.c b/src/devices/nm-device-vxlan.c
index d9efe8404b..e09c7fbbbd 100644
--- a/src/devices/nm-device-vxlan.c
+++ b/src/devices/nm-device-vxlan.c
@@ -97,42 +97,40 @@ update_properties (NMDevice *device)
if (priv->props.parent_ifindex != props->parent_ifindex)
nm_device_parent_set_ifindex (device, props->parent_ifindex);
- if (priv->props.id != props->id)
- _notify (self, PROP_ID);
- if (priv->props.local != props->local)
- _notify (self, PROP_LOCAL);
- if (memcmp (&priv->props.local6, &props->local6, sizeof (props->local6)) != 0)
- _notify (self, PROP_LOCAL);
- if (priv->props.group != props->group)
- _notify (self, PROP_GROUP);
- if (memcmp (&priv->props.group6, &props->group6, sizeof (props->group6)) != 0)
- _notify (self, PROP_GROUP);
- if (priv->props.tos != props->tos)
- _notify (self, PROP_TOS);
- if (priv->props.ttl != props->ttl)
- _notify (self, PROP_TTL);
- if (priv->props.learning != props->learning)
- _notify (self, PROP_LEARNING);
- if (priv->props.ageing != props->ageing)
- _notify (self, PROP_AGEING);
- if (priv->props.limit != props->limit)
- _notify (self, PROP_LIMIT);
- if (priv->props.src_port_min != props->src_port_min)
- _notify (self, PROP_SRC_PORT_MIN);
- if (priv->props.src_port_max != props->src_port_max)
- _notify (self, PROP_SRC_PORT_MAX);
- if (priv->props.dst_port != props->dst_port)
- _notify (self, PROP_DST_PORT);
- if (priv->props.proxy != props->proxy)
- _notify (self, PROP_PROXY);
- if (priv->props.rsc != props->rsc)
- _notify (self, PROP_RSC);
- if (priv->props.l2miss != props->l2miss)
- _notify (self, PROP_L2MISS);
- if (priv->props.l3miss != props->l3miss)
- _notify (self, PROP_L3MISS);
-
- priv->props = *props;
+
+#define CHECK_PROPERTY_CHANGED(field, prop) \
+ G_STMT_START { \
+ if (priv->props.field != props->field) { \
+ priv->props.field = props->field; \
+ _notify (self, prop); \
+ } \
+ } G_STMT_END
+
+#define CHECK_PROPERTY_CHANGED_IN6ADDR(field, prop) \
+ G_STMT_START { \
+ if (memcmp (&priv->props.field, &props->field, sizeof (props->field)) != 0) { \
+ priv->props.field = props->field; \
+ _notify (self, prop); \
+ } \
+ } G_STMT_END
+
+ CHECK_PROPERTY_CHANGED (id, PROP_ID);
+ CHECK_PROPERTY_CHANGED (local, PROP_LOCAL);
+ CHECK_PROPERTY_CHANGED_IN6ADDR (local6, PROP_LOCAL);
+ CHECK_PROPERTY_CHANGED (group, PROP_GROUP);
+ CHECK_PROPERTY_CHANGED_IN6ADDR (group6, PROP_GROUP);
+ CHECK_PROPERTY_CHANGED (tos, PROP_TOS);
+ CHECK_PROPERTY_CHANGED (ttl, PROP_TTL);
+ CHECK_PROPERTY_CHANGED (learning, PROP_LEARNING);
+ CHECK_PROPERTY_CHANGED (ageing, PROP_AGEING);
+ CHECK_PROPERTY_CHANGED (limit, PROP_LIMIT);
+ CHECK_PROPERTY_CHANGED (src_port_min, PROP_SRC_PORT_MIN);
+ CHECK_PROPERTY_CHANGED (src_port_max, PROP_SRC_PORT_MAX);
+ CHECK_PROPERTY_CHANGED (dst_port, PROP_DST_PORT);
+ CHECK_PROPERTY_CHANGED (proxy, PROP_PROXY);
+ CHECK_PROPERTY_CHANGED (rsc, PROP_RSC);
+ CHECK_PROPERTY_CHANGED (l2miss, PROP_L2MISS);
+ CHECK_PROPERTY_CHANGED (l3miss, PROP_L3MISS);
g_object_thaw_notify (object);
}