mirror of
				https://github.com/optim-enterprises-bv/nDPId.git
				synced 2025-10-31 18:27:47 +00:00 
			
		
		
		
	jsonize_basic_event // jsonize_basic_event_error
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
This commit is contained in:
		
							
								
								
									
										111
									
								
								nDPId.c
									
									
									
									
									
								
							
							
						
						
									
										111
									
								
								nDPId.c
									
									
									
									
									
								
							| @@ -10,6 +10,7 @@ | ||||
| #include <pcap/pcap.h> | ||||
| #include <pthread.h> | ||||
| #include <signal.h> | ||||
| #include <stdarg.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <syslog.h> | ||||
| @@ -663,6 +664,116 @@ static void jsonize_flow_event(struct nDPId_reader_thread * const reader_thread, | ||||
|     } | ||||
|     ndpi_reset_serializer(&workflow->ndpi_serializer); | ||||
| } | ||||
|  | ||||
| static void jsonize_basic_event_error(struct nDPId_reader_thread * const reader_thread, uint32_t format_index) | ||||
| { | ||||
|     char * out; | ||||
|     uint32_t out_size = 0; | ||||
|  | ||||
|     ndpi_serialize_string_string(&reader_thread->workflow->ndpi_serializer, | ||||
|                                  "serializer-error", "format"); | ||||
|     ndpi_serialize_string_uint32(&reader_thread->workflow->ndpi_serializer, | ||||
|                               "serializer-format-index", format_index); | ||||
|     out = ndpi_serializer_get_buffer(&reader_thread->workflow->ndpi_serializer, &out_size); | ||||
|     if (out != NULL && out_size > 0) { | ||||
|         printf("ERR: %s\n", out); | ||||
|     } | ||||
|     ndpi_reset_serializer(&reader_thread->workflow->ndpi_serializer); | ||||
| } | ||||
|  | ||||
| static void jsonize_basic_event(struct nDPId_reader_thread * const reader_thread, | ||||
|                                 char const * format, ...) | ||||
| { | ||||
|     va_list ap; | ||||
|     uint8_t got_jsonkey = 0; | ||||
|     char json_key[BUFSIZ]; | ||||
|     uint32_t format_index = 0; | ||||
|  | ||||
|     (void)reader_thread; | ||||
|     va_start(ap, format); | ||||
|     while (*format) { | ||||
|         switch (*format++) { | ||||
|             case 's': { | ||||
|                 format_index++; | ||||
|                 char * value = va_arg(ap, char *); | ||||
|                 if (got_jsonkey == 0) { | ||||
|                     snprintf(json_key, sizeof(json_key), "%s", value); | ||||
|                     got_jsonkey = 1; | ||||
|                 } else { | ||||
|                     ndpi_serialize_string_string(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                  json_key, value); | ||||
|                     got_jsonkey = 0; | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             case 'f': { | ||||
|                 format_index++; | ||||
|                 if (got_jsonkey == 1) { | ||||
|                     float value = va_arg(ap, double); | ||||
|                     ndpi_serialize_string_float(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                 json_key, value, "%.2f"); | ||||
|                     got_jsonkey = 0; | ||||
|                 } else { | ||||
|                     jsonize_basic_event_error(reader_thread, format_index); | ||||
|                     return; | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             case 'l': | ||||
|                 format_index++; | ||||
|                 if (got_jsonkey != 1) { | ||||
|                     jsonize_basic_event_error(reader_thread, format_index); | ||||
|                     return; | ||||
|                 } | ||||
|                 if (*(format++) == 'd') { | ||||
|                     long long int value = va_arg(ap, long long int); | ||||
|                     ndpi_serialize_string_int64(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                 json_key, value); | ||||
|                     got_jsonkey = 0; | ||||
|                 } else if (*(format++) == 'u') { | ||||
|                     unsigned long long int value = va_arg(ap, unsigned long long int); | ||||
|                     ndpi_serialize_string_uint64(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                  json_key, value); | ||||
|                     got_jsonkey = 0; | ||||
|                 } else { | ||||
|                     jsonize_basic_event_error(reader_thread, format_index); | ||||
|                     return; | ||||
|                 } | ||||
|                 break; | ||||
|             case 'u': | ||||
|                 format_index++; | ||||
|                 if (got_jsonkey == 1) { | ||||
|                     unsigned int value = va_arg(ap, unsigned int); | ||||
|                     ndpi_serialize_string_uint32(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                  json_key, value); | ||||
|                     got_jsonkey = 0; | ||||
|                 } else { | ||||
|                     jsonize_basic_event_error(reader_thread, format_index); | ||||
|                     return; | ||||
|                 } | ||||
|                 break; | ||||
|             case 'd': | ||||
|                 format_index++; | ||||
|                 if (got_jsonkey == 1) { | ||||
|                     int value = va_arg(ap, int); | ||||
|                     ndpi_serialize_string_int32(&reader_thread->workflow->ndpi_serializer, | ||||
|                                                 json_key, value); | ||||
|                     got_jsonkey = 0; | ||||
|                 } else { | ||||
|                     jsonize_basic_event_error(reader_thread, format_index); | ||||
|                     return; | ||||
|                 } | ||||
|                 break; | ||||
|             case '%': | ||||
|                 format_index++; | ||||
|                 break; | ||||
|             default: | ||||
|                 jsonize_basic_event_error(reader_thread, format_index); | ||||
|                 return; | ||||
|         } | ||||
|     } | ||||
|     va_end(ap); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| static void ndpi_process_packet(uint8_t * const args, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Toni Uhlig
					Toni Uhlig