[Nagiosplug-checkins] nagiosplug/plugins linux.h,NONE,1.1

Stanley Hopcroft stanleyhopcroft at users.sourceforge.net
Thu Dec 2 00:45:02 CET 2004


Update of /cvsroot/nagiosplug/nagiosplug/plugins
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17449

Added Files:
	linux.h 
Log Message:
For check_icmp plugin from A Ericsson

--- NEW FILE: linux.h ---
/*
 * 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 at 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 */





More information about the Commits mailing list