
iane at sussex
Jul 7, 2006, 6:22 AM
Views: 1715
Permalink
|
I have a wackamole configuration as shown in full below. I have two hosts, two VIFS and two IP addresses in each VIF. I need to start and stop services as IP addresses are acquired and lost. I've written a perl library, with functions onup, ondown, postup and postdown - but the postup and postdown functions do nothing at the moment. My problem is this. When I test wackamole with wackatrl -f and wackatrl -s, the IP addresses come up and down as expected. But, whether I say "wackatrl -f" or "wackatrl -s", BOTH onup() and ondown() get executed. So, my services get started and stopped at the same time. I notice that in config_gram.y, this section appears: | W_RUNDYNAMIC W_STRING W_ACTION_TYPE { char *path = $2.string; if(strstr(path, "::") || !strchr(path, ':')) { #ifdef USE_EMBEDDED_PERL register_perl(path, DLFUNCS_TYPE_ON_UP); ^^^^^^^^^^^^^^^^^^ #else wack_alarm(EXIT, "RunDynamic with perl-style parameter, without embedded perl interpreter"); #endif } else { char *func = strchr(path, ':'); if(func) { *(func++) = '\0'; } register_shared(path, func, $3.number); } } Should that DLFUNCS_TYPE_ON_UP read $3.number instead? Doesn't seem to work well, though. It seems when I do this then my 'on down' script gets called repeatedly - every 5 seconds. -- Ian Eiloart IT Services, University of Sussex # The Spread daemon we are going to connect to. It should be on the local box Spread = 4803 SpreadRetryInterval = 5s # The group name Group = mail1 # Named socket for online control Control = /var/run/wack.it ### Where is our perl library PerlUseLib /opt/local/etc/ ### What is the name of the library PerlUse wackamole ### What is the name of the script RunDynamic wackamole::onup on up RunDynamic wackamole::ondown on down RunDynamic wackamole::postup post up RunDynamic wackamole::postdown post down #RunDynamic wackamole::onup post up ### This is for loading C libraries #RunDynamic funcs:killhup on up # if we expressed a preference, we'd have to maintain more than # one version of this file. There's little to be gained, so we won't bother Prefer none # List all the virtual interfaces (ALL of them) VirtualInterfaces { # every VIF must include an IMAP IP address # to ensure loads are properly balanced for process counts # and should also include MX, MSA, and DNS addresses { en0:139.184.132.85/32 en0:139.184.132.240/32} { en0:139.184.132.84/32 en0:139.184.132.241/32} } # Collect and broadcast the IPs in our ARP table every so often Arp-Cache = 90s # List who we will notify # Here the netblock (/24 or /28) can be deceptive. It is NOT a netmask # for a single IP. It is how one will describe that they want to # notify ALL IPs in a segment. Notify { # Let's notify our router: en0:139.184.132.1/32 en0:139.184.133.255/23 en0:139.184.132.6/32 # Wackamole shares arp-cache across machines, this says to # notify every IP address in the aggregate shared arp-cache. arp-cache } balance { # This field is the maximum number of IP addresses that will move # from one wackamole to another during a round of balancing. AcquisitionsPerRound = all # Time interval in each balancing round. interval = 4s } # How long it takes us to mature mature = 5s _______________________________________________ wackamole-users mailing list wackamole-users[at]lists.backhand.org http://lists.backhand.org/mailman/listinfo/wackamole-users
|