diff options
Diffstat (limited to 'ospfd/ospf_interface.h')
-rw-r--r-- | ospfd/ospf_interface.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ospfd/ospf_interface.h b/ospfd/ospf_interface.h index 39dc951..45d0b79 100644 --- a/ospfd/ospf_interface.h +++ b/ospfd/ospf_interface.h @@ -120,8 +120,14 @@ struct ospf_if_params { /* point-to-multipoint delayed reflooding configuration */ bool p2mp_delay_reflood; + /* point-to-multipoint doesn't support broadcast */ + bool p2mp_non_broadcast; + /* Opaque LSA capability at interface level (see RFC5250) */ DECLARE_IF_PARAM(bool, opaque_capable); + + /* Name of prefix-list name for packet source address filtering. */ + DECLARE_IF_PARAM(char *, nbr_filter_name); }; enum { MEMBER_ALLROUTERS = 0, @@ -186,6 +192,10 @@ struct ospf_interface { /* OSPF Network Type. */ uint8_t type; +#define OSPF_IF_NON_BROADCAST(O) \ + (((O)->type == OSPF_IFTYPE_NBMA) || \ + ((((O)->type == OSPF_IFTYPE_POINTOMULTIPOINT) && \ + (O)->p2mp_non_broadcast))) /* point-to-point DMVPN configuration */ uint8_t ptp_dmvpn; @@ -193,6 +203,9 @@ struct ospf_interface { /* point-to-multipoint delayed reflooding */ bool p2mp_delay_reflood; + /* point-to-multipoint doesn't support broadcast */ + bool p2mp_non_broadcast; + /* State of Interface State Machine. */ uint8_t state; @@ -233,6 +246,9 @@ struct ospf_interface { /* List of configured NBMA neighbor. */ struct list *nbr_nbma; + /* Configured prefix-list for filtering neighbors. */ + struct prefix_list *nbr_filter; + /* Graceful-Restart data. */ struct { struct { @@ -327,7 +343,6 @@ extern void ospf_if_update_params(struct interface *ifp, struct in_addr addr); extern int ospf_if_new_hook(struct interface *ifp); extern void ospf_if_init(void); extern void ospf_if_stream_unset(struct ospf_interface *oi); -extern void ospf_if_reset_variables(struct ospf_interface *oi); extern int ospf_if_is_enable(struct ospf_interface *oi); extern int ospf_if_get_output_cost(struct ospf_interface *oi); extern void ospf_if_recalculate_output_cost(struct interface *ifp); @@ -359,6 +374,7 @@ extern void ospf_crypt_key_add(struct list *list, struct crypt_key *key); extern int ospf_crypt_key_delete(struct list *list, uint8_t key_id); extern uint8_t ospf_default_iftype(struct interface *ifp); extern int ospf_interface_neighbor_count(struct ospf_interface *oi); +extern void ospf_intf_neighbor_filter_apply(struct ospf_interface *oi); /* Set all multicast memberships appropriately based on the type and state of the interface. */ |