summaryrefslogtreecommitdiffstats
path: root/pimd/pim_sock.c
diff options
context:
space:
mode:
authorEverton Marques <everton.marques@gmail.com>2009-09-30 17:10:11 -0300
committerDavid Lamparter <equinox@opensourcerouting.org>2015-02-04 06:07:51 +0100
commit40765fe45f39767ad545ca693fb5985fa90ce4ca (patch)
tree8a21efb5483af7531c396e1cd26c8983d4170e34 /pimd/pim_sock.c
parent465185300b26042e1813d53f179616a17154d37a (diff)
downloadquagga-40765fe45f39767ad545ca693fb5985fa90ce4ca.tar.bz2
quagga-40765fe45f39767ad545ca693fb5985fa90ce4ca.tar.xz
[pim] Command line tool to test IGMPv3 join.
Diffstat (limited to 'pimd/pim_sock.c')
-rw-r--r--pimd/pim_sock.c30
1 files changed, 2 insertions, 28 deletions
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index 00fc8eda..c908e8b8 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 @@ int pim_socket_join_source(int fd, int ifindex,
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];