Changeset 9a6060c147e3f375f75141efe7884a911021d87e
- Timestamp:
- 03/04/08 18:13:56 (5 years ago)
- git-parent:
- Files:
-
- configure.in (modified) (3 diffs)
- src/Makefile.in (modified) (2 diffs)
- src/modules/Makefile.in (modified) (1 diff)
- src/modules/http.c (modified) (7 diffs)
- src/modules/ping_icmp.c (modified) (5 diffs)
- src/modules/snmp.c (modified) (4 diffs)
- src/noit_check_tools.c (modified) (2 diffs)
- src/noit_check_tools.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
configure.in
rbffc38f r9a6060c 71 71 ] 72 72 ) 73 AC_CHECK_LIB(pq, PQconnectdb, , 73 74 SAVELIBS="$LIBS" 75 AC_CHECK_LIB(pq, PQconnectdb, 76 [ 77 LIBS="$LIBS -lpq" 78 PGLIBS="$LIBS" 79 AC_SUBST(PGLIBS) 80 ], 74 81 [ 75 82 AC_MSG_ERROR([libpq required]) … … 81 88 [ AC_MSG_ERROR([Cannot compile/link against libpq]) ] 82 89 ) 90 LIBS="$SAVELIBS" 91 92 ######## 93 # 94 # CHECK FOR VARIOUS MODULE CRITERIA 95 # We don't track the libs themselves, as we'll just explictly link 96 # against the in the makefile if we enable them to build (by adding 97 # them to the BUILD_MODULES list). 98 # 99 ######## 100 101 # Should we build snmp checks? 102 SAVELIBS="$LIBS" 103 AC_CHECK_LIB(netsnmp, snmp_sess_open, 104 [ 105 BUILD_MODULES="$BUILD_MODULES snmp.$MODULEEXT" 106 ], 107 [ 108 AC_MSG_ERROR([No libnetsnmp, skipping snmp module]) 109 ] 110 ) 111 LIBS="$SAVELIBS" 83 112 84 113 AC_MSG_CHECKING([libxml2 cflags]) … … 296 325 fi 297 326 327 AC_SUBST(BUILD_MODULES) 328 298 329 docdir="docs" 299 330 mansubdir="man" src/Makefile.in
ra7304b5 r9a6060c 6 6 RANLIB=@RANLIB@ 7 7 LIBS=@LIBS@ 8 PGLIBS=@PGLIBS@ 8 9 INSTALL=@INSTALL@ 9 10 … … 62 63 -Ljlog -ljlog \ 63 64 -Lnoitedit -lnoitedit \ 64 $(LIBS) 65 $(LIBS) $(PGLIBS) 65 66 66 67 .c.o: src/modules/Makefile.in
rc04dcf5 r9a6060c 16 16 top_srcdir=@top_srcdir@ 17 17 18 MODULES=ping_icmp.@MODULEEXT@ http.@MODULEEXT@ snmp.@MODULEEXT@18 MODULES=ping_icmp.@MODULEEXT@ http.@MODULEEXT@ @BUILD_MODULES@ 19 19 20 20 all: $(MODULES) src/modules/http.c
r73bd686 r9a6060c 18 18 #include "noit_module.h" 19 19 #include "noit_check.h" 20 #include "noit_check_tools.h" 20 21 #include "utils/noit_log.h" 21 22 #include "utils/noit_hash.h" … … 98 99 static int serf_handler(eventer_t e, int mask, void *closure, 99 100 struct timeval *now); 100 static int serf_recur_handler(eventer_t e, int mask, void *closure,101 struct timeval *now);102 101 static void serf_log_results(noit_module_t *self, noit_check_t *check); 103 102 static void resmon_log_results(noit_module_t *self, noit_check_t *check); … … 745 744 return 0; 746 745 } 747 static int serf_schedule_next(noit_module_t *self,748 struct timeval *last_check, noit_check_t *check,749 struct timeval *now) {750 eventer_t newe;751 struct timeval period, earliest;752 serf_closure_t *ccl;753 754 if(check->period == 0) return 0;755 756 /* If we have an event, we know when we intended it to fire. This means757 * we should schedule that point + period.758 */759 if(now)760 memcpy(&earliest, now, sizeof(earliest));761 else762 gettimeofday(&earliest, NULL);763 period.tv_sec = check->period / 1000;764 period.tv_usec = (check->period % 1000) * 1000;765 766 newe = eventer_alloc();767 memcpy(&newe->whence, last_check, sizeof(*last_check));768 add_timeval(newe->whence, period, &newe->whence);769 if(compare_timeval(newe->whence, earliest) < 0)770 memcpy(&newe->whence, &earliest, sizeof(earliest));771 newe->mask = EVENTER_TIMER;772 newe->callback = serf_recur_handler;773 ccl = calloc(1, sizeof(*ccl));774 ccl->self = self;775 ccl->check = check;776 newe->closure = ccl;777 778 eventer_add(newe);779 check->fire_event = newe;780 return 0;781 }782 static int serf_recur_handler(eventer_t e, int mask, void *closure,783 struct timeval *now) {784 serf_closure_t *cl = (serf_closure_t *)closure;785 serf_schedule_next(cl->self, &e->whence, cl->check, now);786 serf_initiate(cl->self, cl->check);787 free(cl);788 return 0;789 }790 746 static void serf_cleanup(noit_module_t *self, noit_check_t *check) { 791 747 serf_check_info_t *sci; … … 813 769 struct timeval epoch = { 0L, 0L }; 814 770 noit_check_fake_last_check(check, &epoch, NULL); 815 serf_schedule_next(self, &epoch, check, NULL);771 noit_check_schedule_next(self, &epoch, check, NULL, serf_initiate); 816 772 } 817 773 return 0; … … 828 784 struct timeval epoch = { 0L, 0L }; 829 785 noit_check_fake_last_check(check, &epoch, NULL); 830 serf_schedule_next(self, &epoch, check, NULL);786 noit_check_schedule_next(self, &epoch, check, NULL, serf_initiate); 831 787 } 832 788 return 0; … … 892 848 } 893 849 if(!check->fire_event) 894 serf_schedule_next(self, NULL, check, NULL);850 noit_check_schedule_next(self, NULL, check, NULL, serf_initiate); 895 851 return 0; 896 852 } … … 909 865 eventer_name_callback("http/serf_handler", serf_handler); 910 866 eventer_name_callback("http/serf_complete", serf_complete); 911 eventer_name_callback("http/serf_recur_handler", serf_recur_handler);912 867 return 0; 913 868 } src/modules/ping_icmp.c
r7b92762 r9a6060c 22 22 #include "noit_module.h" 23 23 #include "noit_check.h" 24 #include "noit_check_tools.h" 24 25 #include "utils/noit_log.h" 25 26 … … 50 51 static noit_log_stream_t nlerr = NULL; 51 52 static noit_log_stream_t nldeb = NULL; 52 static int ping_icmp_recur_handler(eventer_t e, int mask, void *closure,53 struct timeval *now);54 53 static int in_cksum(u_short *addr, int len); 55 54 … … 442 441 return 0; 443 442 } 444 static int ping_icmp_schedule_next(noit_module_t *self,445 struct timeval *last_check,446 noit_check_t *check,447 struct timeval *now) {448 eventer_t newe;449 struct timeval period, earliest;450 struct ping_closure *pcl;451 452 if(check->period == 0) return 0;453 if(NOIT_CHECK_DISABLED(check) || NOIT_CHECK_KILLED(check)) return 0;454 455 /* If we have an event, we know when we intended it to fire. This means456 * we should schedule that point + period.457 */458 if(now)459 memcpy(&earliest, now, sizeof(earliest));460 else461 gettimeofday(&earliest, NULL);462 period.tv_sec = check->period / 1000;463 period.tv_usec = (check->period % 1000) * 1000;464 465 newe = eventer_alloc();466 memcpy(&newe->whence, last_check, sizeof(*last_check));467 add_timeval(newe->whence, period, &newe->whence);468 if(compare_timeval(newe->whence, earliest) < 0)469 memcpy(&newe->whence, &earliest, sizeof(earliest));470 newe->mask = EVENTER_TIMER;471 newe->callback = ping_icmp_recur_handler;472 pcl = calloc(1, sizeof(*pcl));473 pcl->self = self;474 pcl->check = check;475 newe->closure = pcl;476 477 eventer_add(newe);478 check->fire_event = newe;479 return 0;480 }481 static int ping_icmp_recur_handler(eventer_t e, int mask, void *closure,482 struct timeval *now) {483 struct ping_closure *cl = (struct ping_closure *)closure;484 cl->check->fire_event = NULL;485 ping_icmp_schedule_next(cl->self, &e->whence, cl->check, now);486 ping_icmp_send(cl->self, cl->check);487 free(cl);488 return 0;489 }490 443 static int ping_icmp_initiate_check(noit_module_t *self, noit_check_t *check, 491 444 int once, noit_check_t *cause) { … … 498 451 struct timeval epoch; 499 452 noit_check_fake_last_check(check, &epoch, NULL); 500 ping_icmp_schedule_next(self, &epoch, check, NULL);453 noit_check_schedule_next(self, &epoch, check, NULL, ping_icmp_send); 501 454 } 502 455 return 0; … … 549 502 if(!nlerr) nlerr = noit_stderr; 550 503 if(!nldeb) nldeb = noit_debug; 551 eventer_name_callback("ping_icmp/recur_handler", ping_icmp_recur_handler);552 504 eventer_name_callback("ping_icmp/timeout", ping_icmp_timeout); 553 505 eventer_name_callback("ping_icmp/handler", ping_icmp_handler); src/modules/snmp.c
r4368e68 r9a6060c 75 75 NULL, NULL); 76 76 } 77 78 static int noit_snmp_recur_handler(eventer_t e, int mask, void *closure,79 struct timeval *now);80 77 81 78 static int noit_snmp_init(noit_module_t *self) { … … 449 446 } 450 447 451 static int noit_snmp_schedule_next(noit_module_t *self,452 struct timeval *last_check,453 noit_check_t *check,454 struct timeval *now) {455 eventer_t newe;456 struct timeval period, earliest;457 struct snmp_check_closure *scc;458 459 if(check->period == 0) return 0;460 if(NOIT_CHECK_DISABLED(check) || NOIT_CHECK_KILLED(check)) return 0;461 462 /* If we have an event, we know when we intended it to fire. This means463 * we should schedule that point + period.464 */465 if(now)466 memcpy(&earliest, now, sizeof(earliest));467 else468 gettimeofday(&earliest, NULL);469 period.tv_sec = check->period / 1000;470 period.tv_usec = (check->period % 1000) * 1000;471 472 newe = eventer_alloc();473 memcpy(&newe->whence, last_check, sizeof(*last_check));474 add_timeval(newe->whence, period, &newe->whence);475 if(compare_timeval(newe->whence, earliest) < 0)476 memcpy(&newe->whence, &earliest, sizeof(earliest));477 newe->mask = EVENTER_TIMER;478 newe->callback = noit_snmp_recur_handler;479 scc = calloc(1, sizeof(*scc));480 scc->self = self;481 scc->check = check;482 newe->closure = scc;483 484 eventer_add(newe);485 check->fire_event = newe;486 return 0;487 }488 489 static int noit_snmp_recur_handler(eventer_t e, int mask, void *closure,490 struct timeval *now) {491 struct snmp_check_closure *cl = closure;492 cl->check->fire_event = NULL;493 noit_snmp_schedule_next(cl->self, &e->whence, cl->check, now);494 noit_snmp_send(cl->self, cl->check);495 free(cl);496 return 0;497 }498 499 448 static int noit_snmp_initiate_check(noit_module_t *self, noit_check_t *check, 500 449 int once, noit_check_t *cause) { … … 507 456 struct timeval epoch; 508 457 noit_check_fake_last_check(check, &epoch, NULL); 509 noit_ snmp_schedule_next(self, &epoch, check, NULL);458 noit_check_schedule_next(self, &epoch, check, NULL, noit_snmp_send); 510 459 } 511 460 return 0; … … 520 469 if(!nlerr) nlerr = noit_stderr; 521 470 if(!nldeb) nldeb = noit_debug; 522 eventer_name_callback("noit_snmp/recur_handler", noit_snmp_recur_handler);523 471 eventer_name_callback("noit_snmp/check_timeout", noit_snmp_check_timeout); 524 472 eventer_name_callback("noit_snmp/session_timeout", noit_snmp_session_timeout); src/noit_check_tools.c
rce72dc2 r9a6060c 6 6 #include "noit_defines.h" 7 7 #include "noit_check_tools.h" 8 9 #include <assert.h> 10 11 typedef struct { 12 noit_module_t *self; 13 noit_check_t *check; 14 dispatch_func_t dispatch; 15 } recur_closure_t; 8 16 9 17 int … … 55 63 } 56 64 65 static int 66 noit_check_recur_handler(eventer_t e, int mask, void *closure, 67 struct timeval *now) { 68 recur_closure_t *rcl = closure; 69 rcl->check->fire_event = NULL; /* This is us, we get free post-return */ 70 noit_check_schedule_next(rcl->self, &e->whence, rcl->check, now, 71 rcl->dispatch); 72 rcl->dispatch(rcl->self, rcl->check); 73 free(rcl); 74 return 0; 75 } 76 77 int 78 noit_check_schedule_next(noit_module_t *self, 79 struct timeval *last_check, noit_check_t *check, 80 struct timeval *now, dispatch_func_t dispatch) { 81 eventer_t newe; 82 struct timeval period, earliest; 83 recur_closure_t *rcl; 84 85 assert(check->fire_event == NULL); 86 if(check->period == 0) return 0; 87 if(NOIT_CHECK_DISABLED(check) || NOIT_CHECK_KILLED(check)) return 0; 88 89 /* If we have an event, we know when we intended it to fire. This means 90 * we should schedule that point + period. 91 */ 92 if(now) 93 memcpy(&earliest, now, sizeof(earliest)); 94 else 95 gettimeofday(&earliest, NULL); 96 period.tv_sec = check->period / 1000; 97 period.tv_usec = (check->period % 1000) * 1000; 98 99 newe = eventer_alloc(); 100 memcpy(&newe->whence, last_check, sizeof(*last_check)); 101 add_timeval(newe->whence, period, &newe->whence); 102 if(compare_timeval(newe->whence, earliest) < 0) 103 memcpy(&newe->whence, &earliest, sizeof(earliest)); 104 newe->mask = EVENTER_TIMER; 105 newe->callback = noit_check_recur_handler; 106 rcl = calloc(1, sizeof(*rcl)); 107 rcl->self = self; 108 rcl->check = check; 109 rcl->dispatch = dispatch; 110 newe->closure = rcl; 111 112 eventer_add(newe); 113 check->fire_event = newe; 114 return 0; 115 } 116 src/noit_check_tools.h
rce72dc2 r9a6060c 8 8 9 9 #include "noit_defines.h" 10 #include "eventer/eventer.h" 11 #include "noit_module.h" 12 #include "noit_check.h" 10 13 #include "utils/noit_hash.h" 14 15 typedef int (*dispatch_func_t)(noit_module_t *, noit_check_t *); 11 16 12 17 API_EXPORT(int) … … 15 20 noit_hash_table *config); 16 21 22 API_EXPORT(int) 23 noit_check_schedule_next(noit_module_t *self, 24 struct timeval *last_check, noit_check_t *check, 25 struct timeval *now, dispatch_func_t recur); 26 17 27 #endif 18 28
