Changes in / [1082:b380c9f3be1e:1081:758b21ae6c3e] in freeDiameter
- Files:
-
- 3 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_diameap/diameap_eap.c
r1075 r1052 373 373 case EAP_INTEGRITY_CHECK: 374 374 if ((*eap_sm->selectedMethod->eap_method_check)(eap_sm, 375 &eap_i->aaaEapRespData) == FALSE)375 eap_i->aaaEapRespData) == FALSE) 376 376 { 377 377 TRACE_DEBUG(INFO,"%s[EAP Protocol] Invalid EAP packet received {Type=%d, Vendor=%d}. Integrity check failed (non fatal error).",DIAMEAP_EXTENSION,eap_sm->currentMethod,eap_sm->currentVendor); … … 434 434 } 435 435 if ((*eap_sm->selectedMethod->eap_method_process)(eap_sm, 436 &eap_i->aaaEapRespData))436 eap_i->aaaEapRespData)) 437 437 { 438 438 TRACE_DEBUG(INFO,"%s[EAP Protocol] [%s plugin] Authentication process failed.",DIAMEAP_EXTENSION,eap_sm->selectedMethod->methodname); -
extensions/app_diameap/diameap_plugins.c
r1075 r1052 263 263 { 264 264 plugin->eap_method_check = (boolean(*)(struct eap_state_machine *, 265 struct eap_packet *)) dlsym(plugin->handler,265 struct eap_packet)) dlsym(plugin->handler, 266 266 registerplugin->check); 267 267 if (plugin->eap_method_check == NULL) … … 285 285 { 286 286 plugin->eap_method_process = (int(*)(struct eap_state_machine *, 287 struct eap_packet *)) dlsym(plugin->handler,287 struct eap_packet)) dlsym(plugin->handler, 288 288 registerplugin->process); 289 289 if (plugin->eap_method_process == NULL) -
extensions/app_diameap/libdiameap.h
r1075 r610 110 110 int (*eap_method_getTimeout)(struct eap_state_machine *smd, int * timeout); /* address of the eap_method_getTimeout method */ 111 111 boolean (*eap_method_check)(struct eap_state_machine *smd, 112 struct eap_packet *eapRespData); /* address of the eap_method_check method */112 struct eap_packet eapRespData); /* address of the eap_method_check method */ 113 113 int (*eap_method_process)(struct eap_state_machine *smd, 114 struct eap_packet *eapRespData); /* address of the eap_method_process method */114 struct eap_packet eapRespData); /* address of the eap_method_process method */ 115 115 boolean (*eap_method_isDone)(struct eap_state_machine *smd); /* address of the eap_method_isDone method */ 116 116 int (*eap_method_getKey)(struct eap_state_machine *smd, u8 ** msk,int *msklength, -
extensions/dbg_interactive/queues.i
r1071 r1060 66 66 /* Get the length of the queue (nb elements) */ 67 67 int length() { 68 return fd_fifo_length ( $self ) ; 68 int l; 69 int ret = fd_fifo_length ( $self, &l, NULL ); 70 if (ret != 0) { 71 DI_ERROR(ret, NULL, NULL); 72 } 73 return l; 69 74 } 70 75 -
extensions/dbg_monitor/dbg_monitor.c
r1075 r974 50 50 EXTENSION_ENTRY("dbg_monitor", monitor_main); 51 51 52 53 54 /* Display information about a queue */55 static void display_info(char * queue_desc, char * peer, int current_count, int limit_count, int highest_count, long long total_count,56 struct timespec * total, struct timespec * blocking, struct timespec * last)57 {58 long long ms = (total->tv_sec * 1000000) + (total->tv_nsec / 1000);59 long double throughput = (long double)total_count * 1000000;60 throughput /= ms;61 if (peer) {62 TRACE_DEBUG(INFO, "'%s'@'%s': cur:%d/%d, h:%d, T:%lld in %ld.%06lds (%.2LFitems/s), blocked:%ld.%06lds, last processing:%ld.%06lds",63 queue_desc, peer, current_count, limit_count, highest_count,64 total_count, total->tv_sec, total->tv_nsec, throughput,65 blocking->tv_sec, blocking->tv_nsec, last->tv_sec, last->tv_nsec);66 } else {67 TRACE_DEBUG(INFO, "Global '%s': cur:%d/%d, h:%d, T:%lld in %ld.%06lds (%.2LFitems/s), blocked:%ld.%06lds, last processing:%ld.%06lds",68 queue_desc, current_count, limit_count, highest_count,69 total_count, total->tv_sec, total->tv_nsec, throughput,70 blocking->tv_sec, blocking->tv_nsec, last->tv_sec, last->tv_nsec);71 }72 }73 74 52 /* Thread to display periodical debug information */ 75 53 static pthread_t thr; … … 81 59 /* Loop */ 82 60 while (1) { 83 int current_count, limit_count, highest_count;84 long long total_count;85 struct timespec total, blocking, last;86 struct fd_list * li;87 88 61 #ifdef DEBUG 89 62 for (i++; i % 30; i++) { … … 92 65 } 93 66 #else /* DEBUG */ 94 sleep(3 599); /* 1 hour */67 sleep(3600); /* 1 hour */ 95 68 #endif /* DEBUG */ 96 TRACE_DEBUG(INFO, "[dbg_monitor] Dumping queues statistics"); 97 98 CHECK_FCT_DO( fd_stat_getstats(STAT_G_LOCAL, NULL, ¤t_count, &limit_count, &highest_count, &total_count, &total, &blocking, &last), ); 99 display_info("Local delivery", NULL, current_count, limit_count, highest_count, total_count, &total, &blocking, &last); 100 101 CHECK_FCT_DO( fd_stat_getstats(STAT_G_INCOMING, NULL, ¤t_count, &limit_count, &highest_count, &total_count, &total, &blocking, &last), ); 102 display_info("Total received", NULL, current_count, limit_count, highest_count, total_count, &total, &blocking, &last); 103 104 CHECK_FCT_DO( fd_stat_getstats(STAT_G_OUTGOING, NULL, ¤t_count, &limit_count, &highest_count, &total_count, &total, &blocking, &last), ); 105 display_info("Total sending", NULL, current_count, limit_count, highest_count, total_count, &total, &blocking, &last); 106 107 108 CHECK_FCT_DO( pthread_rwlock_rdlock(&fd_g_peers_rw), /* continue */ ); 109 110 for (li = fd_g_peers.next; li != &fd_g_peers; li = li->next) { 111 struct peer_hdr * p = (struct peer_hdr *)li->o; 112 113 fd_peer_dump(p, NONE); 114 115 CHECK_FCT_DO( fd_stat_getstats(STAT_P_PSM, p, ¤t_count, &limit_count, &highest_count, &total_count, &total, &blocking, &last), ); 116 display_info("Events, incl. recept", p->info.pi_diamid, current_count, limit_count, highest_count, total_count, &total, &blocking, &last); 117 118 CHECK_FCT_DO( fd_stat_getstats(STAT_P_TOSEND, p, ¤t_count, &limit_count, &highest_count, &total_count, &total, &blocking, &last), ); 119 display_info("Outgoing", p->info.pi_diamid, current_count, limit_count, highest_count, total_count, &total, &blocking, &last); 120 121 } 122 123 CHECK_FCT_DO( pthread_rwlock_unlock(&fd_g_peers_rw), /* continue */ ); 124 125 126 69 fd_log_debug("[dbg_monitor] Dumping current information"); 70 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_QUEUES, 0, NULL), /* continue */); 127 71 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_SERV, 0, NULL), /* continue */); 72 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_PEERS, 0, NULL), /* continue */); 128 73 sleep(1); 129 74 } -
include/freeDiameter/libfdcore.h
r1077 r1069 861 861 /*============================================================*/ 862 862 863 /* These functions allow an extension to collect state information about the864 * framework , as well as being hookedat some key checkpoints in the processing863 /* These functions allows an extension to collect state information about the 864 * framework state, as well as hooks at some key checkpoints in the processing 865 865 * for logging / statistics purpose. 866 866 */ … … 1097 1097 * stat : Which queue is being queried 1098 1098 * peer : (depending on the stat parameter) which peer is being queried 1099 * current_count: (out) The number of items in the queue currently1100 * limit_count: (out) The max number of items the queue accepts before becoming blocking -- 0 means no max.1099 * len : (out) The number of items in the queue currently 1100 * max : (out) The max number of items the queue accepts before becoming blocking -- 0 means no max. 1101 1101 * highest_count : (out) The highest count the queue has reached since startup 1102 1102 * total_count : (out) Total number of items that this queue has processed (always growing, use deltas for monitoring) … … 1114 1114 */ 1115 1115 int fd_stat_getstats(enum fd_stat_type stat, struct peer_hdr * peer, 1116 int * current_count, int * limit_count, int * highest_count, long long * total_count,1116 int * len, int * max, int * highest_count, long long * total_count, 1117 1117 struct timespec * total, struct timespec * blocking, struct timespec * last); 1118 1118 -
include/freeDiameter/libfdproto.h
r1082 r1078 2989 2989 2990 2990 /* 2991 * FUNCTION: fd_fifo_length 2992 * 2993 * PARAMETERS: 2994 * queue : The queue from which to retrieve the number of elements. 2995 * length : Upon success, the current number of elements in the queue is stored here. 2996 * max : the maximum number of elements as specified during creation. Can be NULL. 2997 * 2998 * DESCRIPTION: 2999 * Retrieve the number of elements in a queue. 3000 * 3001 * RETURN VALUE: 3002 * 0 : The length of the queue has been written. 3003 * EINVAL : A parameter is invalid. 3004 */ 3005 int fd_fifo_length ( struct fifo * queue, int * length, int * max); 3006 int fd_fifo_length_noerr ( struct fifo * queue ); /* no error checking version */ 3007 3008 /* 2991 3009 * FUNCTION: fd_fifo_getstats 2992 3010 * 2993 3011 * PARAMETERS: 2994 * queue : The queue from which to retrieve the information. 2995 * current_count : How many items in the queue at the time of execution. This changes each time an item is pushed or poped. 2996 * limit_count : The maximum number of items allowed in this queue. This is specified during queue creation. 2997 * highest_count : The maximum number of items this queue has contained. This enables to see if limit_count count was reached. 2998 * total_count : the total number of items that went through the queue (already pop'd). Always increasing. 2999 * total : Cumulated time all items spent in this queue, including blocking time (always growing, use deltas for monitoring) 3000 * blocking : Cumulated time threads trying to post new items were blocked (queue full). 3001 * last : For the last element retrieved from the queue, how long it take between posting (including blocking) and poping 3012 * queue : The queue from which to retrieve the timings information. 3013 * items : the total number of items that went through the queue (already pop'd). Always increasing. 3014 * total : Cumulated time all items spent in this queue, including blocking time (always growing, use deltas for monitoring) 3015 * blocking : Cumulated time threads trying to post new items were blocked (queue full). 3016 * last : For the last element retrieved from the queue, how long it take between posting (including blocking) and poping 3002 3017 * 3003 3018 * DESCRIPTION: … … 3008 3023 * EINVAL : A parameter is invalid. 3009 3024 */ 3010 int fd_fifo_getstats( struct fifo * queue, int * current_count, int * limit_count, int * highest_count, long long * total_count, 3011 struct timespec * total, struct timespec * blocking, struct timespec * last); 3012 3013 /* 3014 * FUNCTION: fd_fifo_length 3015 * 3016 * PARAMETERS: 3017 * queue : The queue from which to retrieve the number of elements. 3018 * 3019 * DESCRIPTION: 3020 * Retrieve the number of elements in a queue, without error checking. 3021 * 3022 * RETURN VALUE: 3023 * The number of items currently queued. 3024 */ 3025 int fd_fifo_length ( struct fifo * queue ); 3025 int fd_fifo_getstats( struct fifo * queue, long long *items, struct timespec * total, struct timespec * blocking, struct timespec * last); 3026 3026 3027 3027 3028 /* -
libfdcore/CMakeLists.txt
r1077 r668 18 18 events.c 19 19 extensions.c 20 fifo_stats.c21 hooks.c22 20 dict_base_proto.c 23 21 messages.c -
libfdproto/fifo.c
r1073 r1067 152 152 for (li = queue->list.next; li != &queue->list; li = li->next) { 153 153 struct fifo_item * fi = (struct fifo_item *)li; 154 fd_log_debug(" [%i] item %p in fifo %p, posted: %ld.%06ld",154 fd_log_debug(" [%i] item %p in fifo %p, posted:ld.%06ld", 155 155 i++, fi->item.o, queue, (long)fi->posted_on.tv_sec,(long)(fi->posted_on.tv_nsec/1000)); 156 156 (*dump_item)(level, fi->item.o); … … 284 284 } 285 285 286 /* Get the information on the queue */ 287 int fd_fifo_getstats( struct fifo * queue, int * current_count, int * limit_count, int * highest_count, long long * total_count, 288 struct timespec * total, struct timespec * blocking, struct timespec * last) 289 { 290 TRACE_ENTRY( "%p %p %p %p %p %p %p %p", queue, current_count, limit_count, highest_count, total_count, total, blocking, last); 286 /* Get the length of the queue */ 287 int fd_fifo_length ( struct fifo * queue, int * length, int * max ) 288 { 289 TRACE_ENTRY( "%p %p %p", queue, length, max ); 290 291 /* Check the parameters */ 292 CHECK_PARAMS( CHECK_FIFO( queue ) && length ); 293 294 /* lock the queue */ 295 CHECK_POSIX( pthread_mutex_lock( &queue->mtx ) ); 296 297 /* Retrieve the count */ 298 *length = queue->count; 299 300 if (max) 301 *max = queue->max; 302 303 /* Unlock */ 304 CHECK_POSIX( pthread_mutex_unlock( &queue->mtx ) ); 305 306 /* Done */ 307 return 0; 308 } 309 310 /* Get the timings */ 311 int fd_fifo_getstats( struct fifo * queue, long long *items, struct timespec * total, struct timespec * blocking, struct timespec * last) 312 { 313 TRACE_ENTRY( "%p %p %p %p %p", queue, items, total, blocking, last); 291 314 292 315 /* Check the parameters */ … … 296 319 CHECK_POSIX( pthread_mutex_lock( &queue->mtx ) ); 297 320 298 if (current_count) 299 *current_count = queue->count; 300 301 if (limit_count) 302 *limit_count = queue->max; 303 304 if (highest_count) 305 *highest_count = queue->highest_ever; 306 307 if (total_count) 308 *total_count = queue->total_items; 321 if (items) 322 *items = queue->total_items; 309 323 310 324 if (total) … … 326 340 327 341 /* alternate version with no error checking */ 328 int fd_fifo_length ( struct fifo * queue )342 int fd_fifo_length_noerr ( struct fifo * queue ) 329 343 { 330 344 if ( !CHECK_FIFO( queue ) ) -
libfdproto/ostr.c
r1070 r1068 188 188 int fd_os_validate_DiameterIdentity(char ** id, size_t * inoutsz, int memory) 189 189 { 190 #if !defined(DIAMID_IDNA_IGNORE) && !defined(DIAMID_IDNA_REJECT)190 #if defined(DIAMID_IDNA_IGNORE) || defined(DIAMID_IDNA_REJECT) 191 191 int gotsize = 0; 192 192 #endif /* defined(DIAMID_IDNA_IGNORE) || defined(DIAMID_IDNA_REJECT) */ … … 197 197 if (!*inoutsz) 198 198 *inoutsz = strlen(*id); 199 #if !defined(DIAMID_IDNA_IGNORE) && !defined(DIAMID_IDNA_REJECT)199 #if defined(DIAMID_IDNA_IGNORE) || defined(DIAMID_IDNA_REJECT) 200 200 else 201 201 gotsize = 1; -
tests/CMakeLists.txt
r1076 r1031 26 26 testdict 27 27 testmesg 28 testmesg_stress29 28 testsess 30 29 testdisp -
tests/testfifo.c
r1071 r1060 217 217 { 218 218 struct fifo * queue = NULL; 219 int count, max; 219 220 struct msg * msg = NULL; 220 int max;221 long long count;222 221 223 222 /* Create the queue */ … … 225 224 226 225 /* Check the count is 0 */ 227 CHECK( 0, fd_fifo_length(queue) ); 226 CHECK( 0, fd_fifo_length(queue, &count, &max) ); 227 CHECK( 0, count); 228 CHECK( 0, max); 228 229 229 230 /* Now enqueue */ … … 236 237 237 238 /* Check the count is 3 */ 238 CHECK( 3, fd_fifo_length(queue) ); 239 CHECK( 0, fd_fifo_length(queue, &count, &max) ); 240 CHECK( 3, count); 241 CHECK( 0, max); 239 242 240 243 /* Retrieve the first message using fd_fifo_get */ 241 244 CHECK( 0, fd_fifo_get(queue, &msg) ); 242 245 CHECK( msg1, msg); 243 CHECK( 2, fd_fifo_length(queue) ); 246 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 247 CHECK( 2, count); 244 248 245 249 /* Retrieve the second message using fd_fifo_timedget */ … … 248 252 CHECK( 0, fd_fifo_timedget(queue, &msg, &ts) ); 249 253 CHECK( msg2, msg); 250 CHECK( 1, fd_fifo_length(queue) ); 254 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 255 CHECK( 1, count); 251 256 252 257 /* Retrieve the third message using meq_tryget */ 253 258 CHECK( 0, fd_fifo_tryget(queue, &msg) ); 254 259 CHECK( msg3, msg); 255 CHECK( 0, fd_fifo_length(queue) ); 260 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 261 CHECK( 0, count); 256 262 257 263 /* Check that another meq_tryget does not block */ 258 264 CHECK( EWOULDBLOCK, fd_fifo_tryget(queue, &msg) ); 259 CHECK( 0, fd_fifo_length(queue) ); 265 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 266 CHECK( 0, count); 260 267 261 268 /* Check the timedget actually timesout */ … … 267 274 } 268 275 CHECK( ETIMEDOUT, fd_fifo_timedget(queue, &msg, &ts) ); 269 CHECK( 0, fd_fifo_length(queue) ); 270 271 /* Post & get another message */ 272 msg = msg1; 273 CHECK( 0, fd_fifo_post(queue, &msg) ); 274 CHECK( 0, fd_fifo_timedget(queue, &msg, &ts) ); 275 CHECK( msg1, msg); 276 277 /* Check some statistics */ 278 CHECK( 0, fd_fifo_getstats(queue, NULL, NULL, &max, &count, NULL, NULL, NULL) ); 279 CHECK( 3, max ); 280 CHECK( 4, count ); 276 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 277 CHECK( 0, count); 281 278 282 279 /* We're done for basic tests */ … … 295 292 pthread_t thr [NBR_THREADS * 2]; 296 293 struct dict_object *dwr_model = NULL; 294 int count; 297 295 int i; 298 296 int nbr_threads; … … 365 363 366 364 /* Check the count of the queue is back to 0 */ 367 CHECK( 0, fd_fifo_length(queue) ); 365 CHECK( 0, fd_fifo_length(queue, &count, NULL) ); 366 CHECK( 0, count); 368 367 369 368 /* Destroy this queue and the messages */
Note: See TracChangeset
for help on using the changeset viewer.