[pim] Command line tool to test IGMPv3 join.
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index 00fc8ed..c908e8b 100644
--- a/pimd/pim_sock.c
+++ b/pimd/pim_sock.c
@@ -38,20 +38,11 @@
#include "pimd.h"
#include "pim_sock.h"
#include "pim_str.h"
+#include "pim_igmp_join.h"
/* GLOBAL VARS */
extern struct zebra_privs_t pimd_privs;
-#ifndef MCAST_JOIN_SOURCE_GROUP
-#define MCAST_JOIN_SOURCE_GROUP 46
-struct group_source_req
-{
- uint32_t gsr_interface;
- struct sockaddr_storage gsr_group;
- struct sockaddr_storage gsr_source;
-};
-#endif
-
int pim_socket_raw(int protocol)
{
int fd;
@@ -242,24 +233,7 @@
struct in_addr source_addr,
const char *ifname)
{
- struct group_source_req req;
- struct sockaddr_in *group_sa = (struct sockaddr_in *) &req.gsr_group;
- struct sockaddr_in *source_sa = (struct sockaddr_in *) &req.gsr_source;
-
- memset(group_sa, 0, sizeof(*group_sa));
- group_sa->sin_family = AF_INET;
- group_sa->sin_addr = group_addr;
- group_sa->sin_port = htons(0);
-
- memset(source_sa, 0, sizeof(*source_sa));
- source_sa->sin_family = AF_INET;
- source_sa->sin_addr = source_addr;
- source_sa->sin_port = htons(0);
-
- req.gsr_interface = ifindex;
-
- if (setsockopt(fd, SOL_IP, MCAST_JOIN_SOURCE_GROUP,
- &req, sizeof(req))) {
+ if (pim_igmp_join_source(fd, ifindex, group_addr, source_addr)) {
int e = errno;
char group_str[100];
char source_str[100];