Fixed bug on building RTE groups with no endpoint
When building a route table entry (rte) with several groups, a given
group can be added contiguously to the rte even if it has no endpoint.
Endpoints that reference to any of "our" local "address:port" are not
added to the rte. Thus, in some cases, groups that only reference to
local endpoints (nil) are added contiguously to the rte, causing the
round-robin group selection mechanism to stop sending messages to the
next groups after finding a nil-one.
This might happen, for instance, when a multicast routing rule is required
in which only one endpoint is added to each group, and one of these groups
references to one of the local "address:port" being used. In this case, only
the endpoints in the groups prior the nil-one will receive a copy of the
multicast message.
This change fixes this issue by adding contiguously only groups that have at
least one endpoint that does not refer to a local "address:port".
Some extra bytes are wasted in the rte by referencing to a group that does not
have an endpoint, but this is minor compared to spending time on recreating a
new rte and adding only the groups that do have endpoints. Those nil groups
don't cause any harm since the function that does the round-robin selection
assumes that the groups are contiguous and stops selecting endpoints when a
nil group is found.
Issue-ID: RIC-695
Signed-off-by: Alexandre Huff <alexandrehuff@gmail.com>
Change-Id: I13c7576ce0de82b7814c81c1a0da24172371a897