mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 02:46:37 +00:00
Merge pull request #11462 from donaldsharp/random_stuff_right
Random stuff right
This commit is contained in:
commit
8771cdcb94
@ -628,7 +628,6 @@ static void vnc_zebra_add_del_nve(struct bgp *bgp, struct rfapi_descriptor *rfd,
|
||||
struct rfapi_nve_group_cfg *rfg = rfd->rfg;
|
||||
afi_t afi = family2afi(rfd->vn_addr.addr_family);
|
||||
struct prefix nhp;
|
||||
// struct prefix *nhpp;
|
||||
void *pAddr;
|
||||
|
||||
vnc_zlog_debug_verbose("%s: entry, add=%d", __func__, add);
|
||||
@ -660,7 +659,7 @@ static void vnc_zebra_add_del_nve(struct bgp *bgp, struct rfapi_descriptor *rfd,
|
||||
return;
|
||||
}
|
||||
|
||||
pAddr = &nhp.u.prefix4;
|
||||
pAddr = &nhp.u.val;
|
||||
|
||||
/*
|
||||
* Loop over the list of NVE-Groups configured for
|
||||
|
@ -206,7 +206,7 @@ static int bfd_handle_circuit_add_addr(struct isis_circuit *circuit)
|
||||
struct isis_adjacency *adj;
|
||||
struct listnode *node;
|
||||
|
||||
if (circuit->area == 0)
|
||||
if (circuit->area == NULL)
|
||||
return 0;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(circuit->area->adjacency_list, node, adj)) {
|
||||
|
@ -2117,7 +2117,7 @@ static uint8_t *isis_snmp_find_circ(struct variable *v, oid *name,
|
||||
|
||||
switch (v->magic) {
|
||||
case ISIS_CIRC_IFINDEX:
|
||||
if (circuit->interface == 0)
|
||||
if (circuit->interface == NULL)
|
||||
return SNMP_INTEGER(0);
|
||||
|
||||
return SNMP_INTEGER(circuit->interface->ifindex);
|
||||
|
@ -120,7 +120,13 @@ void ospf6_auth_hdr_dump_recv(struct ospf6_header *ospfh, uint16_t length,
|
||||
ospf6_at_hdr =
|
||||
(struct ospf6_auth_hdr *)((uint8_t *)ospfh + oh_len);
|
||||
at_hdr_len = ntohs(ospf6_at_hdr->length);
|
||||
hash_len = at_hdr_len - OSPF6_AUTH_HDR_MIN_SIZE;
|
||||
hash_len = at_hdr_len - (uint16_t)OSPF6_AUTH_HDR_MIN_SIZE;
|
||||
if (hash_len > KEYCHAIN_MAX_HASH_SIZE) {
|
||||
zlog_debug(
|
||||
"Specified value for hash_len %u is greater than expected %u",
|
||||
hash_len, KEYCHAIN_MAX_HASH_SIZE);
|
||||
return;
|
||||
}
|
||||
memcpy(temp, ospf6_at_hdr->data, hash_len);
|
||||
temp[hash_len] = '\0';
|
||||
zlog_debug("OSPF6 Authentication Trailer");
|
||||
|
@ -2198,7 +2198,7 @@ void gm_ifp_teardown(struct interface *ifp)
|
||||
static void gm_update_ll(struct interface *ifp)
|
||||
{
|
||||
struct pim_interface *pim_ifp = ifp->info;
|
||||
struct gm_if *gm_ifp = pim_ifp ? pim_ifp->mld : NULL;
|
||||
struct gm_if *gm_ifp = pim_ifp->mld;
|
||||
bool was_querier;
|
||||
|
||||
was_querier =
|
||||
|
@ -88,6 +88,7 @@ struct pim_router {
|
||||
uint32_t register_suppress_time;
|
||||
int packet_process;
|
||||
uint32_t register_probe_time;
|
||||
uint16_t multipath;
|
||||
|
||||
/*
|
||||
* What is the default vrf that we work in
|
||||
|
@ -304,15 +304,15 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, struct in_addr bsr_addr,
|
||||
* "check cache or get immediate result." But until that can
|
||||
* be worked in, here's a copy of the code below :(
|
||||
*/
|
||||
struct pim_zlookup_nexthop nexthop_tab[MULTIPATH_NUM];
|
||||
struct pim_zlookup_nexthop nexthop_tab[router->multipath];
|
||||
ifindex_t i;
|
||||
struct interface *ifp = NULL;
|
||||
int num_ifindex;
|
||||
|
||||
memset(nexthop_tab, 0, sizeof(nexthop_tab));
|
||||
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab,
|
||||
MULTIPATH_NUM, bsr_addr,
|
||||
PIM_NEXTHOP_LOOKUP_MAX);
|
||||
num_ifindex = zclient_lookup_nexthop(
|
||||
pim, nexthop_tab, router->multipath, bsr_addr,
|
||||
PIM_NEXTHOP_LOOKUP_MAX);
|
||||
|
||||
if (num_ifindex <= 0)
|
||||
return false;
|
||||
@ -501,8 +501,8 @@ static int pim_ecmp_nexthop_search(struct pim_instance *pim,
|
||||
struct prefix *src, struct prefix *grp,
|
||||
int neighbor_needed)
|
||||
{
|
||||
struct pim_neighbor *nbrs[MULTIPATH_NUM], *nbr = NULL;
|
||||
struct interface *ifps[MULTIPATH_NUM];
|
||||
struct pim_neighbor *nbrs[router->multipath], *nbr = NULL;
|
||||
struct interface *ifps[router->multipath];
|
||||
struct nexthop *nh_node = NULL;
|
||||
ifindex_t first_ifindex;
|
||||
struct interface *ifp = NULL;
|
||||
@ -888,11 +888,11 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,
|
||||
struct prefix *grp, int neighbor_needed)
|
||||
{
|
||||
struct pim_nexthop_cache *pnc;
|
||||
struct pim_zlookup_nexthop nexthop_tab[MULTIPATH_NUM];
|
||||
struct pim_neighbor *nbrs[MULTIPATH_NUM], *nbr = NULL;
|
||||
struct pim_zlookup_nexthop nexthop_tab[router->multipath];
|
||||
struct pim_neighbor *nbrs[router->multipath], *nbr = NULL;
|
||||
struct pim_rpf rpf;
|
||||
int num_ifindex;
|
||||
struct interface *ifps[MULTIPATH_NUM], *ifp;
|
||||
struct interface *ifps[router->multipath], *ifp;
|
||||
int first_ifindex;
|
||||
int found = 0;
|
||||
uint8_t i = 0;
|
||||
@ -915,9 +915,10 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,
|
||||
}
|
||||
|
||||
memset(nexthop_tab, 0,
|
||||
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
||||
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
|
||||
src_addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||
sizeof(struct pim_zlookup_nexthop) * router->multipath);
|
||||
num_ifindex =
|
||||
zclient_lookup_nexthop(pim, nexthop_tab, router->multipath,
|
||||
src_addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||
if (num_ifindex < 1) {
|
||||
if (PIM_DEBUG_PIM_NHT)
|
||||
zlog_warn(
|
||||
|
@ -54,7 +54,7 @@ void pim_rpf_set_refresh_time(struct pim_instance *pim)
|
||||
bool pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
|
||||
pim_addr addr, int neighbor_needed)
|
||||
{
|
||||
struct pim_zlookup_nexthop nexthop_tab[MULTIPATH_NUM];
|
||||
struct pim_zlookup_nexthop nexthop_tab[router->multipath];
|
||||
struct pim_neighbor *nbr = NULL;
|
||||
int num_ifindex;
|
||||
struct interface *ifp = NULL;
|
||||
@ -92,9 +92,10 @@ bool pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
|
||||
}
|
||||
|
||||
memset(nexthop_tab, 0,
|
||||
sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
|
||||
num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
|
||||
addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||
sizeof(struct pim_zlookup_nexthop) * router->multipath);
|
||||
num_ifindex =
|
||||
zclient_lookup_nexthop(pim, nexthop_tab, router->multipath,
|
||||
addr, PIM_NEXTHOP_LOOKUP_MAX);
|
||||
if (num_ifindex < 1) {
|
||||
zlog_warn(
|
||||
"%s %s: could not find nexthop ifindex for address %pPAs",
|
||||
|
@ -452,6 +452,7 @@ static void pim_zebra_connected(struct zclient *zclient)
|
||||
static void pim_zebra_capabilities(struct zclient_capabilities *cap)
|
||||
{
|
||||
router->mlag_role = cap->role;
|
||||
router->multipath = cap->ecmp;
|
||||
}
|
||||
|
||||
static zclient_handler *const pim_handlers[] = {
|
||||
|
@ -211,7 +211,7 @@ static int zclient_read_nexthop(struct pim_instance *pim,
|
||||
metric = stream_getl(s);
|
||||
nexthop_num = stream_getc(s);
|
||||
|
||||
if (nexthop_num < 1) {
|
||||
if (nexthop_num < 1 || nexthop_num > router->multipath) {
|
||||
if (PIM_DEBUG_PIM_NHT_DETAIL)
|
||||
zlog_debug("%s: socket %d bad nexthop_num=%d", __func__,
|
||||
zlookup->sock, nexthop_num);
|
||||
@ -258,8 +258,9 @@ static int zclient_read_nexthop(struct pim_instance *pim,
|
||||
nexthop_tab[num_ifindex].ifindex = nh_ifi;
|
||||
++num_ifindex;
|
||||
#else
|
||||
zlog_warn("cannot use IPv4 nexthop %pI4 for IPv6 %pPA",
|
||||
&nh_ip4, &addr);
|
||||
zlog_warn(
|
||||
"cannot use IPv4 nexthop %pI4(%d) for IPv6 %pPA",
|
||||
&nh_ip4, nh_ifi, &addr);
|
||||
#endif
|
||||
break;
|
||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||
|
@ -100,6 +100,7 @@ void pim_router_init(void)
|
||||
router->debugs = 0;
|
||||
router->master = frr_init();
|
||||
router->t_periodic = PIM_DEFAULT_T_PERIODIC;
|
||||
router->multipath = MULTIPATH_NUM;
|
||||
|
||||
/*
|
||||
RFC 4601: 4.6.3. Assert Metrics
|
||||
|
Loading…
Reference in New Issue
Block a user