]>
Commit | Line | Data |
---|---|---|
718e3744 | 1 | /* |
2 | * OSPF AS Boundary Router functions. | |
3 | * Copyright (C) 1999, 2000 Kunihiro Ishiguro, Toshiaki Takada | |
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_ASBR_H | |
24 | #define _ZEBRA_OSPF_ASBR_H | |
25 | ||
26 | struct route_map_set_values | |
27 | { | |
28 | int32_t metric; | |
29 | int32_t metric_type; | |
30 | }; | |
31 | ||
32 | /* Redistributed external information. */ | |
33 | struct external_info | |
34 | { | |
35 | /* Type of source protocol. */ | |
36 | u_char type; | |
37 | ||
7c8ff89e DS |
38 | u_short instance; |
39 | ||
718e3744 | 40 | /* Prefix. */ |
41 | struct prefix_ipv4 p; | |
42 | ||
43 | /* Interface index. */ | |
44 | unsigned int ifindex; | |
45 | ||
46 | /* Nexthop address. */ | |
47 | struct in_addr nexthop; | |
48 | ||
49 | /* Additional Route tag. */ | |
50 | u_int32_t tag; | |
51 | ||
52 | struct route_map_set_values route_map_set; | |
53 | #define ROUTEMAP_METRIC(E) (E)->route_map_set.metric | |
54 | #define ROUTEMAP_METRIC_TYPE(E) (E)->route_map_set.metric_type | |
55 | }; | |
56 | ||
57 | #define OSPF_ASBR_CHECK_DELAY 30 | |
58 | ||
4dadc291 | 59 | extern void ospf_external_route_remove (struct ospf *, struct prefix_ipv4 *); |
7c8ff89e | 60 | extern struct external_info *ospf_external_info_new (u_char, u_short); |
4dadc291 | 61 | extern void ospf_reset_route_map_set_values (struct route_map_set_values *); |
62 | extern int ospf_route_map_set_compare (struct route_map_set_values *, | |
d4a53d58 | 63 | struct route_map_set_values *); |
7c8ff89e | 64 | extern struct external_info *ospf_external_info_add (u_char, u_short, |
d4a53d58 | 65 | struct prefix_ipv4, |
66 | unsigned int, | |
0d9551dc DS |
67 | struct in_addr, |
68 | u_short); | |
7c8ff89e DS |
69 | extern void ospf_external_info_delete (u_char, u_short, struct prefix_ipv4); |
70 | extern struct external_info *ospf_external_info_lookup (u_char, u_short, | |
d4a53d58 | 71 | struct prefix_ipv4 *); |
4dadc291 | 72 | extern struct ospf_route *ospf_external_route_lookup (struct ospf *, |
d4a53d58 | 73 | struct prefix_ipv4 *); |
4dadc291 | 74 | extern void ospf_asbr_status_update (struct ospf *, u_char); |
718e3744 | 75 | |
7c8ff89e | 76 | extern void ospf_redistribute_withdraw (struct ospf *, u_char, u_short); |
4dadc291 | 77 | extern void ospf_asbr_check (void); |
78 | extern void ospf_schedule_asbr_check (void); | |
79 | extern void ospf_asbr_route_install_lsa (struct ospf_lsa *); | |
80 | extern struct ospf_lsa *ospf_external_info_find_lsa (struct ospf *, | |
d4a53d58 | 81 | struct prefix_ipv4 *p); |
718e3744 | 82 | |
83 | #endif /* _ZEBRA_OSPF_ASBR_H */ |