######################################################################## # brintOS wasm32-hwjs: the configuration igmpproxy reads at startup, and # the subject of `igmpproxy -d -v -v /etc/igmpproxy.conf'. # # UPSTREAM SHIPS A FILE WITH NO `whitelist' IN IT, WHICH IS WHY THIS PORT # BUNDLES ANOTHER. igmpproxy's own igmpproxy.conf is installed by # dist_sysconf_DATA and is a worked example over eth0/eth1/eth2 carrying # quickleave, two altnets and nothing else. It parses -- unlike radvd's, # it is not a file the daemon rejects -- but the criterion this port was # taken on names the WHITELIST among the things a verbose run must log as # configured, and on a stock image that half has no subject at all. # # EVERY VALUE HERE IS DELIBERATELY NON-DEFAULT, against the defaults # config.c assigns. A suite that asserts a configured value against the # value igmpproxy would have chosen anyway proves nothing, so each number # below differs from the default named beside it. # # THE INTERFACE NAMES ARE HONEST ABOUT THE MACHINE, AND `lo' IS THE ONLY # ONE THAT EXISTS. configureVifs() matches a phyint block to an interface # only when the interface has an address and is NOT IFF_LOOPBACK # (config.c), so NONE of the three blocks below becomes a VIF on this # image -- `lo' is excluded by the loopback test and eth0/eth1 are not # there. That is the platform and not this file; 88-igmpproxy.test scores # the two apart. Naming `lo' rather than inventing a third ethN keeps the # file truthful about the one interface the image has, and an upstream # block is required for the configuration to be a proxy configuration at # all. ######################################################################## # Send a leave upstream the moment the last downstream member goes away. # commonConfig.fastUpstreamLeave defaults to 0, so this is the token that # makes the common config non-default -- and it must come BEFORE # hashtablesize, which loadConfig() rejects unless quickleave is already # enabled. quickleave # Default is 32 bytes (commonConfig.downstreamHostsHashTableSize). hashtablesize 512 # The upstream interface: where the proxy sends its own membership # reports. ratelimit default 0, threshold default 1 (DEFAULT_RATELIMIT / # DEFAULT_THRESHOLD), so both numbers here are values only this file can # have set. phyint lo upstream ratelimit 128 threshold 32 # Multicast sources outside the upstream subnet that are still legal. # RFC 6598 reserves 100.64.0.0/10 for carrier-grade NAT; 10.132/16 is # inside RFC 1918 space and cannot collide with a real network a # machine of ours is attached to. altnet 10.132.0.0/16 # A downstream interface: where membership reports are received from. # eth0 does not exist on this image -- see the header. phyint eth0 downstream ratelimit 64 threshold 48 # The groups this downstream is allowed to join. 239.0.0.0/8 is the # IPv4 administratively-scoped block (RFC 2365), so this range is # site-local by definition and can never be a real routable group. whitelist 239.7.11.0/24 # The third state a phyint can carry. Present so that all three of # IF_STATE_UPSTREAM, IF_STATE_DOWNSTREAM and IF_STATE_DISABLED are # exercised by the one file. phyint eth1 disabled