87 |
#include <syslog.h> |
#include <syslog.h> |
88 |
#endif |
#endif |
89 |
|
|
90 |
|
#ifdef HAVE_NETINET_IP_ICMP_H |
91 |
|
#include <netinet/ip_icmp.h> |
92 |
|
#endif |
93 |
|
|
94 |
#include "net.h" |
#include "net.h" |
95 |
#include "monitor.h" |
#include "monitor.h" |
96 |
#include "protocol.h" |
#include "protocol.h" |
175 |
int action; |
int action; |
176 |
}; |
}; |
177 |
|
|
178 |
|
struct IcmpSet { |
179 |
|
int type; |
180 |
|
int timeout; |
181 |
|
int action; |
182 |
|
}; |
183 |
|
|
184 |
/* yacc interface */ |
/* yacc interface */ |
185 |
void yyerror(const char *); |
void yyerror(const char *); |
186 |
|
|
211 |
static struct UidSet uidset= {0, ACTION_ALERT}; |
static struct UidSet uidset= {0, ACTION_ALERT}; |
212 |
static struct GidSet gidset= {0, ACTION_ALERT}; |
static struct GidSet gidset= {0, ACTION_ALERT}; |
213 |
static struct DeviceSet deviceset= {0, OPERATOR_EQUAL, -1, -1, ACTION_ALERT}; |
static struct DeviceSet deviceset= {0, OPERATOR_EQUAL, -1, -1, ACTION_ALERT}; |
214 |
|
static struct IcmpSet icmpset= {ICMP_ECHO, NET_TIMEOUT, ACTION_ALERT}; |
215 |
|
|
216 |
/* Private prototypes */ |
/* Private prototypes */ |
217 |
static void initialize(); |
static void initialize(); |
225 |
static void addtimestamp(struct TimestampSet *); |
static void addtimestamp(struct TimestampSet *); |
226 |
static void addsize(struct SizeSet *); |
static void addsize(struct SizeSet *); |
227 |
static void adddevice(struct DeviceSet *); |
static void adddevice(struct DeviceSet *); |
228 |
|
static void addicmp(struct IcmpSet *); |
229 |
static void *addprotocol(int); |
static void *addprotocol(int); |
230 |
static void addcommand(int); |
static void addcommand(int); |
231 |
static void addargument(char *); |
static void addargument(char *); |
253 |
static void reset_uidset(); |
static void reset_uidset(); |
254 |
static void reset_gidset(); |
static void reset_gidset(); |
255 |
static void reset_deviceset(); |
static void reset_deviceset(); |
256 |
|
static void reset_icmpset(); |
257 |
static void check_name(char *); |
static void check_name(char *); |
258 |
static void check_timeout(int, int); |
static void check_timeout(int, int); |
259 |
static void check_every(int); |
static void check_every(int); |
278 |
%token IF THEN ELSE FAILED CYCLE |
%token IF THEN ELSE FAILED CYCLE |
279 |
%token SET LOGFILE FACILITY DAEMON SYSLOG MAILSERVER HTTPD ALLOW ADDRESS INIT |
%token SET LOGFILE FACILITY DAEMON SYSLOG MAILSERVER HTTPD ALLOW ADDRESS INIT |
280 |
%token PEMFILE ENABLE DISABLE HTTPDSSL CLIENTPEMFILE ALLOWSELFCERTIFICATION |
%token PEMFILE ENABLE DISABLE HTTPDSSL CLIENTPEMFILE ALLOWSELFCERTIFICATION |
281 |
%token STATEFILE |
%token STATEFILE |
282 |
%token CHECK PIDFILE START STOP PATHTOK |
%token CHECK PIDFILE START STOP PATHTOK |
283 |
%token HOST PORT TYPE UDP TCP TCPSSL PROTOCOL CONNECTION |
%token HOST PORT TYPE UDP TCP TCPSSL PROTOCOL CONNECTION |
284 |
%token ALERT MAILFORMAT UNIXSOCKET |
%token ALERT MAILFORMAT UNIXSOCKET |
285 |
%token TIMEOUT RESTART CHECKSUM EXPECT EVERY |
%token TIMEOUT RESTART CHECKSUM EXPECT EVERY |
286 |
%token DEFAULT HTTP FTP SMTP POP IMAP NNTP SSH DWP LDAP2 LDAP3 RDATE RSYNC |
%token DEFAULT HTTP FTP SMTP POP IMAP NNTP SSH DWP LDAP2 LDAP3 RDATE RSYNC |
298 |
%token SSLAUTO SSLV2 SSLV3 TLSV1 CERTMD5 |
%token SSLAUTO SSLV2 SSLV3 TLSV1 CERTMD5 |
299 |
%token BYTE KILOBYTE MEGABYTE GIGABYTE |
%token BYTE KILOBYTE MEGABYTE GIGABYTE |
300 |
%token INODE SPACE PERMISSION SIZE |
%token INODE SPACE PERMISSION SIZE |
301 |
%token EXEC UNMONITOR |
%token EXEC UNMONITOR ICMP ICMPECHO |
302 |
|
|
303 |
%left GREATER LESS EQUAL NOTEQUAL |
%left GREATER LESS EQUAL NOTEQUAL |
304 |
|
|
408 |
opthost : start |
opthost : start |
409 |
| stop |
| stop |
410 |
| connection |
| connection |
411 |
|
| icmp |
412 |
| timeout |
| timeout |
413 |
| alert |
| alert |
414 |
| every |
| every |
639 |
} |
} |
640 |
; |
; |
641 |
|
|
642 |
|
icmp : IF FAILED ICMP icmptype nettimeout THEN action { |
643 |
|
icmpset.type= $<number>4; |
644 |
|
icmpset.timeout= $<number>5; |
645 |
|
icmpset.action= $<number>7; |
646 |
|
addicmp(&icmpset); |
647 |
|
} |
648 |
|
; |
649 |
|
|
650 |
host : /* EMPTY */ { |
host : /* EMPTY */ { |
651 |
if(current->type == TYPE_REMOTE) |
if(current->type == TYPE_REMOTE) |
652 |
portset.hostname= xstrdup(current->path); |
portset.hostname= xstrdup(current->path); |
1022 |
} |
} |
1023 |
; |
; |
1024 |
|
|
1025 |
|
icmptype : TYPE ICMPECHO { $<number>$= ICMP_ECHO; } |
1026 |
|
; |
1027 |
|
|
1028 |
%% |
%% |
1029 |
|
|
1030 |
|
|
1582 |
dev->limit_percent= ds->limit_percent; |
dev->limit_percent= ds->limit_percent; |
1583 |
dev->action= ds->action; |
dev->action= ds->action; |
1584 |
|
|
1585 |
|
if((dev->action == ACTION_EXEC) && command) { |
1586 |
|
dev->exec= command; |
1587 |
|
command= NULL; |
1588 |
|
} |
1589 |
|
|
1590 |
dev->next= current->devicelist; |
dev->next= current->devicelist; |
1591 |
current->devicelist= dev; |
current->devicelist= dev; |
1592 |
|
|
1596 |
|
|
1597 |
|
|
1598 |
/* |
/* |
1599 |
|
* Add a new icmp object to the current service's icmp list |
1600 |
|
*/ |
1601 |
|
static void addicmp(struct IcmpSet *is) { |
1602 |
|
|
1603 |
|
Icmp_T icmp; |
1604 |
|
|
1605 |
|
ASSERT(is); |
1606 |
|
|
1607 |
|
NEW(icmp); |
1608 |
|
icmp->type= is->type; |
1609 |
|
icmp->timeout= is->timeout; |
1610 |
|
icmp->action= is->action; |
1611 |
|
|
1612 |
|
if((icmp->action == ACTION_EXEC) && command) { |
1613 |
|
icmp->exec= command; |
1614 |
|
command= NULL; |
1615 |
|
} |
1616 |
|
|
1617 |
|
icmp->next= current->icmplist; |
1618 |
|
current->icmplist= icmp; |
1619 |
|
|
1620 |
|
reset_icmpset(); |
1621 |
|
|
1622 |
|
} |
1623 |
|
|
1624 |
|
|
1625 |
|
/* |
1626 |
* Adds runtime device info to current service |
* Adds runtime device info to current service |
1627 |
*/ |
*/ |
1628 |
static void createdevinfo() { |
static void createdevinfo() { |
2129 |
|
|
2130 |
} |
} |
2131 |
|
|
2132 |
|
|
2133 |
|
/* |
2134 |
|
* Reset the ICMP set to default values |
2135 |
|
*/ |
2136 |
|
static void reset_icmpset() { |
2137 |
|
|
2138 |
|
icmpset.type= ICMP_ECHO; |
2139 |
|
icmpset.timeout= NET_TIMEOUT; |
2140 |
|
icmpset.action= ACTION_ALERT; |
2141 |
|
|
2142 |
|
} |
2143 |
|
|
2144 |
|
|
2145 |
/* ---------------------------------------------------------------- Checkers */ |
/* ---------------------------------------------------------------- Checkers */ |
2146 |
|
|