1/* 2 * OSPF ABR functions. 3 * Copyright (C) 1999 Alex Zinin 4 * 5 * This file is part of GNU Zebra. 6 * 7 * GNU Zebra is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the 9 * Free Software Foundation; either version 2, or (at your option) any 10 * later version. 11 * 12 * GNU Zebra is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with GNU Zebra; see the file COPYING. If not, write to the Free 19 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 20 * 02111-1307, USA. 21 */ 22 23#ifndef _ZEBRA_OSPF_ABR_H 24#define _ZEBRA_OSPF_ABR_H 25 26#define OSPF_ABR_TASK_DELAY 7 27 28#define OSPF_AREA_RANGE_ADVERTISE (1 << 0) 29#define OSPF_AREA_RANGE_SUBSTITUTE (1 << 1) 30 31/* Area range. */ 32struct ospf_area_range 33{ 34 /* Area range address. */ 35 struct in_addr addr; 36 37 /* Area range masklen. */ 38 u_char masklen; 39 40 /* Flags. */ 41 u_char flags; 42 43 /* Number of more specific prefixes. */ 44 int specifics; 45 46 /* Addr and masklen to substitute. */ 47 struct in_addr subst_addr; 48 u_char subst_masklen; 49 50 /* Range cost. */ 51 u_int32_t cost; 52 53 /* Configured range cost. */ 54 u_int32_t cost_config; 55#define OSPF_AREA_RANGE_COST_UNSPEC -1 56}; 57 58/* Prototypes. */ 59struct ospf_area_range *ospf_area_range_lookup (struct ospf_area *, 60 struct prefix_ipv4 *); 61struct ospf_area_range *ospf_some_area_range_match (struct prefix_ipv4 *); 62struct ospf_area_range *ospf_area_range_lookup_next (struct ospf_area *, 63 struct in_addr *, int); 64int ospf_area_range_set (struct ospf *, struct in_addr, struct prefix_ipv4 *, 65 int); 66int ospf_area_range_cost_set (struct ospf *, struct in_addr, 67 struct prefix_ipv4 *, u_int32_t); 68int ospf_area_range_unset (struct ospf *, struct in_addr, 69 struct prefix_ipv4 *); 70int ospf_area_range_substitute_set (struct ospf *, struct in_addr, 71 struct prefix_ipv4 *, 72 struct prefix_ipv4 *); 73int ospf_area_range_substitute_unset (struct ospf *, struct in_addr, 74 struct prefix_ipv4 *); 75 76int ospf_area_range_active (struct ospf_area_range *); 77int ospf_act_bb_connection (); 78 79void ospf_check_abr_status (); 80void ospf_abr_task (); 81void ospf_schedule_abr_task (); 82 83#endif /* _ZEBRA_OSPF_ABR_H */ 84