| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #ifndef _OSPF_APISERVER_H |
| #define _OSPF_APISERVER_H |
| |
| |
| #define MTYPE_OSPF_APISERVER MTYPE_TMP |
| #define MTYPE_OSPF_APISERVER_MSGFILTER MTYPE_TMP |
| |
| |
| struct registered_opaque_type { |
| uint8_t lsa_type; |
| uint8_t opaque_type; |
| }; |
| |
| |
| |
| struct ospf_apiserver { |
| |
| |
| int fd_sync; |
| struct sockaddr_in peer_sync; |
| |
| int fd_async; |
| struct sockaddr_in peer_async; |
| |
| |
| |
| |
| |
| struct list *opaque_types; |
| |
| |
| struct ospf_lsdb reserve; |
| |
| |
| struct lsa_filter_type *filter; |
| |
| |
| struct msg_fifo *out_sync_fifo; |
| struct msg_fifo *out_async_fifo; |
| |
| |
| struct thread *t_sync_read; |
| #ifdef USE_ASYNC_READ |
| struct thread *t_async_read; |
| #endif |
| struct thread *t_sync_write; |
| struct thread *t_async_write; |
| }; |
| |
| enum event { |
| OSPF_APISERVER_ACCEPT, |
| OSPF_APISERVER_SYNC_READ, |
| #ifdef USE_ASYNC_READ |
| OSPF_APISERVER_ASYNC_READ, |
| #endif |
| OSPF_APISERVER_SYNC_WRITE, |
| OSPF_APISERVER_ASYNC_WRITE |
| }; |
| |
| |
| |
| |
| |
| |
| extern unsigned short ospf_apiserver_getport(void); |
| extern int ospf_apiserver_init(void); |
| extern void ospf_apiserver_term(void); |
| extern struct ospf_apiserver *ospf_apiserver_new(int fd_sync, int fd_async); |
| extern void ospf_apiserver_free(struct ospf_apiserver *apiserv); |
| extern void ospf_apiserver_event(enum event event, int fd, |
| struct ospf_apiserver *apiserv); |
| extern int ospf_apiserver_serv_sock_family(unsigned short port, int family); |
| extern int ospf_apiserver_accept(struct thread *thread); |
| extern int ospf_apiserver_read(struct thread *thread); |
| extern int ospf_apiserver_sync_write(struct thread *thread); |
| extern int ospf_apiserver_async_write(struct thread *thread); |
| extern int ospf_apiserver_send_reply(struct ospf_apiserver *apiserv, |
| uint32_t seqnr, uint8_t rc); |
| |
| |
| |
| |
| |
| |
| extern int ospf_apiserver_lsa9_originator(void *arg); |
| extern int ospf_apiserver_lsa10_originator(void *arg); |
| extern int ospf_apiserver_lsa11_originator(void *arg); |
| |
| extern void ospf_apiserver_clients_notify_all(struct msg *msg); |
| |
| extern void |
| ospf_apiserver_clients_notify_ready_type9(struct ospf_interface *oi); |
| extern void ospf_apiserver_clients_notify_ready_type10(struct ospf_area *area); |
| extern void ospf_apiserver_clients_notify_ready_type11(struct ospf *top); |
| |
| extern void ospf_apiserver_clients_notify_new_if(struct ospf_interface *oi); |
| extern void ospf_apiserver_clients_notify_del_if(struct ospf_interface *oi); |
| extern void ospf_apiserver_clients_notify_ism_change(struct ospf_interface *oi); |
| extern void ospf_apiserver_clients_notify_nsm_change(struct ospf_neighbor *nbr); |
| |
| extern int ospf_apiserver_is_ready_type9(struct ospf_interface *oi); |
| extern int ospf_apiserver_is_ready_type10(struct ospf_area *area); |
| extern int ospf_apiserver_is_ready_type11(struct ospf *ospf); |
| |
| extern void ospf_apiserver_notify_ready_type9(struct ospf_apiserver *apiserv); |
| extern void ospf_apiserver_notify_ready_type10(struct ospf_apiserver *apiserv); |
| extern void ospf_apiserver_notify_ready_type11(struct ospf_apiserver *apiserv); |
| |
| extern int ospf_apiserver_handle_msg(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int |
| ospf_apiserver_handle_register_opaque_type(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int |
| ospf_apiserver_handle_unregister_opaque_type(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int ospf_apiserver_handle_register_event(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int |
| ospf_apiserver_handle_originate_request(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int ospf_apiserver_handle_delete_request(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| extern int ospf_apiserver_handle_sync_lsdb(struct ospf_apiserver *apiserv, |
| struct msg *msg); |
| |
| |
| |
| |
| |
| |
| |
| extern int ospf_apiserver_register_opaque_type(struct ospf_apiserver *apiserver, |
| uint8_t lsa_type, |
| uint8_t opaque_type); |
| extern int |
| ospf_apiserver_unregister_opaque_type(struct ospf_apiserver *apiserver, |
| uint8_t lsa_type, uint8_t opaque_type); |
| extern struct ospf_lsa * |
| ospf_apiserver_opaque_lsa_new(struct ospf_area *area, struct ospf_interface *oi, |
| struct lsa_header *protolsa); |
| extern struct ospf_interface * |
| ospf_apiserver_if_lookup_by_addr(struct in_addr address); |
| extern struct ospf_interface * |
| ospf_apiserver_if_lookup_by_ifp(struct interface *ifp); |
| extern int ospf_apiserver_originate1(struct ospf_lsa *lsa); |
| extern void ospf_apiserver_flood_opaque_lsa(struct ospf_lsa *lsa); |
| |
| |
| |
| |
| |
| |
| |
| extern int ospf_apiserver_new_if(struct interface *ifp); |
| extern int ospf_apiserver_del_if(struct interface *ifp); |
| extern void ospf_apiserver_ism_change(struct ospf_interface *oi, |
| int old_status); |
| extern void ospf_apiserver_nsm_change(struct ospf_neighbor *nbr, |
| int old_status); |
| extern void ospf_apiserver_config_write_router(struct vty *vty); |
| extern void ospf_apiserver_config_write_if(struct vty *vty, |
| struct interface *ifp); |
| extern void ospf_apiserver_show_info(struct vty *vty, struct ospf_lsa *lsa); |
| extern int ospf_ospf_apiserver_lsa_originator(void *arg); |
| extern struct ospf_lsa *ospf_apiserver_lsa_refresher(struct ospf_lsa *lsa); |
| extern void ospf_apiserver_flush_opaque_lsa(struct ospf_apiserver *apiserv, |
| uint8_t lsa_type, |
| uint8_t opaque_type); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| extern int ospf_apiserver_lsa_update(struct ospf_lsa *lsa); |
| extern int ospf_apiserver_lsa_delete(struct ospf_lsa *lsa); |
| |
| extern void ospf_apiserver_clients_lsa_change_notify(uint8_t msgtype, |
| struct ospf_lsa *lsa); |
| |
| #endif |