mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 13:43:22 +00:00 
			
		
		
		
	*: ALLOC calls cannot fail
There is no need to check for failure of a ALLOC call as that any failure to do so will result in a assert happening. So we can safely remove all of this code. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
		
							parent
							
								
									1408cdfc07
								
							
						
					
					
						commit
						0ce1ca805d
					
				@ -214,16 +214,11 @@ static struct assegment *assegment_append_asns(struct assegment *seg,
 | 
			
		||||
	newas = XREALLOC(MTYPE_AS_SEG_DATA, seg->as,
 | 
			
		||||
			 ASSEGMENT_DATA_SIZE(seg->length + num, 1));
 | 
			
		||||
 | 
			
		||||
	if (newas) {
 | 
			
		||||
	seg->as = newas;
 | 
			
		||||
	memcpy(seg->as + seg->length, asnos,
 | 
			
		||||
	       ASSEGMENT_DATA_SIZE(num, 1));
 | 
			
		||||
	seg->length += num;
 | 
			
		||||
	return seg;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	assegment_free_all(seg);
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int int_cmp(const void *p1, const void *p2)
 | 
			
		||||
 | 
			
		||||
@ -202,10 +202,6 @@ void bgp_lp_init(struct thread_master *master, struct labelpool *pool)
 | 
			
		||||
	lp->requests = XCALLOC(MTYPE_BGP_LABEL_FIFO, sizeof(struct lp_fifo));
 | 
			
		||||
	LABEL_FIFO_INIT(lp->requests);
 | 
			
		||||
	lp->callback_q = work_queue_new(master, "label callbacks");
 | 
			
		||||
	if (!lp->callback_q) {
 | 
			
		||||
		zlog_err("%s: Failed to allocate work queue", __func__);
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	lp->callback_q->spec.workfunc = lp_cbq_docallback;
 | 
			
		||||
	lp->callback_q->spec.del_item_data = lp_cbq_item_free;
 | 
			
		||||
 | 
			
		||||
@ -2459,16 +2459,10 @@ static void bgp_processq_del(struct work_queue *wq, void *data)
 | 
			
		||||
 | 
			
		||||
void bgp_process_queue_init(void)
 | 
			
		||||
{
 | 
			
		||||
	if (!bm->process_main_queue) {
 | 
			
		||||
	if (!bm->process_main_queue)
 | 
			
		||||
		bm->process_main_queue =
 | 
			
		||||
			work_queue_new(bm->master, "process_main_queue");
 | 
			
		||||
 | 
			
		||||
		if (!bm->process_main_queue) {
 | 
			
		||||
			zlog_err("%s: Failed to allocate work queue", __func__);
 | 
			
		||||
			exit(1);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bm->process_main_queue->spec.workfunc = &bgp_process_wq;
 | 
			
		||||
	bm->process_main_queue->spec.del_item_data = &bgp_processq_del;
 | 
			
		||||
	bm->process_main_queue->spec.max_retries = 0;
 | 
			
		||||
@ -3838,11 +3832,7 @@ static void bgp_clear_node_queue_init(struct peer *peer)
 | 
			
		||||
	snprintf(wname, sizeof(wname), "clear %s", peer->host);
 | 
			
		||||
#undef CLEAR_QUEUE_NAME_LEN
 | 
			
		||||
 | 
			
		||||
	if ((peer->clear_node_queue = work_queue_new(bm->master, wname))
 | 
			
		||||
	    == NULL) {
 | 
			
		||||
		zlog_err("%s: Failed to allocate work queue", __func__);
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
	peer->clear_node_queue = work_queue_new(bm->master, wname);
 | 
			
		||||
	peer->clear_node_queue->spec.hold = 10;
 | 
			
		||||
	peer->clear_node_queue->spec.workfunc = &bgp_clear_route_node;
 | 
			
		||||
	peer->clear_node_queue->spec.del_item_data = &bgp_clear_node_queue_del;
 | 
			
		||||
 | 
			
		||||
@ -244,7 +244,6 @@ dict_t *dict_create(dictcount_t maxcount, dict_comp_t comp)
 | 
			
		||||
{
 | 
			
		||||
	dict_t *new = XCALLOC(MTYPE_ISIS_DICT, sizeof(dict_t));
 | 
			
		||||
 | 
			
		||||
	if (new) {
 | 
			
		||||
	new->compare = comp;
 | 
			
		||||
	new->allocnode = dnode_alloc;
 | 
			
		||||
	new->freenode = dnode_free;
 | 
			
		||||
@ -256,7 +255,7 @@ dict_t *dict_create(dictcount_t maxcount, dict_comp_t comp)
 | 
			
		||||
	new->nilnode.parent = &new->nilnode;
 | 
			
		||||
	new->nilnode.color = dnode_black;
 | 
			
		||||
	new->dupes = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return new;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -974,12 +973,12 @@ static void dnode_free(dnode_t *node, void *context)
 | 
			
		||||
dnode_t *dnode_create(void *data)
 | 
			
		||||
{
 | 
			
		||||
	dnode_t *new = XCALLOC(MTYPE_ISIS_DICT_NODE, sizeof(dnode_t));
 | 
			
		||||
	if (new) {
 | 
			
		||||
 | 
			
		||||
	new->data = data;
 | 
			
		||||
	new->parent = NULL;
 | 
			
		||||
	new->left = NULL;
 | 
			
		||||
	new->right = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return new;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1250,7 +1249,7 @@ static char *dupstring(char *str)
 | 
			
		||||
{
 | 
			
		||||
	int sz = strlen(str) + 1;
 | 
			
		||||
	char *new = XCALLOC(MTYPE_ISIS_TMP, sz);
 | 
			
		||||
	if (new)
 | 
			
		||||
 | 
			
		||||
	memcpy(new, str, sz);
 | 
			
		||||
	return new;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -73,10 +73,6 @@ struct isis_circuit *isis_circuit_new()
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	circuit = XCALLOC(MTYPE_ISIS_CIRCUIT, sizeof(struct isis_circuit));
 | 
			
		||||
	if (circuit == NULL) {
 | 
			
		||||
		zlog_err("Can't malloc isis circuit");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Default values
 | 
			
		||||
 | 
			
		||||
@ -486,10 +486,6 @@ struct isis_spftree *isis_spftree_new(struct isis_area *area)
 | 
			
		||||
	struct isis_spftree *tree;
 | 
			
		||||
 | 
			
		||||
	tree = XCALLOC(MTYPE_ISIS_SPFTREE, sizeof(struct isis_spftree));
 | 
			
		||||
	if (tree == NULL) {
 | 
			
		||||
		zlog_err("ISIS-Spf: isis_spftree_new Out of memory!");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	isis_vertex_queue_init(&tree->tents, "IS-IS SPF tents", true);
 | 
			
		||||
	isis_vertex_queue_init(&tree->paths, "IS-IS SPF paths", false);
 | 
			
		||||
 | 
			
		||||
@ -87,9 +87,6 @@ struct mpls_te_circuit *mpls_te_circuit_new()
 | 
			
		||||
 | 
			
		||||
	mtc = XCALLOC(MTYPE_ISIS_MPLS_TE, sizeof(struct mpls_te_circuit));
 | 
			
		||||
 | 
			
		||||
	if (mtc == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	mtc->status = disable;
 | 
			
		||||
	mtc->type = STD_TE;
 | 
			
		||||
	mtc->length = 0;
 | 
			
		||||
 | 
			
		||||
@ -2409,11 +2409,7 @@ static int set_log_file(struct vty *vty, const char *fname, int loglevel)
 | 
			
		||||
			return CMD_WARNING_CONFIG_FAILED;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ((p = XMALLOC(MTYPE_TMP, strlen(cwd) + strlen(fname) + 2))
 | 
			
		||||
		    == NULL) {
 | 
			
		||||
			zlog_err("config_log_file: Unable to alloc mem!");
 | 
			
		||||
			return CMD_WARNING_CONFIG_FAILED;
 | 
			
		||||
		}
 | 
			
		||||
		p = XMALLOC(MTYPE_TMP, strlen(cwd) + strlen(fname) + 2);
 | 
			
		||||
		sprintf(p, "%s/%s", cwd, fname);
 | 
			
		||||
		fullpath = p;
 | 
			
		||||
	} else
 | 
			
		||||
 | 
			
		||||
@ -81,9 +81,6 @@ struct work_queue *work_queue_new(struct thread_master *m,
 | 
			
		||||
 | 
			
		||||
	new = XCALLOC(MTYPE_WORK_QUEUE, sizeof(struct work_queue));
 | 
			
		||||
 | 
			
		||||
	if (new == NULL)
 | 
			
		||||
		return new;
 | 
			
		||||
 | 
			
		||||
	new->name = XSTRDUP(MTYPE_WORK_QUEUE_NAME, queue_name);
 | 
			
		||||
	new->master = m;
 | 
			
		||||
	SET_FLAG(new->flags, WQ_UNPLUGGED);
 | 
			
		||||
@ -152,10 +149,7 @@ void work_queue_add(struct work_queue *wq, void *data)
 | 
			
		||||
 | 
			
		||||
	assert(wq);
 | 
			
		||||
 | 
			
		||||
	if (!(item = work_queue_item_new(wq))) {
 | 
			
		||||
		zlog_err("%s: unable to get new queue item", __func__);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	item = work_queue_item_new(wq);
 | 
			
		||||
 | 
			
		||||
	item->data = data;
 | 
			
		||||
	work_queue_item_enqueue(wq, item);
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@ static void *nhrp_cache_alloc(void *data)
 | 
			
		||||
	struct nhrp_cache *p, *key = data;
 | 
			
		||||
 | 
			
		||||
	p = XMALLOC(MTYPE_NHRP_CACHE, sizeof(struct nhrp_cache));
 | 
			
		||||
	if (p) {
 | 
			
		||||
 | 
			
		||||
	*p = (struct nhrp_cache){
 | 
			
		||||
		.cur.type = NHRP_CACHE_INVALID,
 | 
			
		||||
		.new.type = NHRP_CACHE_INVALID,
 | 
			
		||||
@ -58,7 +58,6 @@ static void *nhrp_cache_alloc(void *data)
 | 
			
		||||
		NOTIFIER_LIST_INITIALIZER(&p->notifier_list),
 | 
			
		||||
	};
 | 
			
		||||
	nhrp_cache_counts[p->cur.type]++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return p;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -25,8 +25,6 @@ static int nhrp_if_new_hook(struct interface *ifp)
 | 
			
		||||
	afi_t afi;
 | 
			
		||||
 | 
			
		||||
	nifp = XCALLOC(MTYPE_NHRP_IF, sizeof(struct nhrp_interface));
 | 
			
		||||
	if (!nifp)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	ifp->info = nifp;
 | 
			
		||||
	nifp->ifp = ifp;
 | 
			
		||||
 | 
			
		||||
@ -324,8 +324,6 @@ int nhrp_nhs_add(struct interface *ifp, afi_t afi, union sockunion *proto_addr,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nhs = XMALLOC(MTYPE_NHRP_NHS, sizeof(struct nhrp_nhs));
 | 
			
		||||
	if (!nhs)
 | 
			
		||||
		return NHRP_ERR_NO_MEMORY;
 | 
			
		||||
 | 
			
		||||
	*nhs = (struct nhrp_nhs){
 | 
			
		||||
		.afi = afi,
 | 
			
		||||
 | 
			
		||||
@ -165,7 +165,7 @@ static void *nhrp_peer_create(void *data)
 | 
			
		||||
	struct nhrp_peer *p, *key = data;
 | 
			
		||||
 | 
			
		||||
	p = XMALLOC(MTYPE_NHRP_PEER, sizeof(*p));
 | 
			
		||||
	if (p) {
 | 
			
		||||
 | 
			
		||||
	*p = (struct nhrp_peer){
 | 
			
		||||
		.ref = 0,
 | 
			
		||||
		.ifp = key->ifp,
 | 
			
		||||
@ -176,7 +176,7 @@ static void *nhrp_peer_create(void *data)
 | 
			
		||||
	nhrp_vc_notify_add(p->vc, &p->vc_notifier, nhrp_peer_vc_notify);
 | 
			
		||||
	nhrp_interface_notify_add(p->ifp, &p->ifp_notifier,
 | 
			
		||||
				  nhrp_peer_ifp_notify);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return p;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -48,14 +48,13 @@ static void *nhrp_vc_alloc(void *data)
 | 
			
		||||
	struct nhrp_vc *vc, *key = data;
 | 
			
		||||
 | 
			
		||||
	vc = XMALLOC(MTYPE_NHRP_VC, sizeof(struct nhrp_vc));
 | 
			
		||||
	if (vc) {
 | 
			
		||||
 | 
			
		||||
	*vc = (struct nhrp_vc){
 | 
			
		||||
		.local.nbma = key->local.nbma,
 | 
			
		||||
		.remote.nbma = key->remote.nbma,
 | 
			
		||||
		.notifier_list =
 | 
			
		||||
		NOTIFIER_LIST_INITIALIZER(&vc->notifier_list),
 | 
			
		||||
	};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return vc;
 | 
			
		||||
}
 | 
			
		||||
@ -118,8 +117,6 @@ int nhrp_vc_ipsec_updown(uint32_t child_id, struct nhrp_vc *vc)
 | 
			
		||||
			return 0;
 | 
			
		||||
 | 
			
		||||
		sa = XMALLOC(MTYPE_NHRP_VC, sizeof(struct child_sa));
 | 
			
		||||
		if (!sa)
 | 
			
		||||
			return 0;
 | 
			
		||||
 | 
			
		||||
		*sa = (struct child_sa){
 | 
			
		||||
			.id = child_id,
 | 
			
		||||
 | 
			
		||||
@ -25,8 +25,6 @@ struct zbuf *zbuf_alloc(size_t size)
 | 
			
		||||
	struct zbuf *zb;
 | 
			
		||||
 | 
			
		||||
	zb = XMALLOC(MTYPE_ZBUF_DATA, sizeof(*zb) + size);
 | 
			
		||||
	if (!zb)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	zbuf_init(zb, zb + 1, size, 0);
 | 
			
		||||
	zb->allocated = 1;
 | 
			
		||||
 | 
			
		||||
@ -180,12 +180,6 @@ struct ospf6_interface *ospf6_interface_create(struct interface *ifp)
 | 
			
		||||
	oi = (struct ospf6_interface *)XCALLOC(MTYPE_OSPF6_IF,
 | 
			
		||||
					       sizeof(struct ospf6_interface));
 | 
			
		||||
 | 
			
		||||
	if (!oi) {
 | 
			
		||||
		zlog_err("Can't malloc ospf6_interface for ifindex %d",
 | 
			
		||||
			 ifp->ifindex);
 | 
			
		||||
		return (struct ospf6_interface *)NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	oi->area = (struct ospf6_area *)NULL;
 | 
			
		||||
	oi->neighbor_list = list_new();
 | 
			
		||||
	oi->neighbor_list->cmp = ospf6_neighbor_cmp;
 | 
			
		||||
 | 
			
		||||
@ -1503,14 +1503,6 @@ int ospf6_iobuf_size(unsigned int size)
 | 
			
		||||
 | 
			
		||||
	recvnew = XMALLOC(MTYPE_OSPF6_MESSAGE, size);
 | 
			
		||||
	sendnew = XMALLOC(MTYPE_OSPF6_MESSAGE, size);
 | 
			
		||||
	if (recvnew == NULL || sendnew == NULL) {
 | 
			
		||||
		if (recvnew)
 | 
			
		||||
			XFREE(MTYPE_OSPF6_MESSAGE, recvnew);
 | 
			
		||||
		if (sendnew)
 | 
			
		||||
			XFREE(MTYPE_OSPF6_MESSAGE, sendnew);
 | 
			
		||||
		zlog_debug("Could not allocate I/O buffer of size %d.", size);
 | 
			
		||||
		return iobuflen;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (recvbuf)
 | 
			
		||||
		XFREE(MTYPE_OSPF6_MESSAGE, recvbuf);
 | 
			
		||||
 | 
			
		||||
@ -84,10 +84,6 @@ struct ospf6_neighbor *ospf6_neighbor_create(uint32_t router_id,
 | 
			
		||||
 | 
			
		||||
	on = (struct ospf6_neighbor *)XMALLOC(MTYPE_OSPF6_NEIGHBOR,
 | 
			
		||||
					      sizeof(struct ospf6_neighbor));
 | 
			
		||||
	if (on == NULL) {
 | 
			
		||||
		zlog_warn("neighbor: malloc failed");
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memset(on, 0, sizeof(struct ospf6_neighbor));
 | 
			
		||||
	inet_ntop(AF_INET, &router_id, buf, sizeof(buf));
 | 
			
		||||
 | 
			
		||||
@ -1012,16 +1012,10 @@ struct ospf6_lsa *ospf6_create_single_router_lsa(struct ospf6_area *area,
 | 
			
		||||
 | 
			
		||||
	/* Allocate memory for this LSA */
 | 
			
		||||
	new_header = XMALLOC(MTYPE_OSPF6_LSA_HEADER, total_lsa_length);
 | 
			
		||||
	if (!new_header)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	/* LSA information structure */
 | 
			
		||||
	lsa = (struct ospf6_lsa *)XCALLOC(MTYPE_OSPF6_LSA,
 | 
			
		||||
					  sizeof(struct ospf6_lsa));
 | 
			
		||||
	if (!lsa) {
 | 
			
		||||
		free(new_header);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	lsa->header = (struct ospf6_lsa_header *)new_header;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -570,10 +570,7 @@ static void ospf_apiclient_handle_lsa_update(struct ospf_apiclient *oclient,
 | 
			
		||||
	/* Extract LSA from message */
 | 
			
		||||
	lsalen = ntohs(cn->data.length);
 | 
			
		||||
	lsa = XMALLOC(MTYPE_OSPF_APICLIENT, lsalen);
 | 
			
		||||
	if (!lsa) {
 | 
			
		||||
		fprintf(stderr, "LSA update: Cannot allocate memory for LSA\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memcpy(lsa, &(cn->data), lsalen);
 | 
			
		||||
 | 
			
		||||
	/* Invoke registered update callback function */
 | 
			
		||||
@ -598,10 +595,7 @@ static void ospf_apiclient_handle_lsa_delete(struct ospf_apiclient *oclient,
 | 
			
		||||
	/* Extract LSA from message */
 | 
			
		||||
	lsalen = ntohs(cn->data.length);
 | 
			
		||||
	lsa = XMALLOC(MTYPE_OSPF_APICLIENT, lsalen);
 | 
			
		||||
	if (!lsa) {
 | 
			
		||||
		fprintf(stderr, "LSA delete: Cannot allocate memory for LSA\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memcpy(lsa, &(cn->data), lsalen);
 | 
			
		||||
 | 
			
		||||
	/* Invoke registered update callback function */
 | 
			
		||||
 | 
			
		||||
@ -1176,13 +1176,11 @@ int ospf_apiserver_handle_register_event(struct ospf_apiserver *apiserv,
 | 
			
		||||
 | 
			
		||||
	apiserv->filter =
 | 
			
		||||
		XMALLOC(MTYPE_OSPF_APISERVER_MSGFILTER, ntohs(msg->hdr.msglen));
 | 
			
		||||
	if (apiserv->filter) {
 | 
			
		||||
 | 
			
		||||
	/* copy it over. */
 | 
			
		||||
	memcpy(apiserv->filter, &rmsg->filter, ntohs(msg->hdr.msglen));
 | 
			
		||||
	rc = OSPF_API_OK;
 | 
			
		||||
	} else {
 | 
			
		||||
		rc = OSPF_API_NOMEMORY;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Send a reply back to client with return code */
 | 
			
		||||
	rc = ospf_apiserver_send_reply(apiserv, seqnum, rc);
 | 
			
		||||
	return rc;
 | 
			
		||||
 | 
			
		||||
@ -545,11 +545,6 @@ static int ospf_ext_link_new_if(struct interface *ifp)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	new = XCALLOC(MTYPE_OSPF_EXT_PARAMS, sizeof(struct ext_itf));
 | 
			
		||||
	if (new == NULL) {
 | 
			
		||||
		zlog_warn("EXT (%s): XCALLOC: %s", __func__,
 | 
			
		||||
			  safe_strerror(errno));
 | 
			
		||||
		return rc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* initialize new information and link back the interface */
 | 
			
		||||
	new->ifp = ifp;
 | 
			
		||||
 | 
			
		||||
@ -523,9 +523,6 @@ static struct ospf_if_params *ospf_new_if_params(void)
 | 
			
		||||
 | 
			
		||||
	oip = XCALLOC(MTYPE_OSPF_IF_PARAMS, sizeof(struct ospf_if_params));
 | 
			
		||||
 | 
			
		||||
	if (!oip)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	UNSET_IF_PARAM(oip, output_cost_cmd);
 | 
			
		||||
	UNSET_IF_PARAM(oip, transmit_delay);
 | 
			
		||||
	UNSET_IF_PARAM(oip, retransmit_interval);
 | 
			
		||||
 | 
			
		||||
@ -2912,9 +2912,7 @@ void ospf_lsa_maxage(struct ospf *ospf, struct ospf_lsa *lsa)
 | 
			
		||||
	lsa_prefix.prefixlen = sizeof(lsa_prefix.u.ptr) * CHAR_BIT;
 | 
			
		||||
	lsa_prefix.u.ptr = (uintptr_t)lsa;
 | 
			
		||||
 | 
			
		||||
	if ((rn = route_node_get(ospf->maxage_lsa,
 | 
			
		||||
				 (struct prefix *)&lsa_prefix))
 | 
			
		||||
	    != NULL) {
 | 
			
		||||
	rn = route_node_get(ospf->maxage_lsa, (struct prefix *)&lsa_prefix);
 | 
			
		||||
	if (rn->info != NULL) {
 | 
			
		||||
		if (IS_DEBUG_OSPF(lsa, LSA_FLOODING))
 | 
			
		||||
			zlog_debug(
 | 
			
		||||
@ -2926,11 +2924,6 @@ void ospf_lsa_maxage(struct ospf *ospf, struct ospf_lsa *lsa)
 | 
			
		||||
		rn->info = ospf_lsa_lock(lsa);
 | 
			
		||||
		SET_FLAG(lsa->flags, OSPF_LSA_IN_MAXAGE);
 | 
			
		||||
	}
 | 
			
		||||
	} else {
 | 
			
		||||
		zlog_err("Unable to allocate memory for maxage lsa %s\n",
 | 
			
		||||
			 dump_lsa_key(lsa));
 | 
			
		||||
		assert(0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (IS_DEBUG_OSPF(lsa, LSA_FLOODING))
 | 
			
		||||
		zlog_debug("LSA[%s]: MaxAge LSA remover scheduled.",
 | 
			
		||||
 | 
			
		||||
@ -399,13 +399,8 @@ int ospf_register_opaque_functab(
 | 
			
		||||
			}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((new = XCALLOC(MTYPE_OSPF_OPAQUE_FUNCTAB,
 | 
			
		||||
			   sizeof(struct ospf_opaque_functab)))
 | 
			
		||||
	    == NULL) {
 | 
			
		||||
		zlog_warn("ospf_register_opaque_functab: XMALLOC: %s",
 | 
			
		||||
			  safe_strerror(errno));
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
	new = XCALLOC(MTYPE_OSPF_OPAQUE_FUNCTAB,
 | 
			
		||||
		      sizeof(struct ospf_opaque_functab));
 | 
			
		||||
 | 
			
		||||
	new->opaque_type = opaque_type;
 | 
			
		||||
	new->oipt = NULL;
 | 
			
		||||
@ -554,13 +549,8 @@ register_opaque_info_per_type(struct ospf_opaque_functab *functab,
 | 
			
		||||
	struct ospf *top;
 | 
			
		||||
	struct opaque_info_per_type *oipt;
 | 
			
		||||
 | 
			
		||||
	if ((oipt = XCALLOC(MTYPE_OPAQUE_INFO_PER_TYPE,
 | 
			
		||||
			    sizeof(struct opaque_info_per_type)))
 | 
			
		||||
	    == NULL) {
 | 
			
		||||
		zlog_warn("register_opaque_info_per_type: XMALLOC: %s",
 | 
			
		||||
			  safe_strerror(errno));
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
	oipt = XCALLOC(MTYPE_OPAQUE_INFO_PER_TYPE,
 | 
			
		||||
		       sizeof(struct opaque_info_per_type));
 | 
			
		||||
 | 
			
		||||
	switch (new->data->type) {
 | 
			
		||||
	case OSPF_OPAQUE_LINK_LSA:
 | 
			
		||||
@ -711,13 +701,9 @@ register_opaque_info_per_id(struct opaque_info_per_type *oipt,
 | 
			
		||||
{
 | 
			
		||||
	struct opaque_info_per_id *oipi;
 | 
			
		||||
 | 
			
		||||
	if ((oipi = XCALLOC(MTYPE_OPAQUE_INFO_PER_ID,
 | 
			
		||||
			    sizeof(struct opaque_info_per_id)))
 | 
			
		||||
	    == NULL) {
 | 
			
		||||
		zlog_warn("register_opaque_info_per_id: XMALLOC: %s",
 | 
			
		||||
			  safe_strerror(errno));
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
	oipi = XCALLOC(MTYPE_OPAQUE_INFO_PER_ID,
 | 
			
		||||
		       sizeof(struct opaque_info_per_id));
 | 
			
		||||
 | 
			
		||||
	oipi->opaque_id = GET_OPAQUE_ID(ntohl(new->data->id.s_addr));
 | 
			
		||||
	oipi->t_opaque_lsa_self = NULL;
 | 
			
		||||
	oipi->opqctl_type = oipt;
 | 
			
		||||
@ -725,7 +711,6 @@ register_opaque_info_per_id(struct opaque_info_per_type *oipt,
 | 
			
		||||
 | 
			
		||||
	listnode_add(oipt->id_list, oipi);
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
	return oipi;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -154,9 +154,6 @@ static struct vertex_parent *vertex_parent_new(struct vertex *v, int backlink,
 | 
			
		||||
 | 
			
		||||
	new = XMALLOC(MTYPE_OSPF_VERTEX_PARENT, sizeof(struct vertex_parent));
 | 
			
		||||
 | 
			
		||||
	if (new == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	new->parent = v;
 | 
			
		||||
	new->backlink = backlink;
 | 
			
		||||
	new->nexthop = hop;
 | 
			
		||||
 | 
			
		||||
@ -128,12 +128,6 @@ static struct sr_node *sr_node_new(struct in_addr *rid)
 | 
			
		||||
	/* Allocate Segment Routing node memory */
 | 
			
		||||
	new = XCALLOC(MTYPE_OSPF_SR_PARAMS, sizeof(struct sr_node));
 | 
			
		||||
 | 
			
		||||
	/* Sanity Check */
 | 
			
		||||
	if (new == NULL) {
 | 
			
		||||
		zlog_err("SR (%s): Abort! can't create new SR node", __func__);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Default Algorithm, SRGB and MSD */
 | 
			
		||||
	for (int i = 0; i < ALGORITHM_COUNT; i++)
 | 
			
		||||
		new->algo[i] = SR_ALGORITHM_UNSET;
 | 
			
		||||
@ -735,9 +729,6 @@ static struct sr_link *get_ext_link_sid(struct tlv_header *tlvh)
 | 
			
		||||
 | 
			
		||||
	srl = XCALLOC(MTYPE_OSPF_SR_PARAMS, sizeof(struct sr_link));
 | 
			
		||||
 | 
			
		||||
	if (srl == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	/* Initialize TLV browsing */
 | 
			
		||||
	length = ntohs(tlvh->length) - EXT_TLV_LINK_SIZE;
 | 
			
		||||
	sub_tlvh = (struct tlv_header *)((char *)(tlvh) + TLV_HDR_SIZE
 | 
			
		||||
@ -820,9 +811,6 @@ static struct sr_prefix *get_ext_prefix_sid(struct tlv_header *tlvh)
 | 
			
		||||
 | 
			
		||||
	srp = XCALLOC(MTYPE_OSPF_SR_PARAMS, sizeof(struct sr_prefix));
 | 
			
		||||
 | 
			
		||||
	if (srp == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	/* Initialize TLV browsing */
 | 
			
		||||
	length = ntohs(tlvh->length) - EXT_TLV_PREFIX_SIZE;
 | 
			
		||||
	sub_tlvh = (struct tlv_header *)((char *)(tlvh) + TLV_HDR_SIZE
 | 
			
		||||
 | 
			
		||||
@ -857,11 +857,6 @@ static int ospf_mpls_te_new_if(struct interface *ifp)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	new = XCALLOC(MTYPE_OSPF_MPLS_TE, sizeof(struct mpls_te_link));
 | 
			
		||||
	if (new == NULL) {
 | 
			
		||||
		zlog_warn("ospf_mpls_te_new_if: XMALLOC: %s",
 | 
			
		||||
			  safe_strerror(errno));
 | 
			
		||||
		return rc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	new->instance = get_mpls_te_instance_value();
 | 
			
		||||
	new->ifp = ifp;
 | 
			
		||||
 | 
			
		||||
@ -54,12 +54,6 @@ struct pbr_interface *pbr_if_new(struct interface *ifp)
 | 
			
		||||
 | 
			
		||||
	pbr_ifp = XCALLOC(MTYPE_PBR_INTERFACE, sizeof(*pbr_ifp));
 | 
			
		||||
 | 
			
		||||
	if (!pbr_ifp) {
 | 
			
		||||
		zlog_err("%s: PBR XCALLOC(%zu) failure", __PRETTY_FUNCTION__,
 | 
			
		||||
			 sizeof(*pbr_ifp));
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ifp->info = pbr_ifp;
 | 
			
		||||
	return pbr_ifp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,6 @@ void pim_br_set_pmbr(struct prefix_sg *sg, struct in_addr br)
 | 
			
		||||
 | 
			
		||||
	if (!pim_br) {
 | 
			
		||||
		pim_br = XCALLOC(MTYPE_PIM_BR, sizeof(*pim_br));
 | 
			
		||||
 | 
			
		||||
		pim_br->sg = *sg;
 | 
			
		||||
 | 
			
		||||
		listnode_add(pim_br_list, pim_br);
 | 
			
		||||
 | 
			
		||||
@ -5106,11 +5106,6 @@ static int pim_rp_cmd_worker(struct pim_instance *pim, struct vty *vty,
 | 
			
		||||
 | 
			
		||||
	result = pim_rp_new(pim, rp, group, plist);
 | 
			
		||||
 | 
			
		||||
	if (result == PIM_MALLOC_FAIL) {
 | 
			
		||||
		vty_out(vty, "%% Out of memory\n");
 | 
			
		||||
		return CMD_WARNING_CONFIG_FAILED;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (result == PIM_GROUP_BAD_ADDRESS) {
 | 
			
		||||
		vty_out(vty, "%% Bad group address specified: %s\n", group);
 | 
			
		||||
		return CMD_WARNING_CONFIG_FAILED;
 | 
			
		||||
 | 
			
		||||
@ -486,9 +486,6 @@ static struct igmp_source *add_source_by_addr(struct igmp_sock *igmp,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	src = source_new(group, src_addr);
 | 
			
		||||
	if (!src) {
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return src;
 | 
			
		||||
}
 | 
			
		||||
@ -579,10 +576,6 @@ static void isex_excl(struct igmp_group *group, int num_sources,
 | 
			
		||||
			/* E.4: if not found, create source with timer=GMI:
 | 
			
		||||
			 * (A-X-Y) */
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			zassert(!source->t_source_timer); /* timer == 0 */
 | 
			
		||||
			igmp_source_reset_gmi(group->group_igmp_sock, group,
 | 
			
		||||
					      source);
 | 
			
		||||
@ -637,10 +630,6 @@ static void isex_incl(struct igmp_group *group, int num_sources,
 | 
			
		||||
			/* I.4: if not found, create source with timer=0 (B-A)
 | 
			
		||||
			 */
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			zassert(!source->t_source_timer); /* (B-A) timer=0 */
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -720,10 +709,6 @@ static void toin_incl(struct igmp_group *group, int num_sources,
 | 
			
		||||
		} else {
 | 
			
		||||
			/* If not found, create new source */
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* (B)=GMI */
 | 
			
		||||
@ -765,10 +750,6 @@ static void toin_excl(struct igmp_group *group, int num_sources,
 | 
			
		||||
		} else {
 | 
			
		||||
			/* If not found, create new source */
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* (A)=GMI */
 | 
			
		||||
@ -854,10 +835,6 @@ static void toex_incl(struct igmp_group *group, int num_sources,
 | 
			
		||||
			/* If source not found, create source with timer=0:
 | 
			
		||||
			 * (B-A)=0 */
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
			zassert(!source->t_source_timer); /* (B-A) timer=0 */
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -917,10 +894,6 @@ static void toex_excl(struct igmp_group *group, int num_sources,
 | 
			
		||||
			 * (A-X-Y)=Group Timer */
 | 
			
		||||
			long group_timer_msec;
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			zassert(!source->t_source_timer); /* timer == 0 */
 | 
			
		||||
			group_timer_msec = igmp_group_timer_remain_msec(group);
 | 
			
		||||
@ -1431,10 +1404,6 @@ static void block_excl(struct igmp_group *group, int num_sources,
 | 
			
		||||
			 * (A-X-Y)=Group Timer */
 | 
			
		||||
			long group_timer_msec;
 | 
			
		||||
			source = source_new(group, *src_addr);
 | 
			
		||||
			if (!source) {
 | 
			
		||||
				/* ugh, internal malloc failure, skip source */
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			zassert(!source->t_source_timer); /* timer == 0 */
 | 
			
		||||
			group_timer_msec = igmp_group_timer_remain_msec(group);
 | 
			
		||||
 | 
			
		||||
@ -102,19 +102,10 @@ void pim_rp_init(struct pim_instance *pim)
 | 
			
		||||
	struct route_node *rn;
 | 
			
		||||
 | 
			
		||||
	pim->rp_list = list_new();
 | 
			
		||||
	if (!pim->rp_list) {
 | 
			
		||||
		zlog_err("Unable to alloc rp_list");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	pim->rp_list->del = (void (*)(void *))pim_rp_info_free;
 | 
			
		||||
	pim->rp_list->cmp = pim_rp_list_cmp;
 | 
			
		||||
 | 
			
		||||
	pim->rp_table = route_table_init();
 | 
			
		||||
	if (!pim->rp_table) {
 | 
			
		||||
		zlog_err("Unable to alloc rp_table");
 | 
			
		||||
		list_delete_and_null(&pim->rp_list);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
 | 
			
		||||
 | 
			
		||||
@ -133,14 +124,6 @@ void pim_rp_init(struct pim_instance *pim)
 | 
			
		||||
	listnode_add(pim->rp_list, rp_info);
 | 
			
		||||
 | 
			
		||||
	rn = route_node_get(pim->rp_table, &rp_info->group);
 | 
			
		||||
	if (!rn) {
 | 
			
		||||
		zlog_err("Failure to get route node for pim->rp_table");
 | 
			
		||||
		list_delete_and_null(&pim->rp_list);
 | 
			
		||||
		route_table_finish(pim->rp_table);
 | 
			
		||||
		XFREE(MTYPE_PIM_RP, rp_info);
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rn->info = rp_info;
 | 
			
		||||
	if (PIM_DEBUG_TRACE)
 | 
			
		||||
		zlog_debug(
 | 
			
		||||
 | 
			
		||||
@ -117,7 +117,6 @@
 | 
			
		||||
 | 
			
		||||
/* PIM error codes */
 | 
			
		||||
#define PIM_SUCCESS                0
 | 
			
		||||
#define PIM_MALLOC_FAIL           -1
 | 
			
		||||
#define PIM_GROUP_BAD_ADDRESS     -2
 | 
			
		||||
#define PIM_GROUP_OVERLAP         -3
 | 
			
		||||
#define PIM_GROUP_PFXLIST_OVERLAP -4
 | 
			
		||||
 | 
			
		||||
@ -2802,15 +2802,9 @@ DEFUN_NOSH (router_rip,
 | 
			
		||||
       "Enable a routing process\n"
 | 
			
		||||
       "Routing Information Protocol (RIP)\n")
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	/* If rip is not enabled before. */
 | 
			
		||||
	if (!rip) {
 | 
			
		||||
		ret = rip_create();
 | 
			
		||||
		if (ret < 0) {
 | 
			
		||||
			zlog_info("Can't create RIP");
 | 
			
		||||
			return CMD_WARNING_CONFIG_FAILED;
 | 
			
		||||
		}
 | 
			
		||||
		rip_create();
 | 
			
		||||
	}
 | 
			
		||||
	VTY_PUSH_CONTEXT(RIP_NODE, rip);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -100,11 +100,7 @@ calculate_lifc_len: /* must hold privileges to enter here */
 | 
			
		||||
	if (needed > lastneeded || needed < lastneeded / 2) {
 | 
			
		||||
		if (buf != NULL)
 | 
			
		||||
			XFREE(MTYPE_TMP, buf);
 | 
			
		||||
		if ((buf = XMALLOC(MTYPE_TMP, needed)) == NULL) {
 | 
			
		||||
			zlog_warn("interface_list_ioctl: malloc failed");
 | 
			
		||||
			close(sock);
 | 
			
		||||
			return -1;
 | 
			
		||||
		}
 | 
			
		||||
		buf = XMALLOC(MTYPE_TMP, needed);
 | 
			
		||||
	}
 | 
			
		||||
	lastneeded = needed;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -384,8 +384,6 @@ struct label_manager_chunk *assign_label_chunk(uint8_t proto,
 | 
			
		||||
	}
 | 
			
		||||
	/* otherwise create a new one */
 | 
			
		||||
	lmc = XCALLOC(MTYPE_LM_CHUNK, sizeof(struct label_manager_chunk));
 | 
			
		||||
	if (!lmc)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	if (list_isempty(lbl_mgr.lc_list))
 | 
			
		||||
		lmc->start = MPLS_LABEL_UNRESERVED_MIN;
 | 
			
		||||
 | 
			
		||||
@ -550,8 +550,6 @@ static zebra_fec_t *fec_add(struct route_table *table, struct prefix *p,
 | 
			
		||||
 | 
			
		||||
	if (!fec) {
 | 
			
		||||
		fec = XCALLOC(MTYPE_FEC, sizeof(zebra_fec_t));
 | 
			
		||||
		if (!fec)
 | 
			
		||||
			return NULL;
 | 
			
		||||
 | 
			
		||||
		rn->info = fec;
 | 
			
		||||
		fec->rn = rn;
 | 
			
		||||
@ -1181,8 +1179,6 @@ static zebra_nhlfe_t *nhlfe_add(zebra_lsp_t *lsp, enum lsp_types_t lsp_type,
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	nhlfe = XCALLOC(MTYPE_NHLFE, sizeof(zebra_nhlfe_t));
 | 
			
		||||
	if (!nhlfe)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	nhlfe->lsp = lsp;
 | 
			
		||||
	nhlfe->type = lsp_type;
 | 
			
		||||
 | 
			
		||||
@ -1965,7 +1965,6 @@ static struct meta_queue *meta_queue_new(void)
 | 
			
		||||
	unsigned i;
 | 
			
		||||
 | 
			
		||||
	new = XCALLOC(MTYPE_WORK_QUEUE, sizeof(struct meta_queue));
 | 
			
		||||
	assert(new);
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < MQ_SIZE; i++) {
 | 
			
		||||
		new->subq[i] = list_new();
 | 
			
		||||
 | 
			
		||||
@ -1098,9 +1098,6 @@ static void *route_match_address_prefix_len_compile(const char *arg)
 | 
			
		||||
 | 
			
		||||
	prefix_len = XMALLOC(MTYPE_ROUTE_MAP_COMPILED, sizeof(uint32_t));
 | 
			
		||||
 | 
			
		||||
	if (!prefix_len)
 | 
			
		||||
		return prefix_len;
 | 
			
		||||
 | 
			
		||||
	*prefix_len = tmpval;
 | 
			
		||||
	return prefix_len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2985,10 +2985,6 @@ static zebra_vtep_t *zvni_vtep_add(zebra_vni_t *zvni, struct in_addr *vtep_ip)
 | 
			
		||||
	zebra_vtep_t *zvtep;
 | 
			
		||||
 | 
			
		||||
	zvtep = XCALLOC(MTYPE_ZVNI_VTEP, sizeof(zebra_vtep_t));
 | 
			
		||||
	if (!zvtep) {
 | 
			
		||||
		zlog_err("Failed to alloc VTEP entry, VNI %u", zvni->vni);
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	zvtep->vtep_ip = *vtep_ip;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user