mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 07:37:29 +00:00
pimd: Make zlookup 'struct pim_instance' aware
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
6f932b0c91
commit
71edad0fd5
@ -901,8 +901,8 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,
|
|||||||
|
|
||||||
memset(nexthop_tab, 0,
|
memset(nexthop_tab, 0,
|
||||||
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
||||||
num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
|
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
|
||||||
PIM_NEXTHOP_LOOKUP_MAX);
|
addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||||
if (num_ifindex < 1) {
|
if (num_ifindex < 1) {
|
||||||
char addr_str[INET_ADDRSTRLEN];
|
char addr_str[INET_ADDRSTRLEN];
|
||||||
pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
|
pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
|
||||||
@ -1030,8 +1030,8 @@ int pim_ecmp_fib_lookup_if_vif_index(struct pim_instance *pim,
|
|||||||
|
|
||||||
memset(nexthop_tab, 0,
|
memset(nexthop_tab, 0,
|
||||||
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
||||||
num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
|
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
|
||||||
PIM_NEXTHOP_LOOKUP_MAX);
|
addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||||
if (num_ifindex < 1) {
|
if (num_ifindex < 1) {
|
||||||
if (PIM_DEBUG_ZEBRA) {
|
if (PIM_DEBUG_ZEBRA) {
|
||||||
char addr_str[INET_ADDRSTRLEN];
|
char addr_str[INET_ADDRSTRLEN];
|
||||||
|
@ -92,8 +92,8 @@ int pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
|
|||||||
|
|
||||||
memset(nexthop_tab, 0,
|
memset(nexthop_tab, 0,
|
||||||
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
||||||
num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
|
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
|
||||||
PIM_NEXTHOP_LOOKUP_MAX);
|
addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||||
if (num_ifindex < 1) {
|
if (num_ifindex < 1) {
|
||||||
char addr_str[INET_ADDRSTRLEN];
|
char addr_str[INET_ADDRSTRLEN];
|
||||||
pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
|
pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
|
||||||
|
@ -135,7 +135,8 @@ void zclient_lookup_new(void)
|
|||||||
__PRETTY_FUNCTION__);
|
__PRETTY_FUNCTION__);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zclient_read_nexthop(struct zclient *zlookup,
|
static int zclient_read_nexthop(struct pim_instance *pim,
|
||||||
|
struct zclient *zlookup,
|
||||||
struct pim_zlookup_nexthop nexthop_tab[],
|
struct pim_zlookup_nexthop nexthop_tab[],
|
||||||
const int tab_size, struct in_addr addr)
|
const int tab_size, struct in_addr addr)
|
||||||
{
|
{
|
||||||
@ -256,17 +257,17 @@ static int zclient_read_nexthop(struct zclient *zlookup,
|
|||||||
* If we are sending v6 secondary assume we receive v6
|
* If we are sending v6 secondary assume we receive v6
|
||||||
* secondary
|
* secondary
|
||||||
*/
|
*/
|
||||||
if (pimg->send_v6_secondary)
|
if (pim->send_v6_secondary)
|
||||||
nbr = pim_neighbor_find_by_secondary(
|
nbr = pim_neighbor_find_by_secondary(
|
||||||
if_lookup_by_index(
|
if_lookup_by_index(
|
||||||
nexthop_tab[num_ifindex]
|
nexthop_tab[num_ifindex]
|
||||||
.ifindex,
|
.ifindex,
|
||||||
pimg->vrf_id),
|
vrf_id),
|
||||||
&p);
|
&p);
|
||||||
else
|
else
|
||||||
nbr = pim_neighbor_find_if(if_lookup_by_index(
|
nbr = pim_neighbor_find_if(if_lookup_by_index(
|
||||||
nexthop_tab[num_ifindex].ifindex,
|
nexthop_tab[num_ifindex].ifindex,
|
||||||
pimg->vrf_id));
|
vrf_id));
|
||||||
if (nbr) {
|
if (nbr) {
|
||||||
nexthop_tab[num_ifindex].nexthop_addr.family =
|
nexthop_tab[num_ifindex].nexthop_addr.family =
|
||||||
AF_INET;
|
AF_INET;
|
||||||
@ -294,7 +295,8 @@ static int zclient_read_nexthop(struct zclient *zlookup,
|
|||||||
return num_ifindex;
|
return num_ifindex;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
|
static int zclient_lookup_nexthop_once(struct pim_instance *pim,
|
||||||
|
struct pim_zlookup_nexthop nexthop_tab[],
|
||||||
const int tab_size, struct in_addr addr)
|
const int tab_size, struct in_addr addr)
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
@ -316,7 +318,7 @@ static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
|
|||||||
|
|
||||||
s = zlookup->obuf;
|
s = zlookup->obuf;
|
||||||
stream_reset(s);
|
stream_reset(s);
|
||||||
zclient_create_header(s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, pimg->vrf_id);
|
zclient_create_header(s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, pim->vrf_id);
|
||||||
stream_put_in_addr(s, &addr);
|
stream_put_in_addr(s, &addr);
|
||||||
stream_putw_at(s, 0, stream_get_endp(s));
|
stream_putw_at(s, 0, stream_get_endp(s));
|
||||||
|
|
||||||
@ -335,10 +337,11 @@ static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
|
|||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
return zclient_read_nexthop(zlookup, nexthop_tab, tab_size, addr);
|
return zclient_read_nexthop(pim, zlookup, nexthop_tab, tab_size, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
|
int zclient_lookup_nexthop(struct pim_instance *pim,
|
||||||
|
struct pim_zlookup_nexthop nexthop_tab[],
|
||||||
const int tab_size, struct in_addr addr,
|
const int tab_size, struct in_addr addr,
|
||||||
int max_lookup)
|
int max_lookup)
|
||||||
{
|
{
|
||||||
@ -353,8 +356,8 @@ int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
|
|||||||
int first_ifindex;
|
int first_ifindex;
|
||||||
struct prefix nexthop_addr;
|
struct prefix nexthop_addr;
|
||||||
|
|
||||||
num_ifindex = zclient_lookup_nexthop_once(nexthop_tab, tab_size,
|
num_ifindex = zclient_lookup_nexthop_once(pim, nexthop_tab,
|
||||||
addr);
|
tab_size, addr);
|
||||||
if (num_ifindex < 1) {
|
if (num_ifindex < 1) {
|
||||||
if (PIM_DEBUG_ZEBRA) {
|
if (PIM_DEBUG_ZEBRA) {
|
||||||
char addr_str[INET_ADDRSTRLEN];
|
char addr_str[INET_ADDRSTRLEN];
|
||||||
@ -488,7 +491,7 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
stream_reset(s);
|
stream_reset(s);
|
||||||
zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS, pimg->vrf_id);
|
zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS, c_oil->pim->vrf_id);
|
||||||
stream_put_in_addr(s, &c_oil->oil.mfcc_origin);
|
stream_put_in_addr(s, &c_oil->oil.mfcc_origin);
|
||||||
stream_put_in_addr(s, &c_oil->oil.mfcc_mcastgrp);
|
stream_put_in_addr(s, &c_oil->oil.mfcc_mcastgrp);
|
||||||
stream_putl(s, ifp->ifindex);
|
stream_putl(s, ifp->ifindex);
|
||||||
|
@ -36,7 +36,8 @@ struct pim_zlookup_nexthop {
|
|||||||
void zclient_lookup_new(void);
|
void zclient_lookup_new(void);
|
||||||
void zclient_lookup_free(void);
|
void zclient_lookup_free(void);
|
||||||
|
|
||||||
int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
|
int zclient_lookup_nexthop(struct pim_instance *pim,
|
||||||
|
struct pim_zlookup_nexthop nexthop_tab[],
|
||||||
const int tab_size, struct in_addr addr,
|
const int tab_size, struct in_addr addr,
|
||||||
int max_lookup);
|
int max_lookup);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user