Changeset 7636a18e0688e13d2ee24022bd5e438ea1b54c04
- Timestamp:
- 07/26/12 12:37:20 (10 months ago)
- git-parent:
[4cebb0acbd14f94545d4dbbdb4b1727384aa355c], [883e7762d20cb19f85e43052327fd10bfb4ebc98]
- Files:
-
- src/modules/ping_icmp.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/modules/ping_icmp.c
rde52002 r883e776 49 49 #include <netinet/ip6.h> 50 50 #include <netinet/icmp6.h> 51 #include <openssl/rand.h> 51 52 #include <math.h> 52 53 #ifndef MAXFLOAT … … 72 73 }; 73 74 struct ping_session_key { 74 v oid *addr_of_check; /* ticket #288 */75 vpsized_uint addr_of_check; /* ticket #288 */ 75 76 uuid_t checkid; 76 77 }; 77 78 struct ping_payload { 78 v oid *addr_of_check; /* ticket #288 */79 vpsized_uint addr_of_check; /* ticket #288 */ 79 80 uuid_t checkid; 80 81 u_int64_t tv_sec; … … 97 98 static noit_log_stream_t nldeb = NULL; 98 99 static int in_cksum(u_short *addr, int len); 100 static vpsized_uint random_num; 101 99 102 100 103 typedef struct { … … 189 192 pcl->check->flags &= ~NP_RUNNING; 190 193 ping_data = noit_module_get_userdata(pcl->self); 191 k.addr_of_check = pcl->check;194 k.addr_of_check = (vpsized_uint)pcl->check ^ random_num; 192 195 uuid_copy(k.checkid, pcl->check->checkid); 193 196 noit_hash_delete(ping_data->in_flight, (const char *)&k, sizeof(k), … … 325 328 data->timeout_event = NULL; 326 329 check->flags &= ~NP_RUNNING; 327 k.addr_of_check = check;330 k.addr_of_check = (vpsized_uint)check ^ random_num; 328 331 uuid_copy(k.checkid, check->checkid); 329 332 noit_hash_delete(ping_data->in_flight, (const char *)&k, … … 346 349 struct protoent *proto; 347 350 ping_icmp_data_t *data; 351 352 RAND_pseudo_bytes((unsigned char *)&random_num, sizeof(vpsized_uint)); 348 353 349 354 data = malloc(sizeof(*data)); … … 528 533 ping_data = noit_module_get_userdata(self); 529 534 k = calloc(1, sizeof(*k)); 530 k->addr_of_check = check;535 k->addr_of_check = (vpsized_uint)check ^ random_num; 531 536 uuid_copy(k->checkid, check->checkid); 532 537 if(!noit_hash_store(ping_data->in_flight, (const char *)k, sizeof(*k), … … 593 598 } 594 599 595 payload->addr_of_check = check;600 payload->addr_of_check = (vpsized_uint)check ^ random_num; 596 601 uuid_copy(payload->checkid, check->checkid); 597 602 payload->generation = check->generation & 0xffff;
