diff --git a/pimd/pim_igmp.h b/pimd/pim_igmp.h
index d45f223..f8a31cd 100644
--- a/pimd/pim_igmp.h
+++ b/pimd/pim_igmp.h
@@ -173,4 +173,7 @@
 void igmp_group_timer_on(struct igmp_group *group,
 			 long interval_msec, const char *ifname);
 
+struct igmp_source *
+source_new (struct igmp_group *group,
+	    struct in_addr src_addr);
 #endif /* PIM_IGMP_H */
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 3657f2f..1a2e936 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -477,9 +477,9 @@
   return 0;
 }
 
-static struct igmp_source *source_new(struct igmp_group *group,
-				      struct in_addr src_addr,
-				      const char *ifname)
+struct igmp_source *
+source_new (struct igmp_group *group,
+	    struct in_addr src_addr)
 {
   struct igmp_source *src;
 
@@ -491,7 +491,7 @@
     zlog_debug("Creating new IGMP source %s for group %s on socket %d interface %s",
 	       source_str, group_str,
 	       group->group_igmp_sock->fd,
-	       ifname);
+	       group->group_igmp_sock->interface->name);
   }
 
   src = XMALLOC(MTYPE_PIM_IGMP_GROUP_SOURCE, sizeof(*src));
@@ -501,13 +501,13 @@
     return 0; /* error, not found, could not create */
   }
   
-  src->t_source_timer                = 0;
+  src->t_source_timer                = NULL;
   src->source_group                  = group; /* back pointer */
   src->source_addr                   = src_addr;
   src->source_creation               = pim_time_monotonic_sec();
   src->source_flags                  = 0;
   src->source_query_retransmit_count = 0;
-  src->source_channel_oil            = 0;
+  src->source_channel_oil            = NULL;
 
   listnode_add(group->group_source_list, src);
 
@@ -521,8 +521,7 @@
 
 static struct igmp_source *add_source_by_addr(struct igmp_sock *igmp,
 					      struct igmp_group *group,
-					      struct in_addr src_addr,
-					      const char *ifname)
+					      struct in_addr src_addr)
 {
   struct igmp_source *src;
 
@@ -531,7 +530,7 @@
     return src;
   }
 
-  src = source_new(group, src_addr, ifname);
+  src = source_new(group, src_addr);
   if (!src) {
     return 0;
   }
@@ -560,7 +559,7 @@
 
     src_addr = sources + i;
 
-    source = add_source_by_addr(igmp, group, *src_addr,	ifp->name);
+    source = add_source_by_addr(igmp, group, *src_addr);
     if (!source) {
       continue;
     }
@@ -616,8 +615,7 @@
     }
     else {
       /* E.4: if not found, create source with timer=GMI: (A-X-Y) */
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -659,8 +657,7 @@
     }
     else {
       /* I.4: if not found, create source with timer=0 (B-A) */
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -737,8 +734,7 @@
     }
     else {
       /* If not found, create new source */
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -783,8 +779,7 @@
     }
     else {
       /* If not found, create new source */
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -862,8 +857,7 @@
     }
     else {
       /* If source not found, create source with timer=0: (B-A)=0 */
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -916,8 +910,7 @@
     else {
       /* if not found, create source with Group Timer: (A-X-Y)=Group Timer */
       long group_timer_msec;
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
@@ -1421,8 +1414,7 @@
     if (!source) {
       /* 3: if not found, create source with Group Timer: (A-X-Y)=Group Timer */
       long group_timer_msec;
-      source = source_new(group, *src_addr,
-			  group->group_igmp_sock->interface->name);
+      source = source_new(group, *src_addr);
       if (!source) {
 	/* ugh, internal malloc failure, skip source */
 	continue;
