📄 ospfd.h
字号:
/* * 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 + -