]>
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 | * | |
896014f4 DL |
17 | * You should have received a copy of the GNU General Public License along |
18 | * with this program; see the file COPYING; if not, write to the Free Software | |
19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
718e3744 | 20 | */ |
21 | ||
22 | #ifndef _ZEBRA_OSPF_ASBR_H | |
23 | #define _ZEBRA_OSPF_ASBR_H | |
24 | ||
d62a17ae | 25 | struct route_map_set_values { |
26 | int32_t metric; | |
27 | int32_t metric_type; | |
718e3744 | 28 | }; |
29 | ||
30 | /* Redistributed external information. */ | |
d62a17ae | 31 | struct external_info { |
32 | /* Type of source protocol. */ | |
33 | u_char type; | |
718e3744 | 34 | |
d62a17ae | 35 | u_short instance; |
7c8ff89e | 36 | |
d62a17ae | 37 | /* Prefix. */ |
38 | struct prefix_ipv4 p; | |
718e3744 | 39 | |
d62a17ae | 40 | /* Interface index. */ |
41 | ifindex_t ifindex; | |
718e3744 | 42 | |
d62a17ae | 43 | /* Nexthop address. */ |
44 | struct in_addr nexthop; | |
718e3744 | 45 | |
d62a17ae | 46 | /* Additional Route tag. */ |
47 | route_tag_t tag; | |
718e3744 | 48 | |
d62a17ae | 49 | struct route_map_set_values route_map_set; |
718e3744 | 50 | #define ROUTEMAP_METRIC(E) (E)->route_map_set.metric |
51 | #define ROUTEMAP_METRIC_TYPE(E) (E)->route_map_set.metric_type | |
52 | }; | |
53 | ||
54 | #define OSPF_ASBR_CHECK_DELAY 30 | |
55 | ||
d62a17ae | 56 | extern void ospf_external_route_remove(struct ospf *, struct prefix_ipv4 *); |
57 | extern struct external_info *ospf_external_info_new(u_char, u_short); | |
58 | extern void ospf_reset_route_map_set_values(struct route_map_set_values *); | |
59 | extern int ospf_route_map_set_compare(struct route_map_set_values *, | |
60 | struct route_map_set_values *); | |
996c9314 LB |
61 | extern struct external_info *ospf_external_info_add(struct ospf *, u_char, |
62 | u_short, struct prefix_ipv4, | |
d62a17ae | 63 | ifindex_t, struct in_addr, |
64 | route_tag_t); | |
996c9314 | 65 | extern void ospf_external_info_delete(struct ospf *, u_char, u_short, |
de1ac5fd | 66 | struct prefix_ipv4); |
996c9314 LB |
67 | extern struct external_info * |
68 | ospf_external_info_lookup(struct ospf *, u_char, u_short, struct prefix_ipv4 *); | |
d62a17ae | 69 | extern struct ospf_route *ospf_external_route_lookup(struct ospf *, |
70 | struct prefix_ipv4 *); | |
71 | extern void ospf_asbr_status_update(struct ospf *, u_char); | |
718e3744 | 72 | |
d62a17ae | 73 | extern void ospf_redistribute_withdraw(struct ospf *, u_char, u_short); |
74 | extern void ospf_asbr_check(void); | |
75 | extern void ospf_schedule_asbr_check(void); | |
76 | extern void ospf_asbr_route_install_lsa(struct ospf_lsa *); | |
77 | extern struct ospf_lsa *ospf_external_info_find_lsa(struct ospf *, | |
78 | struct prefix_ipv4 *p); | |
718e3744 | 79 | |
80 | #endif /* _ZEBRA_OSPF_ASBR_H */ |