]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: relegate pim_igmp_join.c into a header file
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 28 Jul 2016 15:23:48 +0000 (17:23 +0200)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Thu, 28 Jul 2016 11:27:47 +0000 (07:27 -0400)
pim_igmp_join.c only exists to make some portability hacks available to
test_igmpv3_join.  The function only has 1 call site in each pimd and
the test tool, so it's nicely served as a simple static function in a
header file.

This removes a MTYPE related compiler/linker issue from referencing
lib/if.h in a binary that doesn't link libzebra, as test_igmpv3_join is
now fully independent of lib/.

(Fix by Christian Franke: remove stray leftover ifindex_t)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
pimd/Makefile.am
pimd/pim_igmp_join.c [deleted file]
pimd/pim_igmp_join.h
pimd/test_igmpv3_join.c

index 115d73678de942e21fbb57fc54456ed4b7690282..d578c97363719ae8cf289e272ca083732ab7d290 100644 (file)
@@ -43,7 +43,7 @@ AM_CFLAGS = $(WERROR)
 
 noinst_LIBRARIES = libpim.a
 sbin_PROGRAMS = pimd 
-bin_PROGRAMS = test_igmpv3_join
+noinst_PROGRAMS = test_igmpv3_join
 
 libpim_a_SOURCES = \
        pimd.c pim_version.c pim_cmd.c pim_signals.c pim_iface.c \
@@ -52,7 +52,7 @@ libpim_a_SOURCES = \
        pim_oil.c pim_zlookup.c pim_pim.c pim_tlv.c pim_neighbor.c \
        pim_hello.c pim_ifchannel.c pim_join.c pim_assert.c \
        pim_msg.c pim_upstream.c pim_rpf.c pim_macro.c \
-       pim_igmp_join.c pim_ssmpingd.c pim_int.c pim_rp.c \
+       pim_ssmpingd.c pim_int.c pim_rp.c \
        pim_static.c pim_br.c pim_register.c pim_routemap.c
 
 noinst_HEADERS = \
@@ -69,7 +69,7 @@ pimd_SOURCES = \
        pim_main.c $(libpim_a_SOURCES)
 
 test_igmpv3_join_SOURCES = \
-       test_igmpv3_join.c pim_igmp_join.c
+       test_igmpv3_join.c
 
 pimd_LDADD = ../lib/libzebra.la @LIBCAP@
 test_igmpv3_join_LDADD = ../lib/libzebra.la
diff --git a/pimd/pim_igmp_join.c b/pimd/pim_igmp_join.c
deleted file mode 100644 (file)
index 62e32c6..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-  PIM for Quagga
-  Copyright (C) 2008  Everton da Silva Marques
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  General Public License for more details.
-  
-  You should have received a copy of the GNU General Public License
-  along with this program; see the file COPYING; if not, write to the
-  Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-  MA 02110-1301 USA
-  
-  $QuaggaId: $Format:%an, %ai, %h$ $
-*/
-
-#include <zebra.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <string.h>
-
-#include "pim_igmp_join.h"
-
-#ifndef SOL_IP
-#define SOL_IP IPPROTO_IP
-#endif
-
-#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_igmp_join_source(int fd, int ifindex,
-                        struct in_addr group_addr,
-                        struct in_addr source_addr)
-{
-  struct group_source_req req;
-  struct sockaddr_in group;
-  struct sockaddr_in source;
-
-  memset(&group, 0, sizeof(group));
-  group.sin_family = AF_INET;
-  group.sin_addr = group_addr;
-  group.sin_port = htons(0);
-  memcpy(&req.gsr_group, &group, sizeof(struct sockaddr_in));
-
-  memset(&source, 0, sizeof(source));
-  source.sin_family = AF_INET;
-  source.sin_addr = source_addr;
-  source.sin_port = htons(0);
-  memcpy(&req.gsr_source, &source, sizeof(struct sockaddr_in));
-
-  req.gsr_interface = ifindex;
-
-  return setsockopt(fd, SOL_IP, MCAST_JOIN_SOURCE_GROUP,
-                   &req, sizeof(req));
-
-  return 0;
-}
index 1127af120245ac6a4ed48062bc338aba8143dde0..95519ff974c496b6fd113cb60ecacf1f59172833 100644 (file)
 #ifndef PIM_IGMP_JOIN_H
 #define PIM_IGMP_JOIN_H
 
-#include <netinet/in.h>
+/* required headers #include'd by caller */
 
-int pim_igmp_join_source(int fd, int ifindex,
-                        struct in_addr group_addr,
-                        struct in_addr source_addr);
+#ifndef SOL_IP
+#define SOL_IP IPPROTO_IP
+#endif
+
+#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
+
+static int pim_igmp_join_source(int fd, int ifindex,
+                               struct in_addr group_addr,
+                               struct in_addr source_addr)
+{
+  struct group_source_req req;
+  struct sockaddr_in group;
+  struct sockaddr_in source;
+
+  memset(&group, 0, sizeof(group));
+  group.sin_family = AF_INET;
+  group.sin_addr = group_addr;
+  group.sin_port = htons(0);
+  memcpy(&req.gsr_group, &group, sizeof(struct sockaddr_in));
+
+  memset(&source, 0, sizeof(source));
+  source.sin_family = AF_INET;
+  source.sin_addr = source_addr;
+  source.sin_port = htons(0);
+  memcpy(&req.gsr_source, &source, sizeof(struct sockaddr_in));
+
+  req.gsr_interface = ifindex;
+
+  return setsockopt(fd, SOL_IP, MCAST_JOIN_SOURCE_GROUP,
+                   &req, sizeof(req));
+
+  return 0;
+}
 
 #endif /* PIM_IGMP_JOIN_H */
index 6f1e34de886b6f84b564e9b32aa1fd972e55b7fc..fe64fbc005da6ca5ba1262967ea8342df29d55f3 100644 (file)
 #include <net/if.h>
 #include <arpa/inet.h>
 
-#include "thread.h"
 #include "pim_igmp_join.h"
 
-struct thread_master *master;
 const char *prog_name = 0;
 
 static int iface_solve_index(const char *ifname)