]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Replaces in_segment() by a more generic get_segment() function
authorMartin Willi <martin@revosec.ch>
Thu, 22 Jul 2010 12:38:05 +0000 (14:38 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 26 Jul 2010 09:33:00 +0000 (11:33 +0200)
src/libcharon/plugins/ha/ha_kernel.c
src/libcharon/plugins/ha/ha_kernel.h
src/libcharon/plugins/ha/ha_segments.c

index 561cff14aac8c072b235280417caa874c37c181d..7428de497310e1772c9d38aa8e18974924652981 100644 (file)
@@ -51,8 +51,8 @@ struct private_ha_kernel_t {
        u_int count;
 };
 
-METHOD(ha_kernel_t, in_segment, bool,
-       private_ha_kernel_t *this, host_t *host, u_int segment)
+METHOD(ha_kernel_t, get_segment, u_int,
+       private_ha_kernel_t *this, host_t *host)
 {
        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;
                hash = jhash_1word(ntohl(addr), this->initval);
 
-               if ((((u_int64_t)hash * this->count) >> 32) + 1 == segment)
-               {
-                       return TRUE;
-               }
+               return (((u_int64_t)hash * this->count) >> 32) + 1;
        }
-       return FALSE;
+       return 0;
 }
 
 /**
@@ -208,7 +205,7 @@ ha_kernel_t *ha_kernel_create(u_int count)
 
        INIT(this,
                .public = {
-                       .in_segment = _in_segment,
+                       .get_segment = _get_segment,
                        .activate = _activate,
                        .deactivate = _deactivate,
                        .destroy = _destroy,
index b6ad5594cd19eef0e688285bd7ed90e403e8e5b3..b9341f4cc66fbe061711e8c93445a1903c5d4086 100644 (file)
@@ -31,13 +31,12 @@ typedef struct ha_kernel_t 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 segment       segment
-        * @return                      TRUE if host belongs to segment
+        * @param host          host to get segment for
+        * @return                      segment number
         */
-       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.
index b9b7ab082ae4e0e08cf1afb59142066d3f49cbad..5f6e40db231bb0cba49faba59b0eff059229b63e 100644 (file)
@@ -168,8 +168,8 @@ static void enable_disable(private_ha_segments_t *this, u_int segment,
                        {
                                continue;
                        }
-                       if (this->kernel->in_segment(this->kernel,
-                                                                       ike_sa->get_other_host(ike_sa), segment))
+                       if (this->kernel->get_segment(this->kernel,
+                                                                       ike_sa->get_other_host(ike_sa)) == segment)
                        {
                                ike_sa->set_state(ike_sa, new);
                        }
@@ -267,8 +267,8 @@ METHOD(ha_segments_t, resync, void,
                while (enumerator->enumerate(enumerator, &ike_sa))
                {
                        if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
-                               this->kernel->in_segment(this->kernel,
-                                                                       ike_sa->get_other_host(ike_sa), segment))
+                               this->kernel->get_segment(this->kernel,
+                                                                       ike_sa->get_other_host(ike_sa)) == segment)
                        {
                                id = ike_sa->get_id(ike_sa);
                                list->insert_last(list, id->clone(id));