Details
-
Feature Request
-
Resolution: Done
-
Major
-
2.8
-
None
-
0
-
0%
Description
With the advent of IPv6 suppport, JGroups needs to be IP version aware, in order to provide checks such as:
- ensuring that JGroups peers are started us using a set of bind and multicast addresses which are of a single IP version
- in the case of IPv6 link-local addresses, checking that link-local scopes are present to eliminate interface ambiguity
Managing many InetAddress and related addresses (such as IpAddress and InetSocketAddress) which are used in many stack layers within a JGroups stack
is difficult. Especially so when a decision (siuch as which IP version to use) depends upon having access to all InetAddresses at one point in time.
One way to achieve this is to delay all InetAddress creation until the init() layer of each protocol, so that initial values for InetAddresses which have been passed in by the user (or not) may be inspected and a decition made. However, decitions made in one iinit() layer need to be communicated to the other layers - this is true in trying to assign a common IP version across all layers.
Another approach is to intercept all InetAddress fields and setter methods during protocol stack creation, and after properties have been processed. This allows us access to the entire stack and its InetAddress variables by way of java.lang.reflect.Field and java.lang.reflect.Method processing.
This is the approach to IP version checking (and other InetAddress related checks) which will be taken for JGroups.
This approach also makes a nice stack creation-time companion to @Property processing (including the processing of dependencies and defaults).