]>
Commit | Line | Data |
---|---|---|
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 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 | |
20 | */ | |
21 | ||
22 | #ifndef _ZEBRA_OSPF_ASBR_H | |
23 | #define _ZEBRA_OSPF_ASBR_H | |
24 | ||
25 | struct route_map_set_values { | |
26 | int32_t metric; | |
27 | int32_t metric_type; | |
28 | }; | |
29 | ||
30 | /* Redistributed external information. */ | |
31 | struct external_info { | |
32 | /* Type of source protocol. */ | |
33 | uint8_t type; | |
34 | ||
35 | unsigned short instance; | |
36 | ||
37 | /* Prefix. */ | |
38 | struct prefix_ipv4 p; | |
39 | ||
40 | /* Interface index. */ | |
41 | ifindex_t ifindex; | |
42 | ||
43 | /* Nexthop address. */ | |
44 | struct in_addr nexthop; | |
45 | ||
46 | /* Additional Route tag. */ | |
47 | route_tag_t tag; | |
48 | ||
49 | struct route_map_set_values route_map_set; | |
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 | ||
56 | extern void ospf_external_route_remove(struct ospf *, struct prefix_ipv4 *); | |
57 | extern struct external_info *ospf_external_info_new(uint8_t, unsigned 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 *); | |
61 | extern struct external_info *ospf_external_info_add(struct ospf *, uint8_t, | |
62 | unsigned short, | |
63 | struct prefix_ipv4, | |
64 | ifindex_t, struct in_addr, | |
65 | route_tag_t); | |
66 | extern void ospf_external_info_delete(struct ospf *, uint8_t, unsigned short, | |
67 | struct prefix_ipv4); | |
68 | extern struct external_info *ospf_external_info_lookup(struct ospf *, uint8_t, | |
69 | unsigned short, | |
70 | struct prefix_ipv4 *); | |
71 | extern void ospf_asbr_status_update(struct ospf *, uint8_t); | |
72 | ||
73 | extern void ospf_redistribute_withdraw(struct ospf *, uint8_t, unsigned 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); | |
79 | ||
80 | #endif /* _ZEBRA_OSPF_ASBR_H */ |