📄 ospf_route.h
字号:
/* * OSPF routing table. * Copyright (C) 1999, 2000 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_OSPF_ROUTE_H#define _ZEBRA_OSPF_ROUTE_H#define OSPF_DESTINATION_ROUTER 1#define OSPF_DESTINATION_NETWORK 2#define OSPF_DESTINATION_DISCARD 3#define OSPF_PATH_MIN 0#define OSPF_PATH_INTRA_AREA 1#define OSPF_PATH_INTER_AREA 2#define OSPF_PATH_TYPE1_EXTERNAL 3#define OSPF_PATH_TYPE2_EXTERNAL 4#define OSPF_PATH_MAX 5/* OSPF Path. */struct ospf_path{ struct in_addr nexthop; struct in_addr adv_router; struct ospf_interface *oi;};/* Below is the structure linked to every route node. Note that for Network routing entries a single ospf_route is kept, while for ABRs and ASBRs (Router routing entries), we link an instance of ospf_router_route where a list of paths is maintained, so nr->info is a (struct ospf_route *) for OSPF_DESTINATION_NETWORK but nr->info is a (struct ospf_router_route *) for OSPF_DESTINATION_ROUTER*/struct route_standard{ /* Link Sate Origin. */ struct lsa_header *origin; /* Associated Area. */ struct in_addr area_id; /* The area the route belongs to */#ifdef HAVE_NSSA /* Area Type */ int external_routing;#endif /* HAVE_NSSA */ /* Optional Capability. */ u_char options; /* Get from LSA header. */ /* */ u_char flags; /* From router-LSA */};struct route_external{ /* Link State Origin. */ struct ospf_lsa *origin; /* Link State Cost Type2. */ u_int32_t type2_cost; /* Tag value. */ u_int32_t tag; /* ASBR route. */ struct ospf_route *asbr;};struct ospf_route{ /* Create time. */ time_t ctime; /* Modified time. */ time_t mtime; /* Destination Type. */ u_char type; /* Destination ID. */ /* i.e. Link State ID. */ struct in_addr id; /* Address Mask. */ struct in_addr mask; /* Only valid for networks. */ /* Path Type. */ u_char path_type; /* List of Paths. */ list path; /* Link State Cost. */ u_int32_t cost; /* i.e. metric. */ /* Route specific info. */ union { struct route_standard std; struct route_external ext; } u;};struct ospf_path *ospf_path_new ();void ospf_path_free (struct ospf_path *);struct ospf_path *ospf_path_lookup (list, struct ospf_path *);struct ospf_route *ospf_route_new ();void ospf_route_free (struct ospf_route *);void ospf_route_delete (struct route_table *);void ospf_route_table_free (struct route_table *);void ospf_route_install (struct ospf *, struct route_table *);void ospf_route_table_dump (struct route_table *);void ospf_intra_add_router (struct route_table *, struct vertex *, struct ospf_area *);void ospf_intra_add_transit (struct route_table *, struct vertex *, struct ospf_area *);void ospf_intra_add_stub (struct route_table *, struct router_lsa_link *, struct vertex *, struct ospf_area *);int ospf_route_cmp (struct ospf *, struct ospf_route *, struct ospf_route *);void ospf_route_copy_nexthops (struct ospf_route *, list);void ospf_route_copy_nexthops_from_vertex (struct ospf_route *, struct vertex * );void ospf_route_subst (struct route_node *, struct ospf_route *, struct ospf_route *);void ospf_route_add (struct route_table *, struct prefix_ipv4 *, struct ospf_route *, struct ospf_route *);void ospf_route_subst_nexthops (struct ospf_route *, list);void ospf_prune_unreachable_networks (struct route_table *);void ospf_prune_unreachable_routers (struct route_table *);int ospf_add_discard_route (struct route_table *, struct ospf_area *, struct prefix_ipv4 *);void ospf_delete_discard_route (struct prefix_ipv4 *);int ospf_route_match_same (struct route_table *, struct prefix_ipv4 *, struct ospf_route *);#endif /* _ZEBRA_OSPF_ROUTE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -