+
+static int network_function_change_cb(sr_session_ctx_t *session, const char *module_name, const char *xpath, sr_event_t event, uint32_t request_id, void *private_data) {
+ sr_change_iter_t *it = 0;
+ int rc = SR_ERR_OK;
+ sr_change_oper_t oper;
+ sr_val_t *old_value = 0;
+ sr_val_t *new_value = 0;
+
+ static bool mount_point_addressing_method_set = false;
+
+ if(event == SR_EV_DONE) {
+ rc = sr_get_changes_iter(session, NTS_NETWORK_FUNCTION_SCHEMA_XPATH"//.", &it);
+ if(rc != SR_ERR_OK) {
+ log_error("sr_get_changes_iter failed");
+ return SR_ERR_VALIDATION_FAILED;
+ }
+
+ while((rc = sr_get_change_next(session, it, &oper, &old_value, &new_value)) == SR_ERR_OK) {
+ if(new_value->xpath && (strcmp(new_value->xpath, NTS_NETWORK_FUNCTION_SCHEMA_XPATH"/mount-point-addressing-method") == 0)) {
+ if(mount_point_addressing_method_set == false) {
+ mount_point_addressing_method_set = true;
+ mount_point_addressing_method_default = strdup(new_value->data.string_val);
+ }
+ else {
+ //prevent changing mount_point_addressing_method
+ if(strcmp(new_value->data.string_val, mount_point_addressing_method_default) != 0) {
+ pthread_mutex_lock(&mount_point_addressing_method_lock);
+ mount_point_addressing_method_val = mount_point_addressing_method_default;
+ pthread_mutex_unlock(&mount_point_addressing_method_lock);
+ }
+ }
+ }
+
+ sr_free_val(old_value);
+ sr_free_val(new_value);
+ }
+
+ sr_free_change_iter(it);
+ }
+
+ return SR_ERR_OK;
+}