mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 03:29:06 +00:00 
			
		
		
		
	ospfd: Cleanup indentation surrounding oi->nbr
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
		
							parent
							
								
									812e6c78c1
								
							
						
					
					
						commit
						fe61ceaee7
					
				@ -638,13 +638,15 @@ int ospf_flood_through_interface(struct ospf_interface *oi,
 | 
			
		||||
	if (oi->type == OSPF_IFTYPE_NBMA) {
 | 
			
		||||
		struct ospf_neighbor *nbr;
 | 
			
		||||
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
			if ((nbr = rn->info) != NULL)
 | 
			
		||||
				if (nbr != oi->nbr_self
 | 
			
		||||
				    && nbr->state >= NSM_Exchange)
 | 
			
		||||
					ospf_ls_upd_send_lsa(
 | 
			
		||||
						nbr, lsa,
 | 
			
		||||
						OSPF_SEND_PACKET_DIRECT);
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
			if (nbr != oi->nbr_self && nbr->state >= NSM_Exchange)
 | 
			
		||||
				ospf_ls_upd_send_lsa(nbr, lsa,
 | 
			
		||||
						     OSPF_SEND_PACKET_DIRECT);
 | 
			
		||||
		}
 | 
			
		||||
	} else
 | 
			
		||||
		ospf_ls_upd_send_lsa(oi->nbr_self, lsa,
 | 
			
		||||
				     OSPF_SEND_PACKET_INDIRECT);
 | 
			
		||||
@ -991,18 +993,20 @@ static void ospf_ls_retransmit_delete_nbr_if(struct ospf_interface *oi,
 | 
			
		||||
	struct ospf_lsa *lsr;
 | 
			
		||||
 | 
			
		||||
	if (ospf_if_is_enable(oi))
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			/* If LSA find in LS-retransmit list, then remove it. */
 | 
			
		||||
			if ((nbr = rn->info) != NULL) {
 | 
			
		||||
				lsr = ospf_ls_retransmit_lookup(nbr, lsa);
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
				/* If LSA find in ls-retransmit list, remove it.
 | 
			
		||||
				 */
 | 
			
		||||
				if (lsr != NULL
 | 
			
		||||
				    && lsr->data->ls_seqnum
 | 
			
		||||
					       == lsa->data->ls_seqnum)
 | 
			
		||||
					ospf_ls_retransmit_delete(nbr, lsr);
 | 
			
		||||
			}
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			lsr = ospf_ls_retransmit_lookup(nbr, lsa);
 | 
			
		||||
 | 
			
		||||
			/* If LSA find in ls-retransmit list, remove it. */
 | 
			
		||||
			if (lsr != NULL &&
 | 
			
		||||
			    lsr->data->ls_seqnum == lsa->data->ls_seqnum)
 | 
			
		||||
				ospf_ls_retransmit_delete(nbr, lsr);
 | 
			
		||||
		}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ospf_ls_retransmit_delete_nbr_area(struct ospf_area *area,
 | 
			
		||||
 | 
			
		||||
@ -66,15 +66,16 @@ int ospf_interface_neighbor_count(struct ospf_interface *oi)
 | 
			
		||||
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
		nbr = rn->info;
 | 
			
		||||
		if (nbr) {
 | 
			
		||||
			/* Do not show myself. */
 | 
			
		||||
			if (nbr == oi->nbr_self)
 | 
			
		||||
				continue;
 | 
			
		||||
			/* Down state is not shown. */
 | 
			
		||||
			if (nbr->state == NSM_Down)
 | 
			
		||||
				continue;
 | 
			
		||||
			count++;
 | 
			
		||||
		}
 | 
			
		||||
		if (!nbr)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		/* Do not show myself. */
 | 
			
		||||
		if (nbr == oi->nbr_self)
 | 
			
		||||
			continue;
 | 
			
		||||
		/* Down state is not shown. */
 | 
			
		||||
		if (nbr->state == NSM_Down)
 | 
			
		||||
			continue;
 | 
			
		||||
		count++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return count;
 | 
			
		||||
@ -315,10 +316,11 @@ void ospf_if_cleanup(struct ospf_interface *oi)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* send Neighbor event KillNbr to all associated neighbors. */
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
		if ((nbr = rn->info) != NULL)
 | 
			
		||||
			if (nbr != oi->nbr_self)
 | 
			
		||||
				OSPF_NSM_EVENT_EXECUTE(nbr, NSM_KillNbr);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Cleanup Link State Acknowlegdment list. */
 | 
			
		||||
	for (ALL_LIST_ELEMENTS(oi->ls_ack, node, nnode, lsa))
 | 
			
		||||
 | 
			
		||||
@ -3349,49 +3349,44 @@ static int ospf_make_hello(struct ospf_interface *oi, struct stream *s)
 | 
			
		||||
	stream_put_ipv4(s, BDR(oi).s_addr);
 | 
			
		||||
 | 
			
		||||
	/* Add neighbor seen. */
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
		if ((nbr = rn->info))
 | 
			
		||||
			if (nbr->router_id.s_addr
 | 
			
		||||
			    != INADDR_ANY) /* Ignore 0.0.0.0 node. */
 | 
			
		||||
				if (nbr->state
 | 
			
		||||
				    != NSM_Attempt) /* Ignore Down neighbor. */
 | 
			
		||||
					if (nbr->state
 | 
			
		||||
					    != NSM_Down) /* This is myself for
 | 
			
		||||
							    DR election. */
 | 
			
		||||
						if (!IPV4_ADDR_SAME(
 | 
			
		||||
							    &nbr->router_id,
 | 
			
		||||
							    &oi->ospf->router_id)) {
 | 
			
		||||
							/* Check neighbor is
 | 
			
		||||
							 * sane? */
 | 
			
		||||
							if (nbr->d_router.s_addr
 | 
			
		||||
								    != INADDR_ANY
 | 
			
		||||
							    && IPV4_ADDR_SAME(
 | 
			
		||||
								    &nbr->d_router,
 | 
			
		||||
								    &oi->address
 | 
			
		||||
									     ->u
 | 
			
		||||
									     .prefix4)
 | 
			
		||||
							    && IPV4_ADDR_SAME(
 | 
			
		||||
								    &nbr->bd_router,
 | 
			
		||||
								    &oi->address
 | 
			
		||||
									     ->u
 | 
			
		||||
									     .prefix4))
 | 
			
		||||
								flag = 1;
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
		nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
							/* Hello packet overflows interface MTU. */
 | 
			
		||||
							if (length + sizeof(uint32_t)
 | 
			
		||||
								> ospf_packet_max(oi)) {
 | 
			
		||||
								flog_err(
 | 
			
		||||
									EC_OSPF_LARGE_HELLO,
 | 
			
		||||
									"Oversized Hello packet! Larger than MTU. Not sending it out");
 | 
			
		||||
								return 0;
 | 
			
		||||
							}
 | 
			
		||||
		if (!nbr)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
							stream_put_ipv4(
 | 
			
		||||
								s,
 | 
			
		||||
								nbr->router_id
 | 
			
		||||
									.s_addr);
 | 
			
		||||
							length += 4;
 | 
			
		||||
						}
 | 
			
		||||
		/* Ignore the 0.0.0.0 node */
 | 
			
		||||
		if (nbr->router_id.s_addr == INADDR_ANY)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		/* Ignore Down neighbor */
 | 
			
		||||
		if (nbr->state == NSM_Attempt)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		/* This is myself for DR election */
 | 
			
		||||
		if (nbr->state == NSM_Down)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (IPV4_ADDR_SAME(&nbr->router_id, &oi->ospf->router_id))
 | 
			
		||||
			continue;
 | 
			
		||||
		/* Check neighbor is  sane? */
 | 
			
		||||
		if (nbr->d_router.s_addr != INADDR_ANY &&
 | 
			
		||||
		    IPV4_ADDR_SAME(&nbr->d_router, &oi->address->u.prefix4) &&
 | 
			
		||||
		    IPV4_ADDR_SAME(&nbr->bd_router, &oi->address->u.prefix4))
 | 
			
		||||
			flag = 1;
 | 
			
		||||
 | 
			
		||||
		/* Hello packet overflows interface MTU.
 | 
			
		||||
		 */
 | 
			
		||||
		if (length + sizeof(uint32_t) > ospf_packet_max(oi)) {
 | 
			
		||||
			flog_err(
 | 
			
		||||
				EC_OSPF_LARGE_HELLO,
 | 
			
		||||
				"Oversized Hello packet! Larger than MTU. Not sending it out");
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		stream_put_ipv4(s, nbr->router_id.s_addr);
 | 
			
		||||
		length += 4;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Let neighbor generate BackupSeen. */
 | 
			
		||||
	if (flag == 1)
 | 
			
		||||
@ -3772,54 +3767,44 @@ void ospf_hello_send(struct ospf_interface *oi)
 | 
			
		||||
		struct ospf_neighbor *nbr;
 | 
			
		||||
		struct route_node *rn;
 | 
			
		||||
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
			if ((nbr = rn->info))
 | 
			
		||||
				if (nbr != oi->nbr_self)
 | 
			
		||||
					if (nbr->state != NSM_Down) {
 | 
			
		||||
						/*  RFC 2328  Section 9.5.1
 | 
			
		||||
						    If the router is not
 | 
			
		||||
						   eligible to become Designated
 | 
			
		||||
						   Router,
 | 
			
		||||
						    it must periodically send
 | 
			
		||||
						   Hello Packets to both the
 | 
			
		||||
						    Designated Router and the
 | 
			
		||||
						   Backup Designated Router (if
 | 
			
		||||
						   they
 | 
			
		||||
						    exist).  */
 | 
			
		||||
						if (PRIORITY(oi) == 0
 | 
			
		||||
						    && IPV4_ADDR_CMP(
 | 
			
		||||
							       &DR(oi),
 | 
			
		||||
							       &nbr->address.u
 | 
			
		||||
									.prefix4)
 | 
			
		||||
						    && IPV4_ADDR_CMP(
 | 
			
		||||
							       &BDR(oi),
 | 
			
		||||
							       &nbr->address.u
 | 
			
		||||
									.prefix4))
 | 
			
		||||
							continue;
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
						/*  If the router is eligible to
 | 
			
		||||
						   become Designated Router, it
 | 
			
		||||
						    must periodically send Hello
 | 
			
		||||
						   Packets to all neighbors that
 | 
			
		||||
						    are also eligible. In
 | 
			
		||||
						   addition, if the router is
 | 
			
		||||
						   itself the
 | 
			
		||||
						    Designated Router or Backup
 | 
			
		||||
						   Designated Router, it must
 | 
			
		||||
						   also
 | 
			
		||||
						    send periodic Hello Packets
 | 
			
		||||
						   to all other neighbors. */
 | 
			
		||||
			if (nbr == oi->nbr_self)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
						if (nbr->priority == 0
 | 
			
		||||
						    && oi->state == ISM_DROther)
 | 
			
		||||
							continue;
 | 
			
		||||
						/* if oi->state == Waiting, send
 | 
			
		||||
						 * hello to all neighbors */
 | 
			
		||||
						ospf_hello_send_sub(
 | 
			
		||||
							oi,
 | 
			
		||||
							nbr->address.u.prefix4
 | 
			
		||||
								.s_addr);
 | 
			
		||||
					}
 | 
			
		||||
			if (nbr->state == NSM_Down)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			/*
 | 
			
		||||
			 * RFC 2328  Section 9.5.1
 | 
			
		||||
			 * If the router is not eligible to become Designated
 | 
			
		||||
			 * Router, it must periodically send Hello Packets to
 | 
			
		||||
			 * both the Designated Router and the Backup
 | 
			
		||||
			 * Designated Router (if they exist).
 | 
			
		||||
			 */
 | 
			
		||||
			if (PRIORITY(oi) == 0 &&
 | 
			
		||||
			    IPV4_ADDR_CMP(&DR(oi), &nbr->address.u.prefix4) &&
 | 
			
		||||
			    IPV4_ADDR_CMP(&BDR(oi), &nbr->address.u.prefix4))
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			/*
 | 
			
		||||
			 * If the router is eligible to become Designated
 | 
			
		||||
			 * Router, it must periodically send Hello Packets to
 | 
			
		||||
			 * all neighbors that are also eligible. In addition,
 | 
			
		||||
			 * if the router is itself the Designated Router or
 | 
			
		||||
			 * Backup Designated Router, it must also send periodic
 | 
			
		||||
			 * Hello Packets to all other neighbors.
 | 
			
		||||
			 */
 | 
			
		||||
			if (nbr->priority == 0 && oi->state == ISM_DROther)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			/* if oi->state == Waiting, send
 | 
			
		||||
			 * hello to all neighbors */
 | 
			
		||||
			ospf_hello_send_sub(oi, nbr->address.u.prefix4.s_addr);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		/* Decide destination address. */
 | 
			
		||||
		if (oi->type == OSPF_IFTYPE_VIRTUALLINK)
 | 
			
		||||
@ -4291,14 +4276,18 @@ void ospf_ls_ack_send_delayed(struct ospf_interface *oi)
 | 
			
		||||
		struct ospf_neighbor *nbr;
 | 
			
		||||
		struct route_node *rn;
 | 
			
		||||
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
			if ((nbr = rn->info) != NULL)
 | 
			
		||||
				if (nbr != oi->nbr_self
 | 
			
		||||
				    && nbr->state >= NSM_Exchange)
 | 
			
		||||
					while (listcount(oi->ls_ack))
 | 
			
		||||
						ospf_ls_ack_send_list(
 | 
			
		||||
							oi, oi->ls_ack,
 | 
			
		||||
							nbr->address.u.prefix4);
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (nbr != oi->nbr_self && nbr->state >= NSM_Exchange)
 | 
			
		||||
				while (listcount(oi->ls_ack))
 | 
			
		||||
					ospf_ls_ack_send_list(
 | 
			
		||||
						oi, oi->ls_ack,
 | 
			
		||||
						nbr->address.u.prefix4);
 | 
			
		||||
		}
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	if (oi->type == OSPF_IFTYPE_VIRTUALLINK)
 | 
			
		||||
 | 
			
		||||
@ -756,13 +756,14 @@ static struct ospf_neighbor *get_neighbor_by_addr(struct ospf *top,
 | 
			
		||||
	for (ALL_LIST_ELEMENTS_RO(top->oiflist, node, oi))
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
			if (nbr)
 | 
			
		||||
				if (IPV4_ADDR_SAME(&nbr->address.u.prefix4,
 | 
			
		||||
						   &addr)
 | 
			
		||||
				    || IPV4_ADDR_SAME(&nbr->router_id, &addr)) {
 | 
			
		||||
					route_unlock_node(rn);
 | 
			
		||||
					return nbr;
 | 
			
		||||
				}
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (IPV4_ADDR_SAME(&nbr->address.u.prefix4, &addr) ||
 | 
			
		||||
			    IPV4_ADDR_SAME(&nbr->router_id, &addr)) {
 | 
			
		||||
				route_unlock_node(rn);
 | 
			
		||||
				return nbr;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										151
									
								
								ospfd/ospf_vty.c
									
									
									
									
									
								
							
							
						
						
									
										151
									
								
								ospfd/ospf_vty.c
									
									
									
									
									
								
							@ -4476,19 +4476,22 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
 | 
			
		||||
	struct ospf_neighbor *nbr, *prev_nbr = NULL;
 | 
			
		||||
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
		if ((nbr = rn->info)) {
 | 
			
		||||
			/* Do not show myself. */
 | 
			
		||||
			if (nbr == oi->nbr_self)
 | 
			
		||||
				continue;
 | 
			
		||||
			/* Down state is not shown. */
 | 
			
		||||
			if (nbr->state == NSM_Down)
 | 
			
		||||
				continue;
 | 
			
		||||
		nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
			prev_nbr = nbr;
 | 
			
		||||
		if (!nbr)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
			show_ip_ospf_neighbour_brief(vty, nbr, prev_nbr, json,
 | 
			
		||||
						     use_json);
 | 
			
		||||
		}
 | 
			
		||||
		/* Do not show myself. */
 | 
			
		||||
		if (nbr == oi->nbr_self)
 | 
			
		||||
			continue;
 | 
			
		||||
		/* Down state is not shown. */
 | 
			
		||||
		if (nbr->state == NSM_Down)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		prev_nbr = nbr;
 | 
			
		||||
 | 
			
		||||
		show_ip_ospf_neighbour_brief(vty, nbr, prev_nbr, json,
 | 
			
		||||
					     use_json);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5402,14 +5405,17 @@ static int show_ip_ospf_neighbor_id_common(struct vty *vty, struct ospf *ospf,
 | 
			
		||||
	ospf_show_vrf_name(ospf, vty, json, use_vrf);
 | 
			
		||||
 | 
			
		||||
	for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, node, oi)) {
 | 
			
		||||
		if ((nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, router_id))) {
 | 
			
		||||
			if (is_detail)
 | 
			
		||||
				show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
					vty, oi, nbr, NULL, json, use_json);
 | 
			
		||||
			else
 | 
			
		||||
				show_ip_ospf_neighbour_brief(vty, nbr, NULL,
 | 
			
		||||
							     json, use_json);
 | 
			
		||||
		}
 | 
			
		||||
		nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, router_id);
 | 
			
		||||
 | 
			
		||||
		if (!nbr)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (is_detail)
 | 
			
		||||
			show_ip_ospf_neighbor_detail_sub(vty, oi, nbr, NULL,
 | 
			
		||||
							 json, use_json);
 | 
			
		||||
		else
 | 
			
		||||
			show_ip_ospf_neighbour_brief(vty, nbr, NULL, json,
 | 
			
		||||
						     use_json);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (use_json)
 | 
			
		||||
@ -5498,16 +5504,19 @@ static int show_ip_ospf_neighbor_detail_common(struct vty *vty,
 | 
			
		||||
		struct ospf_neighbor *nbr, *prev_nbr = NULL;
 | 
			
		||||
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			if ((nbr = rn->info)) {
 | 
			
		||||
				if (nbr != oi->nbr_self) {
 | 
			
		||||
					if (nbr->state != NSM_Down) {
 | 
			
		||||
						show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
							vty, oi, nbr, prev_nbr,
 | 
			
		||||
							json_nbr_sub, use_json);
 | 
			
		||||
					}
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (nbr != oi->nbr_self) {
 | 
			
		||||
				if (nbr->state != NSM_Down) {
 | 
			
		||||
					show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
						vty, oi, nbr, prev_nbr,
 | 
			
		||||
						json_nbr_sub, use_json);
 | 
			
		||||
				}
 | 
			
		||||
				prev_nbr = nbr;
 | 
			
		||||
			}
 | 
			
		||||
			prev_nbr = nbr;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -5668,27 +5677,29 @@ static int show_ip_ospf_neighbor_detail_all_common(struct vty *vty,
 | 
			
		||||
		struct ospf_nbr_nbma *nbr_nbma;
 | 
			
		||||
 | 
			
		||||
		for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
			if ((nbr = rn->info)) {
 | 
			
		||||
				if (nbr != oi->nbr_self)
 | 
			
		||||
					if (nbr->state != NSM_Down)
 | 
			
		||||
						show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
							vty, oi, rn->info,
 | 
			
		||||
							prev_nbr,
 | 
			
		||||
							json_vrf, use_json);
 | 
			
		||||
				prev_nbr = nbr;
 | 
			
		||||
			}
 | 
			
		||||
			nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (nbr != oi->nbr_self)
 | 
			
		||||
				if (nbr->state != NSM_Down)
 | 
			
		||||
					show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
						vty, oi, rn->info, prev_nbr,
 | 
			
		||||
						json_vrf, use_json);
 | 
			
		||||
			prev_nbr = nbr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (oi->type == OSPF_IFTYPE_NBMA) {
 | 
			
		||||
			struct listnode *nd;
 | 
			
		||||
		if (oi->type != OSPF_IFTYPE_NBMA)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
			for (ALL_LIST_ELEMENTS_RO(oi->nbr_nbma, nd, nbr_nbma)) {
 | 
			
		||||
				if (nbr_nbma->nbr == NULL
 | 
			
		||||
				    || nbr_nbma->nbr->state == NSM_Down)
 | 
			
		||||
					show_ip_ospf_nbr_nbma_detail_sub(
 | 
			
		||||
						vty, oi, nbr_nbma, use_json,
 | 
			
		||||
						json_vrf);
 | 
			
		||||
			}
 | 
			
		||||
		struct listnode *nd;
 | 
			
		||||
 | 
			
		||||
		for (ALL_LIST_ELEMENTS_RO(oi->nbr_nbma, nd, nbr_nbma)) {
 | 
			
		||||
			if (nbr_nbma->nbr == NULL ||
 | 
			
		||||
			    nbr_nbma->nbr->state == NSM_Down)
 | 
			
		||||
				show_ip_ospf_nbr_nbma_detail_sub(
 | 
			
		||||
					vty, oi, nbr_nbma, use_json, json_vrf);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -5853,19 +5864,25 @@ static int show_ip_ospf_neighbor_int_detail_common(struct vty *vty,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (rn = route_top(IF_OIFS(ifp)); rn; rn = route_next(rn)) {
 | 
			
		||||
		if ((oi = rn->info)) {
 | 
			
		||||
			for (nrn = route_top(oi->nbrs); nrn;
 | 
			
		||||
			     nrn = route_next(nrn)) {
 | 
			
		||||
				if ((nbr = nrn->info)) {
 | 
			
		||||
					if (nbr != oi->nbr_self) {
 | 
			
		||||
						if (nbr->state != NSM_Down)
 | 
			
		||||
							show_ip_ospf_neighbor_detail_sub(
 | 
			
		||||
								vty, oi, nbr,
 | 
			
		||||
								NULL,
 | 
			
		||||
								json, use_json);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		oi = rn->info;
 | 
			
		||||
 | 
			
		||||
		if (!oi)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		for (nrn = route_top(oi->nbrs); nrn; nrn = route_next(nrn)) {
 | 
			
		||||
			nbr = nrn->info;
 | 
			
		||||
 | 
			
		||||
			if (!nbr)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (nbr == oi->nbr_self)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			if (nbr->state == NSM_Down)
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			show_ip_ospf_neighbor_detail_sub(vty, oi, nbr, NULL,
 | 
			
		||||
							 json, use_json);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -8019,13 +8036,17 @@ static void ospf_nbr_timer_update(struct ospf_interface *oi)
 | 
			
		||||
	struct route_node *rn;
 | 
			
		||||
	struct ospf_neighbor *nbr;
 | 
			
		||||
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
 | 
			
		||||
		if ((nbr = rn->info)) {
 | 
			
		||||
			nbr->v_inactivity = OSPF_IF_PARAM(oi, v_wait);
 | 
			
		||||
			nbr->v_db_desc = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
			nbr->v_ls_req = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
			nbr->v_ls_upd = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
		}
 | 
			
		||||
	for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
 | 
			
		||||
		nbr = rn->info;
 | 
			
		||||
 | 
			
		||||
		if (!nbr)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		nbr->v_inactivity = OSPF_IF_PARAM(oi, v_wait);
 | 
			
		||||
		nbr->v_db_desc = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
		nbr->v_ls_req = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
		nbr->v_ls_upd = OSPF_IF_PARAM(oi, retransmit_interval);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int ospf_vty_dead_interval_set(struct vty *vty, const char *interval_str,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user