⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hello.h

📁 unix/linux下的路由守护程序
💻 H
字号:
/* * Public Release 3 *  * $Id: hello.h,v 1.1 1998/06/30 14:42:07 wfs Exp $ *//* * ------------------------------------------------------------------------ *  * Copyright (c) 1996, 1997 The Regents of the University of Michigan * All Rights Reserved *   * Royalty-free licenses to redistribute GateD Release * 3 in whole or in part may be obtained by writing to: *  * 	Merit GateDaemon Project * 	4251 Plymouth Road, Suite C * 	Ann Arbor, MI 48105 *   * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF THE * UNIVERSITY OF MICHIGAN AND MERIT DO NOT WARRANT THAT THE * FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET LICENSEE'S REQUIREMENTS OR * THAT OPERATION WILL BE UNINTERRUPTED OR ERROR FREE. The Regents of the * University of Michigan and Merit shall not be liable for * any special, indirect, incidental or consequential damages with respect * to any claim by Licensee or any third party arising from use of the * software. GateDaemon was originated and developed through release 3.0 * by Cornell University and its collaborators. *  * Please forward bug fixes, enhancements and questions to the * gated mailing list: gated-people@gated.merit.edu. *  * ------------------------------------------------------------------------ *  * Copyright (c) 1990,1991,1992,1993,1994,1995 by Cornell University. *     All rights reserved. *  * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. *  * GateD is based on Kirton's EGP, UC Berkeley's routing * daemon	 (routed), and DCN's HELLO routing Protocol. * Development of GateD has been supported in part by the * National Science Foundation. *  * ------------------------------------------------------------------------ *  * Portions of this software may fall under the following * copyrights: *  * Copyright (c) 1988 Regents of the University of California. * All rights reserved. *  * Redistribution and use in source and binary forms are * permitted provided that the above copyright notice and * this paragraph are duplicated in all such forms and that * any documentation, advertising materials, and other * materials related to such distribution and use * acknowledge that the software was developed by the * University of California, Berkeley.  The name of the * University may not be used to endorse or promote * products derived from this software without specific * prior written permission.  THIS SOFTWARE IS PROVIDED * ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#ifdef	PROTO_HELLO#ifndef IPPROTO_HELLO#define	IPPROTO_HELLO		63#endif	/* IPPROTO_HELLO */#define	HELLO_UNREACHABLE	30000			/* in ms */#define	HELLO_HOP		100			/* minimum delay */#define	HELLO_T_UPDATE		(time_t) 15		/* in seconds */#define	HELLO_T_HOLDDOWN	(time_t) 120		/* in seconds */#define	HELLO_T_EXPIRE		(time_t) 180		/* in seconds */#define	HELLO_T_FLASH	(time_t) (grand((u_int32) (HELLO_T_MAX - HELLO_T_MIN + 1)) + HELLO_T_MIN)#define	HELLO_T_MAX	(time_t) 5#define	HELLO_T_MIN	(time_t) 1#define	HELLO_HYST(s)	(s >> 2)	/* 25% of old route, in ms *//* For parser */#define	HELLO_LIMIT_DELAY	HELLO_HOP, HELLO_UNREACHABLE#define	HELLO_CONFIG_IN			1#define	HELLO_CONFIG_OUT		2#define	HELLO_CONFIG_METRICIN		3#define	HELLO_CONFIG_METRICOUT		4#define	HELLO_CONFIG_MAX		5#define	HELLO_DEFAULT	0		/* net 0 as default */#define	METRIC_DIFF(x,y)	(x > y ? x - y : y - x)/* Task specific info */#define	HELLO_HOLDCOUNT		(HELLO_T_HOLDDOWN/HELLO_T_UPDATE)	/* Number of updates per holddown *//*	Define the DCN HELLO protocol packet			*/struct hellohdr {    u_int16 h_cksum;			/* Ip checksum of this header and data ares */    u_int16 h_date;			/* Julian days since 1 January 1972 */    u_int32 h_time;			/* Local time (milliseconds since midnight UT) */    u_int16 h_tstp;			/* (used to calculate delay/offset) */};#define	Size_hellohdr	10#define	PickUp_hellohdr(s, hellohdr) \  PickUp(s, hellohdr.h_cksum); \  PickUp(s, hellohdr.h_date); GNTOHS(hellohdr.h_date); \  PickUp(s, hellohdr.h_time); GNTOHL(hellohdr.h_time); \  PickUp(s, hellohdr.h_tstp); GNTOHS(hellohdr.h_tstp);#define	PutDown_hellohdr(s, hellohdr) \  PutDown(s, hellohdr.h_cksum);\  GHTONS(hellohdr.h_date); PutDown(s, hellohdr.h_date);\  GHTONL(hellohdr.h_time); PutDown(s, hellohdr.h_time);\  GHTONS(hellohdr.h_tstp); PutDown(s, hellohdr.h_tstp);#define	H_DATE_BITS	0xC000		/* Flag bits */#define	H_DATE_LEAPADD	0x4000		/* Insert leap second at end of current day */#define	H_DATE_LEAPDEL	0x8000		/* Delete leap second at end of current day */#define	H_DATE_UNSYNC	0xC000		/* Clock is unsynchronized */#define	H_DATE_MON_SHIFT	10#define	H_DATE_MON_MASK		0x0f#define	H_DATE_DAY_SHIFT	5#define	H_DATE_DAY_MASK		0x1f#define	H_DATE_YEAR_SHIFT	0#define	H_DATE_YEAR_MASK	0x1f#define	H_DATE_YEAR_BASE	72struct hm_hdr {    u_int8 hm_count;			/* Number of elements that follow */    u_int8 hm_type;			/* Type of elements */};#define	Size_hm_hdr	2#define	PickUp_hm_hdr(s, hm_hdr) \  PickUp(s, hm_hdr.hm_count);\  PickUp(s, hm_hdr.hm_type);#define	PutDown_hm_hdr(s, hm_hdr) \  PutDown(s, hm_hdr.hm_count);\  PutDown(s, hm_hdr.hm_type);struct type0pair {    u_int16 d0_delay;			/* Delay to peer (milliseconds) */    u_int16 d0_offset;			/* Clock offset of peer (milliseconds) */};#define	Size_type0pair	4#define	PickUp_type0pair(s, type0pair) \  PickUp(s, type0pair.d0_delay);  GNTOHS(type0pair.d0_delay);\  PickUp(s, type0pair.d0_offset); GNTOHS(type0pair.d0_offset);#define	PutDown_type0pair(s, type0pair) \  GHTONS(type0pair.d0_delay); PutDown(s, type0pair.d0_delay);\  GHTONS(type0pair.d0_offset); PutDown(s, type0pair.d0_offset);struct type1pair {    u_int32 d1_dst;			/* IP host/network address */    u_int16 d1_delay;			/* Delay to peer (milliseconds) */    s_int16 d1_offset;			/* CLock offset of peer (milliseconds) */};#define	Size_type1pair	8#define	PickUp_type1pair(s, type1pair) \  PickUp(s, type1pair.d1_dst);\  PickUp(s, type1pair.d1_delay); GNTOHS(type1pair.d1_delay);\  PickUp(s, type1pair.d1_offset); GNTOHS(type1pair.d1_offset);#define	PutDown_type1pair(s, type1pair) \  PutDown(s, type1pair.d1_dst);\  GHTONS(type1pair.d1_delay); PutDown(s, type1pair.d1_delay);\  GHTONS(type1pair.d1_offset); PutDown(s, type1pair.d1_offset);#define	WINDOW_INTERVAL		6	/* in minutes */#define HELLO_INTERVAL		15	/* HELLO rate coming in, in secs */#define HWINSIZE		(WINDOW_INTERVAL * (60 / HELLO_INTERVAL))#define HELLO_REPORT	8		/* how far back we will report */struct hello_win {    metric_t h_win[HWINSIZE];    int h_index;    metric_t h_min;    int h_min_ttl;};extern flag_t hello_flags;		/* Options */extern trace *hello_trace_options;	/* Trace flags from parser */extern metric_t hello_default_metric;	/* Default metric to use when propogating */extern pref_t hello_preference;		/* Preference for HELLO routes */extern int hello_n_trusted;		/* Number of trusted gateways */extern int hello_n_source;		/* Number of gateways to receive explicit HELLO packets */extern gw_entry *hello_gw_list;		/* List of defined and learned HELLO gateways */extern adv_entry *hello_import_list;extern adv_entry *hello_export_list;extern adv_entry *hello_int_policy;	/* List of interface policy */extern const bits hello_trace_types[];	/* HELLO specific trace flags *//* Values for hello_flags */#define	HELLOF_ON		BIT(0x01)		/* HELLO is enabled */#define	HELLOF_BROADCAST	BIT(0x02)		/* Broadcast to all interfaces */#define	HELLOF_SOURCE		BIT(0x04)		/* Source packets to our peers */#define	HELLOF_CHOOSE		BIT(0x08)		/* Broadcast if more than one interface */#define	HELLOF_FLASHDUE		BIT(0x10)		/* A Flash update is due when flash time expires */#define	HELLOF_NOFLASH		BIT(0x20)		/* No flash update until normal update */#define	HELLOF_RECONFIG		BIT(0x40)		/* In the process of reconfiguration *//* Tracing */#define	TR_HELLO_INDEX_PACKETS	0	/* All packets */#define	TR_HELLO_DETAIL		TR_DETAIL_1#define	HELLO_TARGET_VALID(tlp)	((BIT_TEST(hello_flags, HELLOF_SOURCE) && BIT_TEST(tlp->flag, TARGETF_SOURCE)) || \				 (BIT_TEST(hello_flags, HELLOF_BROADCAST) && BIT_TEST(tlp->flag, TARGETF_BROADCAST)))PROTOTYPE(hello_init, extern void, (void));PROTOTYPE(hello_var_init, extern void, (void));#endif	/* PROTO_HELLO */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -