Replaces in_segment() by a more generic get_segment() function

This commit is contained in:
Martin Willi
2010-07-26 11:33:00 +02:00
parent ad2488fcdf
commit 2cbc48ecab
3 changed files with 13 additions and 17 deletions
+5 -8
View File
@@ -51,8 +51,8 @@ struct private_ha_kernel_t {
u_int count; u_int count;
}; };
METHOD(ha_kernel_t, in_segment, bool, METHOD(ha_kernel_t, get_segment, u_int,
private_ha_kernel_t *this, host_t *host, u_int segment) private_ha_kernel_t *this, host_t *host)
{ {
if (host->get_family(host) == AF_INET) if (host->get_family(host) == AF_INET)
{ {
@@ -62,12 +62,9 @@ METHOD(ha_kernel_t, in_segment, bool,
addr = *(u_int32_t*)host->get_address(host).ptr; addr = *(u_int32_t*)host->get_address(host).ptr;
hash = jhash_1word(ntohl(addr), this->initval); hash = jhash_1word(ntohl(addr), this->initval);
if ((((u_int64_t)hash * this->count) >> 32) + 1 == segment) return (((u_int64_t)hash * this->count) >> 32) + 1;
{
return TRUE;
}
} }
return FALSE; return 0;
} }
/** /**
@@ -208,7 +205,7 @@ ha_kernel_t *ha_kernel_create(u_int count)
INIT(this, INIT(this,
.public = { .public = {
.in_segment = _in_segment, .get_segment = _get_segment,
.activate = _activate, .activate = _activate,
.deactivate = _deactivate, .deactivate = _deactivate,
.destroy = _destroy, .destroy = _destroy,
+4 -5
View File
@@ -31,13 +31,12 @@ typedef struct ha_kernel_t ha_kernel_t;
struct ha_kernel_t { struct ha_kernel_t {
/** /**
* Check if a host is in a segment. * Get the segment a host is in.
* *
* @param host host to check * @param host host to get segment for
* @param segment segment * @return segment number
* @return TRUE if host belongs to segment
*/ */
bool (*in_segment)(ha_kernel_t *this, host_t *host, u_int segment); u_int (*get_segment)(ha_kernel_t *this, host_t *host);
/** /**
* Activate a segment at kernel level for all cluster addresses. * Activate a segment at kernel level for all cluster addresses.
+4 -4
View File
@@ -168,8 +168,8 @@ static void enable_disable(private_ha_segments_t *this, u_int segment,
{ {
continue; continue;
} }
if (this->kernel->in_segment(this->kernel, if (this->kernel->get_segment(this->kernel,
ike_sa->get_other_host(ike_sa), segment)) ike_sa->get_other_host(ike_sa)) == segment)
{ {
ike_sa->set_state(ike_sa, new); ike_sa->set_state(ike_sa, new);
} }
@@ -267,8 +267,8 @@ METHOD(ha_segments_t, resync, void,
while (enumerator->enumerate(enumerator, &ike_sa)) while (enumerator->enumerate(enumerator, &ike_sa))
{ {
if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED && if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
this->kernel->in_segment(this->kernel, this->kernel->get_segment(this->kernel,
ike_sa->get_other_host(ike_sa), segment)) ike_sa->get_other_host(ike_sa)) == segment)
{ {
id = ike_sa->get_id(ike_sa); id = ike_sa->get_id(ike_sa);
list->insert_last(list, id->clone(id)); list->insert_last(list, id->clone(id));