Changeset 4629
- Timestamp:
- 11/11/08 16:20:25 (2 months ago)
- Files:
-
- trunk/src/charon/plugins/medcli/medcli_listener.c (modified) (3 diffs)
- trunk/src/charon/plugins/medcli/medcli_listener.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/charon/plugins/medcli/medcli_listener.c
r4192 r4629 52 52 * Implementation of bus_listener_t.signal. 53 53 */ 54 static bool signal_(private_medcli_listener_t *this, signal_t signal, 55 level_t level, int thread, ike_sa_t* ike_sa, void *data, 56 char *format, va_list args) 54 static void set_state(private_medcli_listener_t *this, char *alias, 55 mediated_state_t state) 57 56 { 58 mediated_state_t state;59 60 if (!ike_sa)61 {62 return TRUE;63 }64 65 switch (signal)66 {67 case IKE_UP_START:68 state = STATE_CONNECTING;69 break;70 case IKE_UP_FAILED:71 case IKE_DOWN_SUCCESS:72 case IKE_DOWN_FAILED:73 state = STATE_DOWN;74 break;75 case IKE_UP_SUCCESS:76 state = STATE_UP;77 break;78 default:79 return TRUE;80 }81 57 this->db->execute(this->db, NULL, 82 58 "UPDATE Connection SET Status = ? WHERE Alias = ?", 83 DB_UINT, state, DB_TEXT, ike_sa->get_name(ike_sa)); 59 DB_UINT, state, DB_TEXT, alias); 60 } 61 /** 62 * Implementation of listener_t.ike_state_change 63 */ 64 static bool ike_state_change(private_medcli_listener_t *this, 65 ike_sa_t *ike_sa, ike_sa_state_t state) 66 { 67 if (ike_sa) 68 { 69 switch (state) 70 { 71 case IKE_CONNECTING: 72 set_state(this, ike_sa->get_name(ike_sa), STATE_CONNECTING); 73 break; 74 case IKE_DESTROYING: 75 set_state(this, ike_sa->get_name(ike_sa), STATE_DOWN); 76 default: 77 break; 78 } 79 } 80 return TRUE; 81 } 82 83 /** 84 * Implementation of listener_t.child_state_change 85 */ 86 static bool child_state_change(private_medcli_listener_t *this, 87 ike_sa_t *ike_sa, child_sa_t *child_sa, child_sa_state_t state) 88 { 89 if (ike_sa && child_sa) 90 { 91 switch (state) 92 { 93 case CHILD_INSTALLED: 94 set_state(this, child_sa->get_name(child_sa), STATE_UP); 95 break; 96 case CHILD_DESTROYING: 97 set_state(this, child_sa->get_name(child_sa), STATE_DOWN); 98 break; 99 default: 100 break; 101 } 102 } 84 103 return TRUE; 85 104 } … … 92 111 this->db->execute(this->db, NULL, "UPDATE Connection SET Status = ?", 93 112 DB_UINT, STATE_DOWN); 94 free(this);113 free(this); 95 114 } 96 115 … … 101 120 { 102 121 private_medcli_listener_t *this = malloc_thing(private_medcli_listener_t); 103 104 this->public.listener.signal = (bool(*)(bus_listener_t*,signal_t,level_t,int,ike_sa_t*,void*,char*,va_list))signal_; 122 123 memset(&this->public.listener, 0, sizeof(listener_t)); 124 125 this->public.listener.ike_state_change = (void*)ike_state_change; 126 this->public.listener.child_state_change = (void*)child_state_change; 105 127 this->public.destroy = (void (*)(medcli_listener_t*))destroy; 106 128 trunk/src/charon/plugins/medcli/medcli_listener.h
r4070 r4629 37 37 * Implements bus_listener_t interface 38 38 */ 39 bus_listener_t listener;39 listener_t listener; 40 40 41 41 /**
