summaryrefslogtreecommitdiff
path: root/usr.sbin/hoststated/hoststated.h
diff options
context:
space:
mode:
authorReyk Floeter <reyk@cvs.openbsd.org>2006-12-25 18:12:15 +0000
committerReyk Floeter <reyk@cvs.openbsd.org>2006-12-25 18:12:15 +0000
commitf3fad17adc058fa4b390883d549172f14b3ef6e0 (patch)
tree400b423fda25aca3d5b4a192092487717eafa30c /usr.sbin/hoststated/hoststated.h
parent6582d5889c3f67dc10b7321a3e8e5377ecb339eb (diff)
partial rewrite of the check_* routines to use libevent everywhere
instead of nested select() calls and to handle the non-blocking sockets properly. From Pierre-Yves Ritschard (pyr at spootnik dot org) (with a little help by me)
Diffstat (limited to 'usr.sbin/hoststated/hoststated.h')
-rw-r--r--usr.sbin/hoststated/hoststated.h43
1 files changed, 34 insertions, 9 deletions
diff --git a/usr.sbin/hoststated/hoststated.h b/usr.sbin/hoststated/hoststated.h
index 2187d838a3f..4ca1519bae2 100644
--- a/usr.sbin/hoststated/hoststated.h
+++ b/usr.sbin/hoststated/hoststated.h
@@ -20,7 +20,7 @@
#define PF_SOCKET "/dev/pf"
#define HOSTATED_USER "_hostated"
#define HOSTATED_ANCHOR "hostated"
-#define CONNECT_TIMEOUT 200
+#define CHECK_TIMEOUT 200
#define CHECK_INTERVAL 10
#define EMPTY_TABLE UINT_MAX
#define EMPTY_ID UINT_MAX
@@ -30,7 +30,8 @@
#define MAX_NAME_SIZE 64
#define SRV_MAX_VIRTS 16
-#define READ_BUF_SIZE 65535
+#define SMALL_READ_BUF_SIZE 1024
+#define READ_BUF_SIZE 65535
/* buffer */
struct buf {
@@ -120,6 +121,25 @@ struct ctl_id {
char name[MAX_NAME_SIZE];
};
+struct ctl_icmp_event {
+ struct hostated *env;
+ int icmp_sock;
+ int icmp6_sock;
+ int has_icmp4;
+ int has_icmp6;
+ int last_up;
+ struct event ev;
+ struct timeval tv_start;
+};
+
+struct ctl_tcp_event {
+ int s;
+ struct buf *buf;
+ struct host *host;
+ struct table *table;
+ struct timeval tv_start;
+};
+
struct address {
struct sockaddr_storage ss;
in_port_t port;
@@ -130,8 +150,9 @@ TAILQ_HEAD(addresslist, address);
#define F_DISABLE 0x01
#define F_BACKUP 0x02
+#define F_CHECK_DONE 0x02 /* reused for host */
#define F_USED 0x04
-#define F_ACTIVE_RULESET 0x04
+#define F_ACTIVE_RULESET 0x04 /* reused for service */
#define F_DOWN 0x08
#define F_ADD 0x10
#define F_DEL 0x20
@@ -144,7 +165,9 @@ struct host {
char *tablename;
char name[MAXHOSTNAMELEN];
int up;
+ int last_up;
struct sockaddr_storage ss;
+ struct ctl_tcp_event cte;
TAILQ_ENTRY(host) entry;
};
TAILQ_HEAD(hostlist, host);
@@ -203,10 +226,12 @@ struct hostated {
int icmp6_sock;
int tablecount;
int servicecount;
+ int timeout;
struct table empty_table;
struct event ev;
struct tablelist tables;
struct servicelist services;
+ struct ctl_icmp_event cie;
};
#define HOSTATED_OPT_VERBOSE 0x01
@@ -299,17 +324,17 @@ void flush_rulesets(struct hostated *);
/* hce.c */
pid_t hce(struct hostated *, int [2], int [2], int [2]);
+void hce_notify_done(struct host *, const char *);
/* check_icmp.c */
-int check_icmp(struct host *, int, int, int);
+void schedule_icmp(struct ctl_icmp_event *, struct table *);
+void check_icmp(struct ctl_icmp_event *);
/* check_tcp.c */
-int check_tcp(struct host *, struct table *);
-int tcp_connect(struct host *, struct table *);
+void check_tcp(struct ctl_tcp_event *);
-/* check_tcp.c */
-int check_http_code(struct host *, struct table *);
-int check_http_digest(struct host *, struct table *);
+/* check_http.c */
+void send_http_request(struct ctl_tcp_event *);
/* hostated.c */
struct host *host_find(struct hostated *, objid_t);