mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 13:33:15 +00:00
commit
e56ab0e971
@ -1739,7 +1739,6 @@ static int netlink_macfdb_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|||||||
struct ndmsg *ndm;
|
struct ndmsg *ndm;
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct zebra_if *zif;
|
struct zebra_if *zif;
|
||||||
struct zebra_vrf *zvrf;
|
|
||||||
struct rtattr *tb[NDA_MAX + 1];
|
struct rtattr *tb[NDA_MAX + 1];
|
||||||
struct interface *br_if;
|
struct interface *br_if;
|
||||||
struct ethaddr mac;
|
struct ethaddr mac;
|
||||||
@ -1753,20 +1752,14 @@ static int netlink_macfdb_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|||||||
|
|
||||||
ndm = NLMSG_DATA(h);
|
ndm = NLMSG_DATA(h);
|
||||||
|
|
||||||
|
/* We only process macfdb notifications if EVPN is enabled */
|
||||||
|
if (!is_evpn_enabled())
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* The interface should exist. */
|
/* The interface should exist. */
|
||||||
ifp = if_lookup_by_index_per_ns(zebra_ns_lookup(NS_DEFAULT),
|
ifp = if_lookup_by_index_per_ns(zebra_ns_lookup(NS_DEFAULT),
|
||||||
ndm->ndm_ifindex);
|
ndm->ndm_ifindex);
|
||||||
if (!ifp)
|
if (!ifp || !ifp->info)
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Locate VRF corresponding to interface. We only process MAC
|
|
||||||
* notifications
|
|
||||||
* if EVPN is enabled on this VRF.
|
|
||||||
*/
|
|
||||||
zvrf = vrf_info_lookup(ifp->vrf_id);
|
|
||||||
if (!zvrf || !EVPN_ENABLED(zvrf))
|
|
||||||
return 0;
|
|
||||||
if (!ifp->info)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* The interface should be something we're interested in. */
|
/* The interface should be something we're interested in. */
|
||||||
@ -2056,7 +2049,6 @@ static int netlink_ipneigh_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|||||||
struct ndmsg *ndm;
|
struct ndmsg *ndm;
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct zebra_if *zif;
|
struct zebra_if *zif;
|
||||||
struct zebra_vrf *zvrf;
|
|
||||||
struct rtattr *tb[NDA_MAX + 1];
|
struct rtattr *tb[NDA_MAX + 1];
|
||||||
struct interface *link_if;
|
struct interface *link_if;
|
||||||
struct ethaddr mac;
|
struct ethaddr mac;
|
||||||
@ -2068,20 +2060,14 @@ static int netlink_ipneigh_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|||||||
|
|
||||||
ndm = NLMSG_DATA(h);
|
ndm = NLMSG_DATA(h);
|
||||||
|
|
||||||
|
/* We only process neigh notifications if EVPN is enabled */
|
||||||
|
if (!is_evpn_enabled())
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* The interface should exist. */
|
/* The interface should exist. */
|
||||||
ifp = if_lookup_by_index_per_ns(zebra_ns_lookup(NS_DEFAULT),
|
ifp = if_lookup_by_index_per_ns(zebra_ns_lookup(NS_DEFAULT),
|
||||||
ndm->ndm_ifindex);
|
ndm->ndm_ifindex);
|
||||||
if (!ifp)
|
if (!ifp || !ifp->info)
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Locate VRF corresponding to interface. We only process neigh
|
|
||||||
* notifications
|
|
||||||
* if EVPN is enabled on this VRF.
|
|
||||||
*/
|
|
||||||
zvrf = vrf_info_lookup(ifp->vrf_id);
|
|
||||||
if (!zvrf || !EVPN_ENABLED(zvrf))
|
|
||||||
return 0;
|
|
||||||
if (!ifp->info)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Drop "permanent" entries. */
|
/* Drop "permanent" entries. */
|
||||||
|
@ -102,13 +102,15 @@ struct zebra_vrf {
|
|||||||
* VNI hash table (for EVPN). Only in default instance.
|
* VNI hash table (for EVPN). Only in default instance.
|
||||||
*/
|
*/
|
||||||
struct hash *vni_table;
|
struct hash *vni_table;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Whether EVPN is enabled or not.
|
* Whether EVPN is enabled or not. Only in default instance.
|
||||||
*/
|
*/
|
||||||
int advertise_all_vni;
|
int advertise_all_vni;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Whether we are advertising g/w macip in EVPN or not.
|
* Whether we are advertising g/w macip in EVPN or not.
|
||||||
|
* Only in default instance.
|
||||||
*/
|
*/
|
||||||
int advertise_gw_macip;
|
int advertise_gw_macip;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -35,6 +35,14 @@
|
|||||||
|
|
||||||
/* Is EVPN enabled? */
|
/* Is EVPN enabled? */
|
||||||
#define EVPN_ENABLED(zvrf) (zvrf)->advertise_all_vni
|
#define EVPN_ENABLED(zvrf) (zvrf)->advertise_all_vni
|
||||||
|
static inline int
|
||||||
|
is_evpn_enabled()
|
||||||
|
{
|
||||||
|
struct zebra_vrf *zvrf = NULL;
|
||||||
|
zvrf = zebra_vrf_lookup_by_id(VRF_DEFAULT);
|
||||||
|
return zvrf ? zvrf->advertise_all_vni : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* VxLAN interface change flags of interest. */
|
/* VxLAN interface change flags of interest. */
|
||||||
#define ZEBRA_VXLIF_LOCAL_IP_CHANGE 0x1
|
#define ZEBRA_VXLIF_LOCAL_IP_CHANGE 0x1
|
||||||
|
Loading…
Reference in New Issue
Block a user