]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Pass initiator parameter to distinguish between original and exchange initiator
authorMartin Willi <martin@revosec.ch>
Mon, 26 Jul 2010 10:07:38 +0000 (12:07 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 26 Jul 2010 11:53:53 +0000 (13:53 +0200)
src/libcharon/plugins/ha/ha_child.c
src/libcharon/plugins/ha/ha_dispatcher.c
src/libcharon/plugins/ha/ha_message.c
src/libcharon/plugins/ha/ha_message.h

index 464353ee10797a90e3491da9ad294957e43e3e07..640aa1640b7ad042058112ab4db3fcf04cd2a8a4 100644 (file)
@@ -63,6 +63,7 @@ METHOD(listener_t, child_keys, bool,
        m = ha_message_create(HA_CHILD_ADD);
 
        m->add_attribute(m, HA_IKE_ID, ike_sa->get_id(ike_sa));
+       m->add_attribute(m, HA_INITIATOR, (u_int8_t)initiator);
        m->add_attribute(m, HA_INBOUND_SPI, child_sa->get_spi(child_sa, TRUE));
        m->add_attribute(m, HA_OUTBOUND_SPI, child_sa->get_spi(child_sa, FALSE));
        m->add_attribute(m, HA_INBOUND_CPI, child_sa->get_cpi(child_sa, TRUE));
index d9563047b361c8745a6f2c8d8706b1f69f42a107..af45429c5401775a15bd7370ec90a88dc10e90ab 100644 (file)
@@ -443,11 +443,13 @@ static void process_child_add(private_ha_dispatcher_t *this,
                        case HA_IKE_ID:
                                ike_sa = charon->ike_sa_manager->checkout(charon->ike_sa_manager,
                                                                                                                  value.ike_sa_id);
-                               initiator = value.ike_sa_id->is_initiator(value.ike_sa_id);
                                break;
                        case HA_CONFIG_NAME:
                                config_name = value.str;
                                break;
+                       case HA_INITIATOR:
+                               initiator = value.u8;
+                               break;
                        case HA_INBOUND_SPI:
                                inbound_spi = value.u32;
                                break;
index da05d93e5df2aaf19d25828960a83942385ac3a0..16e214bd88afb5aac40c7d0795fbb66db841c639 100644 (file)
@@ -212,6 +212,7 @@ METHOD(ha_message_t, add_attribute, void,
                        break;
                }
                /* u_int8_t */
+               case HA_INITIATOR:
                case HA_IPSEC_MODE:
                case HA_IPCOMP:
                {
@@ -422,6 +423,7 @@ METHOD(enumerator_t, attribute_enumerate, bool,
                        return TRUE;
                }
                /* u_int8_t */
+               case HA_INITIATOR:
                case HA_IPSEC_MODE:
                case HA_IPCOMP:
                {
index 50ba0329ee0ffa95a3c93d9725161351c32ca412..4034dbe51e5131e20d43a5954fcdc660290b73b7 100644 (file)
@@ -98,6 +98,8 @@ enum ha_message_attribute_t {
        HA_REMOTE_VIP,
        /** host_t*, additional MOBIKE peer address */
        HA_ADDITIONAL_ADDR,
+       /** u_int8_t, initiator of an exchange, TRUE for local */
+       HA_INITIATOR,
        /** chunk_t, initiators nonce */
        HA_NONCE_I,
        /** chunk_t, responders nonce */