summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_upstream.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index d02f9154..a4d274ab 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -349,6 +349,7 @@ static struct pim_upstream *pim_upstream_new(struct in_addr source_addr,
struct in_addr group_addr)
{
struct pim_upstream *up;
+ enum pim_rpf_result rpf_result;
up = XMALLOC(MTYPE_PIM_UPSTREAM, sizeof(*up));
if (!up) {
@@ -372,7 +373,11 @@ static struct pim_upstream *pim_upstream_new(struct in_addr source_addr,
up->rpf.source_nexthop.mrib_route_metric = qpim_infinite_assert_metric.route_metric;
up->rpf.rpf_addr.s_addr = PIM_NET_INADDR_ANY;
- pim_rpf_update(up, 0);
+ rpf_result = pim_rpf_update(up, 0);
+ if (rpf_result == PIM_RPF_FAILURE) {
+ XFREE(MTYPE_PIM_UPSTREAM, up);
+ return NULL;
+ }
listnode_add(qpim_upstream_list, up);