X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=isisd%2Fisis_route.h;h=9d6858586be5d696be2cc4f045fbbfc0b17a52d9;hb=ca2c70bde099e9e9e40d5151388d1e9ba849df0d;hp=24bd786fa7d94d38f1e89ef664f00f2a66c4e3ca;hpb=645bb0b10e8144a2b40201e4da6e200d5663b886;p=mirror_frr.git diff --git a/isisd/isis_route.h b/isisd/isis_route.h index 24bd786fa..9d6858586 100644 --- a/isisd/isis_route.h +++ b/isisd/isis_route.h @@ -2,20 +2,20 @@ * IS-IS Rout(e)ing protocol - isis_route.h * * Copyright (C) 2001,2002 Sampo Saaristo - * Tampere University of Technology + * Tampere University of Technology * Institute of Communications Engineering * * based on ../ospf6d/ospf6_route.[ch] * by Yasuhiro Ohara * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public Licenseas published by the Free - * Software Foundation; either version 2 of the License, or (at your option) + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public Licenseas published by the Free + * Software Foundation; either version 2 of the License, or (at your option) * any later version. * - * This program 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 + * This program 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 @@ -25,42 +25,51 @@ #ifndef _ZEBRA_ISIS_ROUTE_H #define _ZEBRA_ISIS_ROUTE_H -struct isis_nexthop6 -{ - ifindex_t ifindex; - struct in6_addr ip6; - struct in6_addr router_address6; - unsigned int lock; +struct isis_nexthop6 { + ifindex_t ifindex; + struct in6_addr ip6; + struct in6_addr router_address6; + unsigned int lock; }; -struct isis_nexthop -{ - ifindex_t ifindex; - struct in_addr ip; - struct in_addr router_address; - unsigned int lock; +struct isis_nexthop { + ifindex_t ifindex; + struct in_addr ip; + struct in_addr router_address; + unsigned int lock; }; -struct isis_route_info -{ +struct isis_route_info { #define ISIS_ROUTE_FLAG_ACTIVE 0x01 /* active route for the prefix */ #define ISIS_ROUTE_FLAG_ZEBRA_SYNCED 0x02 /* set when route synced to zebra */ #define ISIS_ROUTE_FLAG_ZEBRA_RESYNC 0x04 /* set when route needs to sync */ - u_char flag; - u_int32_t cost; - u_int32_t depth; - struct list *nexthops; - struct list *nexthops6; + uint8_t flag; + uint32_t cost; + uint32_t depth; + struct list *nexthops; + struct list *nexthops6; }; -struct isis_route_info *isis_route_create (struct prefix *prefix, - u_int32_t cost, u_int32_t depth, - struct list *adjacencies, - struct isis_area *area, int level); +struct isis_route_info *isis_route_create(struct prefix *prefix, + struct prefix_ipv6 *src_p, + uint32_t cost, + uint32_t depth, + struct list *adjacencies, + struct isis_area *area, + struct route_table *table); -void isis_route_validate (struct isis_area *area); -void isis_route_invalidate_table (struct isis_area *area, - struct route_table *table); -void isis_route_invalidate (struct isis_area *area); +/* Walk the given table and install new routes to zebra and remove old ones. + * route status is tracked using ISIS_ROUTE_FLAG_ACTIVE */ +void isis_route_verify_table(struct isis_area *area, + struct route_table *table); + +/* Same as isis_route_verify_table, but merge L1 and L2 routes before */ +void isis_route_verify_merge(struct isis_area *area, + struct route_table *level1_table, + struct route_table *level2_table); + +/* Unset ISIS_ROUTE_FLAG_ACTIVE on all routes. Used before running spf. */ +void isis_route_invalidate_table(struct isis_area *area, + struct route_table *table); #endif /* _ZEBRA_ISIS_ROUTE_H */