Selaa lähdekoodia

For check_icmp plugin from A Ericsson

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@974 f882894a-f735-0410-b71e-b25c423dba1c
Stanley Hopcroft 21 vuotta sitten
vanhempi
commit
3c925e8c0c
1 muutettua tiedostoa jossa 135 lisäystä ja 0 poistoa
  1. 135 0
      plugins/linux.h

+ 135 - 0
plugins/linux.h

@@ -0,0 +1,135 @@
+/*
+ * Special compatibility definitions for linux.
+ *
+ *	On the linux platform, several IP-related structures have
+ *	different names. Also some of the structure fields have
+ *	other names, although the layout is (obviously) fixed.
+ *	Several constants are not defined in the standard files.
+ *
+ *	@(#)linux.h             e07@nikhef.nl (Eric Wassenaar) 960301
+ * 
+ * XXX [src] - This is a complete ripoff from the fping program
+ */
+
+#if defined(linux)
+
+#include <endian.h>				/* to get the proper BYTE_ORDER */
+
+#if !defined(BYTE_ORDER) || (BYTE_ORDER != BIG_ENDIAN && \
+     BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != PDP_ENDIAN)
+error "Undefined or invalid BYTE_ORDER";
+#endif
+
+/*
+ * Structure of an ip header, without options.
+ */
+
+#define	IPVERSION	4
+
+struct ip {
+#if (BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN)
+	u_char ip_hl:4,				/* header length */
+	  ip_v:4;					/* version */
+#else
+	u_char ip_v:4,				/* version */
+	  ip_hl:4;					/* header length */
+#endif
+	u_char ip_tos;				/* type of service */
+	short ip_len;				/* total length */
+	u_short ip_id;				/* identification */
+	short ip_off;				/* fragment offset field */
+#define	IP_DF 0x4000			/* dont fragment flag */
+#define	IP_MF 0x2000			/* more fragments flag */
+	u_char ip_ttl;				/* time to live */
+	u_char ip_p;				/* protocol */
+	u_short ip_sum;				/* checksum */
+	struct in_addr ip_src, ip_dst;	/* source and dest address */
+};
+
+#define	IP_MAXPACKET	65535	/* maximum packet size */
+
+/*
+ * Structure of an icmp header.
+ */
+
+struct icmp {
+	u_char icmp_type;			/* type of message, see below */
+	u_char icmp_code;			/* type sub code */
+	u_short icmp_cksum;			/* ones complement cksum of struct */
+	union {
+		u_char ih_pptr;			/* ICMP_PARAMPROB */
+		struct in_addr ih_gwaddr;	/* ICMP_REDIRECT */
+		struct ih_idseq {
+			n_short icd_id;
+			n_short icd_seq;
+		} ih_idseq;
+		int ih_void;
+	} icmp_hun;
+#define	icmp_pptr	icmp_hun.ih_pptr
+#define	icmp_gwaddr	icmp_hun.ih_gwaddr
+#define	icmp_id		icmp_hun.ih_idseq.icd_id
+#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
+#define	icmp_void	icmp_hun.ih_void
+	union {
+		struct id_ts {
+			n_time its_otime;
+			n_time its_rtime;
+			n_time its_ttime;
+		} id_ts;
+		struct id_ip {
+			struct ip idi_ip;
+			/* options and then 64 bits of data */
+		} id_ip;
+		u_long id_mask;
+		char id_data[1];
+	} icmp_dun;
+#define	icmp_otime	icmp_dun.id_ts.its_otime
+#define	icmp_rtime	icmp_dun.id_ts.its_rtime
+#define	icmp_ttime	icmp_dun.id_ts.its_ttime
+#define	icmp_ip		icmp_dun.id_ip.idi_ip
+#define	icmp_mask	icmp_dun.id_mask
+#define	icmp_data	icmp_dun.id_data
+};
+
+#define	ICMP_MINLEN	8			/* abs minimum */
+
+/*
+ * Definition of icmp type and code field values.
+ */
+
+#define	ICMP_ECHOREPLY		0	/* echo reply */
+#define	ICMP_UNREACH		3	/* dest unreachable, codes: */
+#define		ICMP_UNREACH_NET		0	/* bad net */
+#define		ICMP_UNREACH_HOST		1	/* bad host */
+#define		ICMP_UNREACH_PROTOCOL	2	/* bad protocol */
+#define		ICMP_UNREACH_PORT		3	/* bad port */
+#define		ICMP_UNREACH_NEEDFRAG	4	/* IP_DF caused drop */
+#define		ICMP_UNREACH_SRCFAIL	5	/* src route failed */
+#define	ICMP_SOURCEQUENCH	4	/* packet lost, slow down */
+#define	ICMP_REDIRECT		5	/* shorter route, codes: */
+#define		ICMP_REDIRECT_NET		0	/* for network */
+#define		ICMP_REDIRECT_HOST		1	/* for host */
+#define		ICMP_REDIRECT_TOSNET	2	/* for tos and net */
+#define		ICMP_REDIRECT_TOSHOST	3	/* for tos and host */
+#define	ICMP_ECHO			8	/* echo service */
+#define	ICMP_TIMXCEED		11	/* time exceeded, codes: */
+#define		ICMP_TIMXCEED_INTRANS	0	/* ttl==0 in transit */
+#define		ICMP_TIMXCEED_REASS		1	/* ttl==0 in reass */
+#define	ICMP_PARAMPROB		12		/* ip header bad */
+#define	ICMP_TSTAMP			13		/* timestamp request */
+#define	ICMP_TSTAMPREPLY	14		/* timestamp reply */
+#define	ICMP_IREQ			15		/* information request */
+#define	ICMP_IREQREPLY		16		/* information reply */
+#define	ICMP_MASKREQ		17		/* address mask request */
+#define	ICMP_MASKREPLY		18		/* address mask reply */
+
+/*
+ * Definitions needed for the udp header structure.
+ */
+
+#define uh_sport	source
+#define uh_dport	dest
+#define uh_ulen		len
+#define uh_sum		check
+
+#endif /* linux */