MCPcopy Create free account
hub / github.com/corosync/corosync / confchg_fn

Function confchg_fn

exec/main.c:380–424  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

378}
379
380static void confchg_fn (
381 enum totem_configuration_type configuration_type,
382 const unsigned int *member_list, size_t member_list_entries,
383 const unsigned int *left_list, size_t left_list_entries,
384 const unsigned int *joined_list, size_t joined_list_entries,
385 const struct memb_ring_id *ring_id)
386{
387 int i;
388 int abort_activate = 0;
389
390 if (sync_in_process == 1) {
391 abort_activate = 1;
392 }
393 sync_in_process = 1;
394 cs_ipcs_sync_state_changed(sync_in_process);
395 memcpy (&corosync_ring_id, ring_id, sizeof (struct memb_ring_id));
396
397 for (i = 0; i < left_list_entries; i++) {
398 member_object_left (left_list[i]);
399 }
400 for (i = 0; i < joined_list_entries; i++) {
401 member_object_joined (joined_list[i]);
402 }
403 /*
404 * Call configuration change for all services
405 */
406 for (i = 0; i < service_count; i++) {
407 if (corosync_service[i] && corosync_service[i]->confchg_fn) {
408 corosync_service[i]->confchg_fn (configuration_type,
409 member_list, member_list_entries,
410 left_list, left_list_entries,
411 joined_list, joined_list_entries, ring_id);
412 }
413 }
414
415 if (abort_activate) {
416 sync_abort ();
417 }
418 if (configuration_type == TOTEM_CONFIGURATION_TRANSITIONAL) {
419 sync_save_transitional (member_list, member_list_entries, ring_id);
420 }
421 if (configuration_type == TOTEM_CONFIGURATION_REGULAR) {
422 sync_start (member_list, member_list_entries, ring_id);
423 }
424}
425
426static void priv_drop (void)
427{

Callers

nothing calls this directly

Calls 6

member_object_leftFunction · 0.85
member_object_joinedFunction · 0.85
sync_abortFunction · 0.85
sync_save_transitionalFunction · 0.85
sync_startFunction · 0.85

Tested by

no test coverage detected