]>
Commit | Line | Data |
---|---|---|
12e41d03 | 1 | /* |
896014f4 DL |
2 | * PIM for Quagga |
3 | * Copyright (C) 2008 Everton da Silva Marques | |
4 | * | |
5 | * This program is free software; you can redistribute it and/or modify | |
6 | * it under the terms of the GNU General Public License as published by | |
7 | * the Free Software Foundation; either version 2 of the License, or | |
8 | * (at your option) any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but | |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License along | |
16 | * with this program; see the file COPYING; if not, write to the Free Software | |
17 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
18 | */ | |
12e41d03 DL |
19 | |
20 | #ifndef PIM_NEIGHBOR_H | |
21 | #define PIM_NEIGHBOR_H | |
22 | ||
23 | #include <zebra.h> | |
24 | ||
25 | #include "if.h" | |
26 | #include "linklist.h" | |
bce0e645 | 27 | #include "prefix.h" |
12e41d03 DL |
28 | |
29 | #include "pim_tlv.h" | |
30 | ||
31 | struct pim_neighbor { | |
d62a17ae | 32 | int64_t creation; /* timestamp of creation */ |
33 | struct in_addr source_addr; | |
34 | pim_hello_options hello_options; | |
35 | uint16_t holdtime; | |
36 | uint16_t propagation_delay_msec; | |
37 | uint16_t override_interval_msec; | |
38 | uint32_t dr_priority; | |
39 | uint32_t generation_id; | |
40 | struct list *prefix_list; /* list of struct prefix */ | |
41 | struct thread *t_expire_timer; | |
42 | struct interface *interface; | |
982bff89 | 43 | |
d62a17ae | 44 | struct thread *jp_timer; |
45 | struct list *upstream_jp_agg; | |
46 | struct bfd_info *bfd_info; | |
12e41d03 DL |
47 | }; |
48 | ||
49 | void pim_neighbor_timer_reset(struct pim_neighbor *neigh, uint16_t holdtime); | |
50 | void pim_neighbor_free(struct pim_neighbor *neigh); | |
51 | struct pim_neighbor *pim_neighbor_find(struct interface *ifp, | |
52 | struct in_addr source_addr); | |
d62a17ae | 53 | struct pim_neighbor *pim_neighbor_find_by_secondary(struct interface *ifp, |
54 | struct prefix *src); | |
55 | struct pim_neighbor *pim_neighbor_find_if(struct interface *ifp); | |
99deb321 | 56 | |
1148de0a DS |
57 | |
58 | #define PIM_NEIGHBOR_SEND_DELAY 0 | |
59 | #define PIM_NEIGHBOR_SEND_NOW 1 | |
d62a17ae | 60 | struct pim_neighbor * |
61 | pim_neighbor_add(struct interface *ifp, struct in_addr source_addr, | |
62 | pim_hello_options hello_options, uint16_t holdtime, | |
63 | uint16_t propagation_delay, uint16_t override_interval, | |
64 | uint32_t dr_priority, uint32_t generation_id, | |
65 | struct list *addr_list, int send_hello_now); | |
66 | void pim_neighbor_delete(struct interface *ifp, struct pim_neighbor *neigh, | |
12e41d03 | 67 | const char *delete_message); |
d62a17ae | 68 | void pim_neighbor_delete_all(struct interface *ifp, const char *delete_message); |
12e41d03 | 69 | void pim_neighbor_update(struct pim_neighbor *neigh, |
d62a17ae | 70 | pim_hello_options hello_options, uint16_t holdtime, |
71 | uint32_t dr_priority, struct list *addr_list); | |
12e41d03 | 72 | struct prefix *pim_neighbor_find_secondary(struct pim_neighbor *neigh, |
07b17d59 | 73 | struct prefix *addr); |
dedccda6 | 74 | int pim_if_dr_election(struct interface *ifp); |
12e41d03 DL |
75 | |
76 | #endif /* PIM_NEIGHBOR_H */ |