blob: 0f759dcf48088634d197673f926300e228b7b878 [file] [log] [blame]
Igmpproxy currently doesn't support configurable query interval.
Add configuration option 'queryinterval' to set custom query interval
and also add configuration option 'reportforwarding' to enable/disable
forwarding IGMP membership reports upstream.
Reviewed on https://chromium-review.googlesource.com/2205180
---
diff -Naur --show-c-function a/src/config.c b/src/config.c
--- a/src/config.c 2020-05-15 23:37:48.036277661 -0700
+++ b/src/config.c 2020-05-15 23:33:38.045136599 -0700
@@ -87,6 +87,9 @@ static void initCommonConfig(void) {
// aimwang: default value
commonConfig.defaultInterfaceState = IF_STATE_DISABLED;
commonConfig.rescanVif = 0;
+
+ // Default values for reportForwarding.
+ commonConfig.reportForwarding = 0;
}
/**
@@ -170,6 +173,26 @@ int loadConfig(char *configFile) {
// Read next token...
token = nextConfigToken();
+ continue;
+ }
+ else if(strcmp("queryinterval", token)==0) {
+ // Got a queryinterval token...
+ token = nextConfigToken();
+ my_log(LOG_DEBUG, 0, "Config: Got queryinterval token : %s", token);
+ commonConfig.queryInterval = atoi( token );
+ commonConfig.startupQueryInterval = (commonConfig.queryInterval / 4);
+
+ // Read next token...
+ token = nextConfigToken();
+ continue;
+ }
+ else if(strcmp("reportforwarding", token)==0) {
+ // Got a reportforwarding token...
+ my_log(LOG_DEBUG, 0, "Config: Need to forward membership reports.");
+ commonConfig.reportForwarding = 1;
+
+ // Read next token...
+ token = nextConfigToken();
continue;
} else {
// Unparsable token... Exit...
diff -Naur --show-c-function a/src/igmpproxy.h b/src/igmpproxy.h
--- a/src/igmpproxy.h 2020-05-15 23:38:08.544207561 -0700
+++ b/src/igmpproxy.h 2020-05-15 23:29:40.149962872 -0700
@@ -177,6 +177,8 @@ struct Config {
// Set if not detect new interface for down stream.
unsigned short defaultInterfaceState; // 0: disable, 2: downstream
//~ aimwang added done
+ // Set if need to forward membership reports
+ unsigned short reportForwarding;
};
// Holds the indeces of the upstream IF...
diff -Naur --show-c-function a/src/rttable.c b/src/rttable.c
--- a/src/rttable.c 2020-05-15 23:38:27.012144473 -0700
+++ b/src/rttable.c 2020-05-15 23:36:32.340536868 -0700
@@ -391,8 +391,10 @@ int insertRoute(uint32_t group, int ifx)
// Send Join request upstream
sendJoinLeaveUpstream(croute, 1);
} else {
+ if(conf->reportForwarding) {
// Send Report upstream
sendReportUpstream(group);
+ }
}
logRouteTable("Insert Route");