54 lines
1.4 KiB
Text
54 lines
1.4 KiB
Text
Index: src/igmpproxy.c
|
|
--- src/igmpproxy.c.orig
|
|
+++ src/igmpproxy.c
|
|
@@ -37,13 +37,10 @@
|
|
* February 2005 - Johnny Egeland
|
|
*/
|
|
|
|
-/* getopt() and clock_getime() */
|
|
-#ifndef _POSIX_C_SOURCE
|
|
-#define _POSIX_C_SOURCE 200112L
|
|
-#endif
|
|
-
|
|
#include "igmpproxy.h"
|
|
|
|
+#include <sys/sysctl.h>
|
|
+
|
|
static const char Usage[] =
|
|
"Usage: igmpproxy [-h] [-n] [-d] [-v [-v]] <configfile>\n"
|
|
"\n"
|
|
@@ -126,6 +123,25 @@ int main( int ArgCn, char *ArgVc[] ) {
|
|
|
|
openlog("igmpproxy", LOG_PID, LOG_USER);
|
|
|
|
+ {
|
|
+ int ipmforwarding = 0;
|
|
+ int mib[4];
|
|
+ size_t len;
|
|
+
|
|
+ /* multicast IP forwarding must be enabled */
|
|
+ mib[0] = CTL_NET;
|
|
+ mib[1] = PF_INET;
|
|
+ mib[2] = IPPROTO_IP;
|
|
+ mib[3] = IPCTL_MFORWARDING;
|
|
+ len = sizeof(ipmforwarding);
|
|
+ if (sysctl(mib, 4, &ipmforwarding, &len, NULL, 0) == -1)
|
|
+ my_log(LOG_ERR, 0, "sysctl");
|
|
+
|
|
+ if (!ipmforwarding)
|
|
+ my_log(LOG_ERR, 0, "multicast IP forwarding not enabled");
|
|
+ }
|
|
+
|
|
+
|
|
// Write debug notice with file path...
|
|
my_log(LOG_DEBUG, 0, "Searching for config file at '%s'" , configFilePath);
|
|
|
|
@@ -238,6 +254,8 @@ int igmpProxyInit(void) {
|
|
}
|
|
|
|
for ( Ix = 0; (Dp = getIfByIx(Ix)); Ix++ ) {
|
|
+ if (config_getinterface(Dp->Name) == NULL)
|
|
+ continue;
|
|
|
|
if ( Dp->InAdr.s_addr && ! (Dp->Flags & IFF_LOOPBACK) ) {
|
|
if(Dp->state == IF_STATE_UPSTREAM) {
|