Index: net/igmpproxy/Makefile =================================================================== --- net/igmpproxy/Makefile +++ net/igmpproxy/Makefile @@ -2,19 +2,28 @@ # $FreeBSD$ PORTNAME= igmpproxy -PORTVERSION= 0.1 -PORTREVISION= 2 +DISTVERSION= 0.2 PORTEPOCH= 1 CATEGORIES= net -MASTER_SITES= SF -MAINTAINER= melifaro@ipfw.ru +MAINTAINER= franco@opnsense.org COMMENT= Multicast forwarding IGMP proxy -HOMEPAGE= http://igmpproxy.sourceforge.net/ +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING +USE_GITHUB= yes +GH_ACCOUNT= pali + +USES= autoreconf USE_RC_SUBR= igmpproxy -USES= gmake GNU_CONFIGURE= yes +EXTRA_PATCHES+= ${FILESDIR}/0001-Revert-Try-to-fix-problems-with-strict-aliasing.patch:-p1 +EXTRA_PATCHES+= ${FILESDIR}/0002-Revert-Include-config.h-before-any-other-files-to-ma.patch:-p1 + +post-install: + ${INSTALL_DATA} ${WRKSRC}/igmpproxy.conf \ + ${STAGEDIR}${PREFIX}/etc/igmpproxy.conf.sample + .include Index: net/igmpproxy/distinfo =================================================================== --- net/igmpproxy/distinfo +++ net/igmpproxy/distinfo @@ -1,2 +1,3 @@ -SHA256 (igmpproxy-0.1.tar.gz) = ee18ff3d8c3ae3a29dccb7e5eedf332337330020168bd95a11cece8d7d7ee6ae -SIZE (igmpproxy-0.1.tar.gz) = 140159 +TIMESTAMP = 1513975936 +SHA256 (pali-igmpproxy-0.2_GH0.tar.gz) = 48fdaaa698c2ebe1c674b9ba4f9cb1369453bc97295434b608c9d5dab18c9293 +SIZE (pali-igmpproxy-0.2_GH0.tar.gz) = 41732 Index: net/igmpproxy/files/0001-Revert-Try-to-fix-problems-with-strict-aliasing.patch =================================================================== --- /dev/null +++ net/igmpproxy/files/0001-Revert-Try-to-fix-problems-with-strict-aliasing.patch @@ -0,0 +1,84 @@ +This reverts commit c371602f5f499a29d1fb1c43a8d12f21ff56296b. +--- + src/ifvc.c | 23 ++++++++++------------- + 1 file changed, 10 insertions(+), 13 deletions(-) + +diff --git a/src/ifvc.c b/src/ifvc.c +index 3a7476d..2d487ed 100644 +--- a/src/ifvc.c ++++ b/src/ifvc.c +@@ -34,13 +34,6 @@ + + #include "igmpproxy.h" + +-/* We need a temporary copy to not break strict aliasing rules */ +-static inline uint32_t s_addr_from_sockaddr(const struct sockaddr *addr) { +- struct sockaddr_in addr_in; +- memcpy(&addr_in, addr, sizeof(addr_in)); +- return addr_in.sin_addr.s_addr; +-} +- + struct IfDesc IfDescVc[ MAX_IF ], *IfDescEp = IfDescVc; + + /* aimwang: add for detect interface and rebuild IfVc record */ +@@ -112,15 +105,17 @@ void rebuildIfVc () { + } + + // Get the interface adress... +- Dp->InAdr.s_addr = s_addr_from_sockaddr(&IfPt->ifr_addr); ++ Dp->InAdr = ((struct sockaddr_in *)&IfPt->ifr_addr)->sin_addr; + addr = Dp->InAdr.s_addr; + + memcpy( IfReq.ifr_name, Dp->Name, sizeof( IfReq.ifr_name ) ); ++ IfReq.ifr_addr.sa_family = AF_INET; ++ ((struct sockaddr_in *)&IfReq.ifr_addr)->sin_addr.s_addr = addr; + + // Get the subnet mask... + if (ioctl(Sock, SIOCGIFNETMASK, &IfReq ) < 0) + my_log(LOG_ERR, errno, "ioctl SIOCGIFNETMASK for %s", IfReq.ifr_name); +- mask = s_addr_from_sockaddr(&IfReq.ifr_netmask); ++ mask = ((struct sockaddr_in *)&IfReq.ifr_addr)->sin_addr.s_addr; + subnet = addr & mask; + + if ( ioctl( Sock, SIOCGIFFLAGS, &IfReq ) < 0 ) +@@ -131,7 +126,7 @@ void rebuildIfVc () { + { + if ( ioctl( Sock, SIOCGIFDSTADDR, &IfReq ) < 0 ) + my_log(LOG_ERR, errno, "ioctl SIOCGIFDSTADDR for %s", IfReq.ifr_name); +- addr = s_addr_from_sockaddr(&IfReq.ifr_dstaddr); ++ addr = ((struct sockaddr_in *)&IfReq.ifr_dstaddr)->sin_addr.s_addr; + subnet = addr & mask; + } + +@@ -263,15 +258,17 @@ void buildIfVc(void) { + } + + // Get the interface adress... +- IfDescEp->InAdr.s_addr = s_addr_from_sockaddr(&IfPt->ifr_addr); ++ IfDescEp->InAdr = ((struct sockaddr_in *)&IfPt->ifr_addr)->sin_addr; + addr = IfDescEp->InAdr.s_addr; + + memcpy( IfReq.ifr_name, IfDescEp->Name, sizeof( IfReq.ifr_name ) ); ++ IfReq.ifr_addr.sa_family = AF_INET; ++ ((struct sockaddr_in *)&IfReq.ifr_addr)->sin_addr.s_addr = addr; + + // Get the subnet mask... + if (ioctl(Sock, SIOCGIFNETMASK, &IfReq ) < 0) + my_log(LOG_ERR, errno, "ioctl SIOCGIFNETMASK for %s", IfReq.ifr_name); +- mask = s_addr_from_sockaddr(&IfReq.ifr_netmask); ++ mask = ((struct sockaddr_in *)&IfReq.ifr_addr)->sin_addr.s_addr; + subnet = addr & mask; + + /* get if flags +@@ -293,7 +290,7 @@ void buildIfVc(void) { + { + if ( ioctl( Sock, SIOCGIFDSTADDR, &IfReq ) < 0 ) + my_log(LOG_ERR, errno, "ioctl SIOCGIFDSTADDR for %s", IfReq.ifr_name); +- addr = s_addr_from_sockaddr(&IfReq.ifr_dstaddr); ++ addr = ((struct sockaddr_in *)&IfReq.ifr_dstaddr)->sin_addr.s_addr; + subnet = addr & mask; + } + +-- +2.15.1 + Index: net/igmpproxy/files/0002-Revert-Include-config.h-before-any-other-files-to-ma.patch =================================================================== --- /dev/null +++ net/igmpproxy/files/0002-Revert-Include-config.h-before-any-other-files-to-ma.patch @@ -0,0 +1,32 @@ +This reverts commit 7fcb7900b757b64cf58e6b2d1d473de289945e8d. +--- + src/igmpproxy.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/igmpproxy.h b/src/igmpproxy.h +index ad1063b..6980e35 100644 +--- a/src/igmpproxy.h ++++ b/src/igmpproxy.h +@@ -35,9 +35,6 @@ + * igmpproxy.h - Header file for common includes. + */ + +-#include "config.h" +-#include "os.h" +- + #include + #include + #include +@@ -60,6 +57,9 @@ + #include + #include + ++#include "os.h" ++#include "config.h" ++ + /* + * Limit on length of route data + */ +-- +2.15.1 + Index: net/igmpproxy/files/patch-Makefile.in =================================================================== --- net/igmpproxy/files/patch-Makefile.in +++ /dev/null @@ -1,14 +0,0 @@ ---- Makefile.in.orig 2009-10-05 18:19:42 UTC -+++ Makefile.in -@@ -284,7 +284,10 @@ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ -- $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ -+ if [ ! -f "$(DESTDIR)$(sysconfdir)/$$files" ]; then \ -+ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ -+ fi; \ -+ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)/$$files.sample" || exit $$?; \ - done - - uninstall-dist_sysconfDATA: Index: net/igmpproxy/files/patch-src__os-freebsd.h =================================================================== --- net/igmpproxy/files/patch-src__os-freebsd.h +++ /dev/null @@ -1,23 +0,0 @@ ---- src/os-freebsd.h.orig 2009-10-06 02:07:06.000000000 +0800 -+++ src/os-freebsd.h 2016-01-20 15:43:54.364740000 +0800 -@@ -14,10 +14,20 @@ - - static inline u_short ip_data_len(const struct ip *ip) - { -+#if __FreeBSD_version >= 1100030 -+ return ntohs(ip->ip_len) - (ip->ip_hl << 2); -+#elif __FreeBSD_version >= 900044 -+ return ip->ip_len - (ip->ip_hl << 2); -+#else - return ip->ip_len; -+#endif - } - - static inline void ip_set_len(struct ip *ip, u_short len) - { -+#if __FreeBSD_version >= 1100030 -+ ip->ip_len = htons(len); -+#else - ip->ip_len = len; -+#endif - } Index: net/igmpproxy/files/patch-src_igmpproxy.c =================================================================== --- /dev/null +++ net/igmpproxy/files/patch-src_igmpproxy.c @@ -0,0 +1,14 @@ +--- src/igmpproxy.c.orig 2017-12-22 20:49:54 UTC ++++ src/igmpproxy.c +@@ -37,11 +37,6 @@ + * February 2005 - Johnny Egeland + */ + +-/* getopt() and clock_getime() */ +-#ifndef _POSIX_C_SOURCE +-#define _POSIX_C_SOURCE 200112L +-#endif +- + #include "igmpproxy.h" + + static const char Usage[] =