diff options
| -rw-r--r-- | src/devices/nm-device-macsec.c | 9 | ||||
| -rw-r--r-- | src/devices/nm-device-macvlan.c | 15 | ||||
| -rw-r--r-- | src/devices/nm-device-tun.c | 25 | ||||
| -rw-r--r-- | src/devices/nm-device-vxlan.c | 70 |
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); } |
