Replaced ike_sa_t.create_additional_address_iterator with enumerator.
This commit is contained in:
@@ -143,7 +143,7 @@ METHOD(listener_t, ike_updown, bool,
|
|||||||
|
|
||||||
if (up)
|
if (up)
|
||||||
{
|
{
|
||||||
iterator_t *iterator;
|
enumerator_t *enumerator;
|
||||||
peer_cfg_t *peer_cfg;
|
peer_cfg_t *peer_cfg;
|
||||||
u_int32_t extension, condition;
|
u_int32_t extension, condition;
|
||||||
host_t *addr;
|
host_t *addr;
|
||||||
@@ -180,12 +180,12 @@ METHOD(listener_t, ike_updown, bool,
|
|||||||
m->add_attribute(m, HA_CONDITIONS, condition);
|
m->add_attribute(m, HA_CONDITIONS, condition);
|
||||||
m->add_attribute(m, HA_EXTENSIONS, extension);
|
m->add_attribute(m, HA_EXTENSIONS, extension);
|
||||||
m->add_attribute(m, HA_CONFIG_NAME, peer_cfg->get_name(peer_cfg));
|
m->add_attribute(m, HA_CONFIG_NAME, peer_cfg->get_name(peer_cfg));
|
||||||
iterator = ike_sa->create_additional_address_iterator(ike_sa);
|
enumerator = ike_sa->create_additional_address_enumerator(ike_sa);
|
||||||
while (iterator->iterate(iterator, (void**)&addr))
|
while (enumerator->enumerate(enumerator, (void**)&addr))
|
||||||
{
|
{
|
||||||
m->add_attribute(m, HA_ADDITIONAL_ADDR, addr);
|
m->add_attribute(m, HA_ADDITIONAL_ADDR, addr);
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
enumerator->destroy(enumerator);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -774,11 +774,25 @@ METHOD(ike_sa_t, add_additional_address, void,
|
|||||||
this->additional_addresses->insert_last(this->additional_addresses, host);
|
this->additional_addresses->insert_last(this->additional_addresses, host);
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(ike_sa_t, create_additional_address_iterator, iterator_t*,
|
METHOD(ike_sa_t, create_additional_address_enumerator, enumerator_t*,
|
||||||
private_ike_sa_t *this)
|
private_ike_sa_t *this)
|
||||||
{
|
{
|
||||||
return this->additional_addresses->create_iterator(
|
return this->additional_addresses->create_enumerator(
|
||||||
this->additional_addresses, TRUE);
|
this->additional_addresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(ike_sa_t, remove_additional_addresses, void,
|
||||||
|
private_ike_sa_t *this)
|
||||||
|
{
|
||||||
|
enumerator_t *enumerator = create_additional_address_enumerator(this);
|
||||||
|
host_t *host;
|
||||||
|
while (enumerator->enumerate(enumerator, (void**)&host))
|
||||||
|
{
|
||||||
|
this->additional_addresses->remove_at(this->additional_addresses,
|
||||||
|
enumerator);
|
||||||
|
host->destroy(host);
|
||||||
|
}
|
||||||
|
enumerator->destroy(enumerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(ike_sa_t, has_mapping_changed, bool,
|
METHOD(ike_sa_t, has_mapping_changed, bool,
|
||||||
@@ -2114,8 +2128,9 @@ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id)
|
|||||||
.has_condition = _has_condition,
|
.has_condition = _has_condition,
|
||||||
.set_pending_updates = _set_pending_updates,
|
.set_pending_updates = _set_pending_updates,
|
||||||
.get_pending_updates = _get_pending_updates,
|
.get_pending_updates = _get_pending_updates,
|
||||||
.create_additional_address_iterator = _create_additional_address_iterator,
|
.create_additional_address_enumerator = _create_additional_address_enumerator,
|
||||||
.add_additional_address = _add_additional_address,
|
.add_additional_address = _add_additional_address,
|
||||||
|
.remove_additional_addresses = _remove_additional_addresses,
|
||||||
.has_mapping_changed = _has_mapping_changed,
|
.has_mapping_changed = _has_mapping_changed,
|
||||||
.retransmit = _retransmit,
|
.retransmit = _retransmit,
|
||||||
.delete = _delete_,
|
.delete = _delete_,
|
||||||
|
|||||||
@@ -472,11 +472,16 @@ struct ike_sa_t {
|
|||||||
void (*add_additional_address)(ike_sa_t *this, host_t *host);
|
void (*add_additional_address)(ike_sa_t *this, host_t *host);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an iterator over all additional addresses of the peer.
|
* Create an enumerator over all additional addresses of the peer.
|
||||||
*
|
*
|
||||||
* @return iterator over addresses
|
* @return enumerator over addresses
|
||||||
*/
|
*/
|
||||||
iterator_t* (*create_additional_address_iterator)(ike_sa_t *this);
|
enumerator_t* (*create_additional_address_enumerator)(ike_sa_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all additional addresses of the peer.
|
||||||
|
*/
|
||||||
|
void (*remove_additional_addresses)(ike_sa_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if mappings have changed on a NAT for our source address.
|
* Check if mappings have changed on a NAT for our source address.
|
||||||
|
|||||||
@@ -78,24 +78,6 @@ struct private_ike_mobike_t {
|
|||||||
bool addresses_updated;
|
bool addresses_updated;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* flush the IKE_SAs list of additional addresses
|
|
||||||
*/
|
|
||||||
static void flush_additional_addresses(private_ike_mobike_t *this)
|
|
||||||
{
|
|
||||||
iterator_t *iterator;
|
|
||||||
host_t *host;
|
|
||||||
|
|
||||||
iterator = this->ike_sa->create_additional_address_iterator(this->ike_sa);
|
|
||||||
while (iterator->iterate(iterator, (void**)&host))
|
|
||||||
{
|
|
||||||
iterator->remove(iterator);
|
|
||||||
host->destroy(host);
|
|
||||||
}
|
|
||||||
iterator->destroy(iterator);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* read notifys from message and evaluate them
|
* read notifys from message and evaluate them
|
||||||
*/
|
*/
|
||||||
@@ -152,7 +134,7 @@ static void process_payloads(private_ike_mobike_t *this, message_t *message)
|
|||||||
{
|
{
|
||||||
if (first)
|
if (first)
|
||||||
{ /* an ADDITIONAL_*_ADDRESS means replace, so flush once */
|
{ /* an ADDITIONAL_*_ADDRESS means replace, so flush once */
|
||||||
flush_additional_addresses(this);
|
this->ike_sa->remove_additional_addresses(this->ike_sa);
|
||||||
first = FALSE;
|
first = FALSE;
|
||||||
}
|
}
|
||||||
data = notify->get_notification_data(notify);
|
data = notify->get_notification_data(notify);
|
||||||
@@ -169,7 +151,7 @@ static void process_payloads(private_ike_mobike_t *this, message_t *message)
|
|||||||
}
|
}
|
||||||
case NO_ADDITIONAL_ADDRESSES:
|
case NO_ADDITIONAL_ADDRESSES:
|
||||||
{
|
{
|
||||||
flush_additional_addresses(this);
|
this->ike_sa->remove_additional_addresses(this->ike_sa);
|
||||||
this->addresses_updated = TRUE;
|
this->addresses_updated = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -296,7 +278,7 @@ METHOD(ike_mobike_t, transmit, void,
|
|||||||
private_ike_mobike_t *this, packet_t *packet)
|
private_ike_mobike_t *this, packet_t *packet)
|
||||||
{
|
{
|
||||||
host_t *me, *other, *me_old, *other_old;
|
host_t *me, *other, *me_old, *other_old;
|
||||||
iterator_t *iterator;
|
enumerator_t *enumerator;
|
||||||
ike_cfg_t *ike_cfg;
|
ike_cfg_t *ike_cfg;
|
||||||
packet_t *copy;
|
packet_t *copy;
|
||||||
|
|
||||||
@@ -320,8 +302,8 @@ METHOD(ike_mobike_t, transmit, void,
|
|||||||
charon->sender->send(charon->sender, copy);
|
charon->sender->send(charon->sender, copy);
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator = this->ike_sa->create_additional_address_iterator(this->ike_sa);
|
enumerator = this->ike_sa->create_additional_address_enumerator(this->ike_sa);
|
||||||
while (iterator->iterate(iterator, (void**)&other))
|
while (enumerator->enumerate(enumerator, (void**)&other))
|
||||||
{
|
{
|
||||||
me = hydra->kernel_interface->get_source_addr(
|
me = hydra->kernel_interface->get_source_addr(
|
||||||
hydra->kernel_interface, other, NULL);
|
hydra->kernel_interface, other, NULL);
|
||||||
@@ -343,7 +325,7 @@ METHOD(ike_mobike_t, transmit, void,
|
|||||||
charon->sender->send(charon->sender, copy);
|
charon->sender->send(charon->sender, copy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
enumerator->destroy(enumerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(task_t, build_i, status_t,
|
METHOD(task_t, build_i, status_t,
|
||||||
|
|||||||
Reference in New Issue
Block a user