#include #include #include #include #define NIPQUAD(addr) \ (u_char)((addr)->sin_addr.s_addr), \ (u_char)((addr)->sin_addr.s_addr >> 8), \ (u_char)((addr)->sin_addr.s_addr >> 16), \ (u_char)((addr)->sin_addr.s_addr >> 24) int main(int argc, char* argv[]) { int omega_int; struct omega_proc_struct leader; if ((omega_int = omega_register(1)) < 0) { printf("Impossible to register\n"); exit(-1); } if (omega_startOmega(omega_int, 1, CANDIDATE, OMEGA_INTERRUPT_ANY_CHANGE, 1000, 1000, 8640000) < 0) printf("start omega failed\n"); while(1) { if (omega_parse_notify(omega_int, &leader) < 0) printf("Error while parsing notify\n"); else { printf("leader for group: %u is pid: %u address: %u.%u.%u.%u\n", leader.gid, leader.pid, NIPQUAD(&(leader.addr))); } } }