+ bool reload = false, reload_ip = false, reload_assignment = false;
+
+#define FIELD_CHANGED_STR(field) \
+ ((!!if_old->field != !!if_new->field) || \
+ (if_old->field && \
+ strcmp(if_old->field, if_new->field) != 0))
+
+ if (FIELD_CHANGED_STR(parent_ifname)) {
+ if (if_old->parent_iface.iface)
+ interface_remove_user(&if_old->parent_iface);
+ reload = true;
+ }
+
+ if (FIELD_CHANGED_STR(ifname) ||
+ if_old->proto_handler != if_new->proto_handler)
+ reload = true;
+
+ if (!if_old->proto_handler->config_params)
+ D(INTERFACE, "No config parameters for interface '%s'\n",
+ if_old->name);
+ else if (!config_check_equal(if_old->config, if_new->config,
+ if_old->proto_handler->config_params))
+ reload = true;
+
+#define UPDATE(field, __var) ({ \
+ bool __changed = (if_old->field != if_new->field); \
+ if_old->field = if_new->field; \
+ __var |= __changed; \
+ })