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

📄 ospfd.h

📁 router source code for the ospdf.
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * OSPFd main header. * Copyright (C) 1998, 99, 2000 Kunihiro Ishiguro, Toshiaki Takada * * This file is part of GNU Zebra. * * GNU Zebra is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. *  * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING.  If not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */#ifndef _ZEBRA_OSPFD_H#define _ZEBRA_OSPFD_H#include "filter.h"#define OSPF_VERSION            2/* Default protocol, port number. */#ifndef IPPROTO_OSPFIGP#define IPPROTO_OSPFIGP         89#endif /* IPPROTO_OSPFIGP *//* IP precedence. */#ifndef IPTOS_PREC_INTERNETCONTROL#define IPTOS_PREC_INTERNETCONTROL	0xC0#endif /* IPTOS_PREC_INTERNETCONTROL *//* VTY port number. */#define OSPF_VTY_PORT          2604#define OSPF_VTYSH_PATH        "/tmp/.ospfd"/* IP TTL for OSPF protocol. */#define OSPF_IP_TTL             1#define OSPF_VL_IP_TTL          100/* Default configuration file name for ospfd. */#define OSPF_DEFAULT_CONFIG   "ospfd.conf"/* Architectual Constants */#ifdef DEBUG#define OSPF_LS_REFRESH_TIME                    60#else#define OSPF_LS_REFRESH_TIME                  1800#endif#define OSPF_MIN_LS_INTERVAL                     5#define OSPF_MIN_LS_ARRIVAL                      1#define OSPF_LSA_MAXAGE                       3600#define OSPF_CHECK_AGE                         300#define OSPF_LSA_MAXAGE_DIFF                   900#define OSPF_LS_INFINITY                  0xffffff#define OSPF_DEFAULT_DESTINATION        0x00000000      /* 0.0.0.0 */#define OSPF_INITIAL_SEQUENCE_NUMBER    0x80000001#define OSPF_MAX_SEQUENCE_NUMBER        0x7fffffff#define OSPF_LSA_MAXAGE_CHECK_INTERVAL          30#define OSPF_ALLSPFROUTERS              0xe0000005      /* 224.0.0.5 */#define OSPF_ALLDROUTERS                0xe0000006      /* 224.0.0.6 */#ifdef HAVE_NSSA#define OSPF_LOOPer                     0x7f000000      /* 127.0.0.0 */#endif /* HAVE_NSSA */#define OSPF_AREA_BACKBONE              0x00000000      /* 0.0.0.0 *//* OSPF Authentication Type. */#define OSPF_AUTH_NULL                      0#define OSPF_AUTH_SIMPLE                    1#define OSPF_AUTH_CRYPTOGRAPHIC             2/* For Interface authentication setting default */#define OSPF_AUTH_NOTSET                   -1/* For the consumption and sanity of the command handler */ /* DO NIOT REMOVE!!! Need to detect whether a value has   been given or not in VLink command handlers */#define OSPF_AUTH_CMD_NOTSEEN              -2/* OSPF SPF timer values. */#define OSPF_SPF_DELAY_DEFAULT              5#define OSPF_SPF_HOLDTIME_DEFAULT          10/* OSPF interface default values. */#define OSPF_OUTPUT_COST_DEFAULT           10#define OSPF_ROUTER_DEAD_INTERVAL_DEFAULT  40#define OSPF_HELLO_INTERVAL_DEFAULT        10#define OSPF_ROUTER_PRIORITY_DEFAULT        1#define OSPF_RETRANSMIT_INTERVAL_DEFAULT    5#define OSPF_TRANSMIT_DELAY_DEFAULT         1#define OSPF_DEFAULT_BANDWIDTH		 10000	/* Kbps */#define OSPF_DEFAULT_REF_BANDWIDTH	100000  /* Kbps */#define OSPF_POLL_INTERVAL_DEFAULT         60#define OSPF_NEIGHBOR_PRIORITY_DEFAULT      0/* OSPF options. */#define OSPF_OPTION_T                    0x01  /* TOS. */#define OSPF_OPTION_E                    0x02#define OSPF_OPTION_MC                   0x04#define OSPF_OPTION_NP                   0x08#define OSPF_OPTION_EA                   0x10#define OSPF_OPTION_DC                   0x20#define OSPF_OPTION_O                    0x40/* OSPF Database Description flags. */#define OSPF_DD_FLAG_MS                  0x01#define OSPF_DD_FLAG_M                   0x02#define OSPF_DD_FLAG_I                   0x04#define OSPF_DD_FLAG_ALL                 0x07/* Timer value. */#define OSPF_ROUTER_ID_UPDATE_DELAY             1#define OSPF_LS_REFRESH_SHIFT       (60 * 15)#define OSPF_LS_REFRESH_JITTER      60/* OSPF master for system wide configuration and variables. */struct ospf_master{  /* OSPF instance. */  struct list *ospf;  /* OSPF thread master. */  struct thread_master *master;  /* Zebra interface list. */  struct list *iflist;  /* Redistributed external information. */  struct route_table *external_info[ZEBRA_ROUTE_MAX + 1];#define EXTERNAL_INFO(T)      om->external_info[T]  /* OSPF start time. */  time_t start_time;  /* Various OSPF global configuration. */  u_char options;};/* OSPF instance structure. */struct ospf{  /* OSPF Router ID. */  struct in_addr router_id;		/* Configured automatically. */  struct in_addr router_id_static;	/* Configured manually. */  /* ABR/ASBR internal flags. */  u_char flags;#define OSPF_FLAG_ABR           0x0001#define OSPF_FLAG_ASBR          0x0002  /* ABR type. */  u_char abr_type;#define OSPF_ABR_UNKNOWN	0#define OSPF_ABR_STAND          1#define OSPF_ABR_IBM            2#define OSPF_ABR_CISCO          3#define OSPF_ABR_SHORTCUT       4  /* NSSA ABR */  u_char anyNSSA;		/* Bump for every NSSA attached. */  /* Configured variables. */  u_char config;#define OSPF_RFC1583_COMPATIBLE         (1 << 0)#define OSPF_OPAQUE_CAPABLE		(1 << 2)#ifdef HAVE_OPAQUE_LSA  /* Opaque-LSA administrative flags. */  u_char opaque;#define OPAQUE_OPERATION_READY_BIT	(1 << 0)#define OPAQUE_BLOCK_TYPE_09_LSA_BIT	(1 << 1)#define OPAQUE_BLOCK_TYPE_10_LSA_BIT	(1 << 2)#define OPAQUE_BLOCK_TYPE_11_LSA_BIT	(1 << 3)#endif /* HAVE_OPAQUE_LSA */  int spf_delay;			/* SPF delay time. */  int spf_holdtime;			/* SPF hold time. */  int default_originate;		/* Default information originate. */#define DEFAULT_ORIGINATE_NONE		0#define DEFAULT_ORIGINATE_ZEBRA		1#define DEFAULT_ORIGINATE_ALWAYS	2  u_int32_t ref_bandwidth;		/* Reference Bandwidth (Kbps). */  struct route_table *networks;         /* OSPF config networks. */  list vlinks;                          /* Configured Virtual-Links. */  list areas;                           /* OSPF areas. */  struct route_table *nbr_nbma;  struct ospf_area *backbone;           /* Pointer to the Backbone Area. */  list oiflist;                         /* ospf interfaces */  /* LSDB of AS-external-LSAs. */  struct ospf_lsdb *lsdb;    /* Flags. */  int external_origin;			/* AS-external-LSA origin flag. */  int ase_calc;				/* ASE calculation flag. */#ifdef HAVE_OPAQUE_LSA  list opaque_lsa_self;			/* Type-11 Opaque-LSAs */#endif /* HAVE_OPAQUE_LSA */  /* Routing tables. */  struct route_table *old_table;        /* Old routing table. */  struct route_table *new_table;        /* Current routing table. */  struct route_table *old_rtrs;         /* Old ABR/ASBR RT. */  struct route_table *new_rtrs;         /* New ABR/ASBR RT. */  struct route_table *new_external_route;   /* New External Route. */  struct route_table *old_external_route;   /* Old External Route. */    struct route_table *external_lsas;    /* Database of external LSAs,					   prefix is LSA's adv. network*/  /* Time stamps. */  time_t ts_spf;			/* SPF calculation time stamp. */  list maxage_lsa;                      /* List of MaxAge LSA for deletion. */  int redistribute;                     /* Num of redistributed protocols. */  /* Threads. */  struct thread *t_router_id_update;	/* Router ID update timer. */  struct thread *t_router_lsa_update;   /* router-LSA update timer. */  struct thread *t_abr_task;            /* ABR task timer. */  struct thread *t_asbr_check;          /* ASBR check timer. */  struct thread *t_distribute_update;   /* Distirbute list update timer. */  struct thread *t_spf_calc;	        /* SPF calculation timer. */  struct thread *t_ase_calc;		/* ASE calculation timer. */  struct thread *t_external_lsa;	/* AS-external-LSA origin timer. */#ifdef HAVE_OPAQUE_LSA  struct thread *t_opaque_lsa_self;	/* Type-11 Opaque-LSAs origin event. */#endif /* HAVE_OPAQUE_LSA */  struct thread *t_maxage;              /* MaxAge LSA remover timer. */  struct thread *t_maxage_walker;       /* MaxAge LSA checking timer. */  struct thread *t_write;  struct thread *t_read;  int fd;  list oi_write_q;    /* Distribute lists out of other route sources. */  struct   {    char *name;    struct access_list *list;  } dlist[ZEBRA_ROUTE_MAX];#define DISTRIBUTE_NAME(O,T)    (O)->dlist[T].name#define DISTRIBUTE_LIST(O,T)    (O)->dlist[T].list  /* Redistribute metric info. */  struct   {    int type;                   /* External metric type (E1 or E2).  */    int value;		        /* Value for static metric (24-bit).				   -1 means metric value is not set. */  } dmetric [ZEBRA_ROUTE_MAX + 1];  /* For redistribute route map. */  struct  {    char *name;    struct route_map *map;  } route_map [ZEBRA_ROUTE_MAX + 1]; /* +1 is for default-information */#define ROUTEMAP_NAME(O,T)   (O)->route_map[T].name#define ROUTEMAP(O,T)        (O)->route_map[T].map    int default_metric;		/* Default metric for redistribute. */#define OSPF_LSA_REFRESHER_GRANULARITY 10#define OSPF_LSA_REFRESHER_SLOTS ((OSPF_LS_REFRESH_TIME + \                                  OSPF_LS_REFRESH_SHIFT)/10 + 1)  struct  {    u_int16_t index;    list qs[OSPF_LSA_REFRESHER_SLOTS];  } lsa_refresh_queue;    struct thread *t_lsa_refresher;

⌨️ 快捷键说明

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