Changeset 4658

Show
Ignore:
Timestamp:
11/14/08 14:58:16 (2 months ago)
Author:
martin
Message:

fall back to reauthentication if IKE rekeying fails with NO_ADDITIONAL_SAS

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/charon/sa/tasks/ike_rekey.c

    r4495 r4658  
    145145        return SUCCESS; 
    146146    } 
    147  
     147     
    148148    if (this->ike_init->task.build(&this->ike_init->task, message) == FAILED) 
    149149    { 
     
    171171    job_t *job; 
    172172    ike_sa_id_t *to_delete; 
    173  
     173    iterator_t *iterator; 
     174    payload_t *payload; 
     175 
     176    /* handle NO_ADDITIONAL_SAS notify */ 
     177    iterator = message->get_payload_iterator(message); 
     178    while (iterator->iterate(iterator, (void**)&payload)) 
     179    { 
     180        if (payload->get_type(payload) == NOTIFY) 
     181        { 
     182            notify_payload_t *notify = (notify_payload_t*)payload; 
     183            notify_type_t type = notify->get_notify_type(notify); 
     184             
     185            if (type == NO_ADDITIONAL_SAS) 
     186            { 
     187                DBG1(DBG_IKE, "peer seems to not support IKE rekeying, " 
     188                     "starting reauthentication"); 
     189                this->ike_sa->set_state(this->ike_sa, IKE_ESTABLISHED); 
     190                charon->processor->queue_job(charon->processor, 
     191                        (job_t*)rekey_ike_sa_job_create( 
     192                                    this->ike_sa->get_id(this->ike_sa), TRUE)); 
     193                iterator->destroy(iterator); 
     194                return SUCCESS; 
     195            } 
     196        } 
     197    } 
     198    iterator->destroy(iterator); 
     199     
    174200    switch (this->ike_init->task.process(&this->ike_init->task, message)) 
    175201    {