]>
git.proxmox.com Git - mirror_frr.git/blob - zebra/zebra_pw.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (C) 2016 Volta Networks, Inc.
10 #include <netinet/in.h>
16 #include "zebra/zebra_vrf.h"
22 #define PW_INSTALL_RETRY_INTERVAL 30
25 RB_ENTRY(zebra_pw
) pw_entry
, static_pw_entry
;
27 char ifname
[INTERFACE_NAMSIZ
];
33 uint32_t remote_label
;
35 union pw_protocol_fields data
;
41 struct thread
*install_retry_timer
;
44 DECLARE_QOBJ_TYPE(zebra_pw
);
46 RB_HEAD(zebra_pw_head
, zebra_pw
);
47 RB_PROTOTYPE(zebra_pw_head
, zebra_pw
, pw_entry
, zebra_pw_compare
);
49 RB_HEAD(zebra_static_pw_head
, zebra_pw
);
50 RB_PROTOTYPE(zebra_static_pw_head
, zebra_pw
, static_pw_entry
, zebra_pw_compare
);
52 DECLARE_HOOK(pw_install
, (struct zebra_pw
* pw
), (pw
));
53 DECLARE_HOOK(pw_uninstall
, (struct zebra_pw
* pw
), (pw
));
55 struct zebra_pw
*zebra_pw_add(struct zebra_vrf
*zvrf
, const char *ifname
,
56 uint8_t protocol
, struct zserv
*client
);
57 void zebra_pw_del(struct zebra_vrf
*, struct zebra_pw
*);
58 void zebra_pw_change(struct zebra_pw
*, ifindex_t
, int, int, union g_addr
*,
59 uint32_t, uint32_t, uint8_t, union pw_protocol_fields
*);
60 struct zebra_pw
*zebra_pw_find(struct zebra_vrf
*, const char *);
61 void zebra_pw_update(struct zebra_pw
*);
62 void zebra_pw_install_failure(struct zebra_pw
*pw
, int pwstatus
);
63 void zebra_pw_init(struct zebra_vrf
*);
64 void zebra_pw_exit(struct zebra_vrf
*);
65 void zebra_pw_vty_init(void);
71 #endif /* ZEBRA_PW_H_ */