pnoltes commented on code in PR #495:
URL: https://github.com/apache/celix/pull/495#discussion_r1139224606


##########
bundles/remote_services/rsa_spi/include/remote_constants.h:
##########
@@ -36,4 +36,6 @@ static const char * const OSGI_RSA_SERVICE_IMPORTED_CONFIGS = 
"service.imported.
 static const char * const OSGI_RSA_SERVICE_EXPORTED_CONFIGS = 
"service.exported.configs";
 static const char * const OSGI_RSA_SERVICE_LOCATION = "service.location";
 
+static const char * const RSA_DISCOVERY_ZEROCONF_SERVICE_ANNOUNCED_IF_INDEX = 
"RSA_DZC_IF_INDEX";

Review Comment:
   Yeah this is a difficult one. 
   
   For PubSub this is also an issue and for now PubSub only really works - 
together with discovery - using a single network interface.
   
   For the different pubsub implementation the `PSA_IP` and `PSA_INTERFACE` is 
used to configure the PubSub Admins, but not directly the discovery 
implementations.
   
   A option maybe could be to define a config property that is used by both the 
remote service admin implementations (dfi) and discovery (etcd,mdns) which 
configures which interface to use and which IP address for those interfaces.
   
   Something like:
   ```
   //celix_remote_service_constants.h from Celix::rsa_spi
   
   /**
    * Config property to configure network interfaces for remote services.
    * A comma separated list of CIDR notation to configure which network 
interfaces to use for remote services
    * If "" is configured the loopback interface will be used.
    *
    * The subnets are used by the remote service admins to retrieve the remote 
service reachable IP address so 
    * that this can be set in the remote endpoints properties.
   * The subnets are also used by the discovery admins to decide which network 
interfaces to use for announcing
   * the remote endpoints. (NOTE: I am not sure if this really works and if 
not, maybe it is better to extend the 
   * discovery listeners so that they accept a network interface argument. 
Anyhow I think the network interface
   * is not needed in the remote endpoint properties)
    * 
    * Default is "".
    *
    * This is global config used for all remote service admins and discovery 
admins. Specific implementation
    * can opt-in to allow implementation specific overrides of this. Ideally 
this is done in the following scheme:
    *  CELIX_REMOTE_SERVICES_(RSA|DISCOVERY)_<TECH>_SUBNETS
    * e.g. CELIX_REMOTE_SERVICES_DISCOVERY_MDNS_SUBNETS
    */   
   #define CELIX_REMOTE_SERVICES_SUBNETS "CELIX_REMOTE_SERVICES_SUBNETS"
   
   /**
    * Config property to configure which public ip should be used for certain 
network interface names.
    * A comma separated list if "<interface_name>=<PUBLIC IP>" entries.
    *
    * If configured the remote service admins should use this info to decide 
which IP addresses to use
    * for certain network interaces. If entry with the configured interface 
name is not present, the IP of the network interfaces will be used.
    * 
    * Default is ""
    */
   #define CELIX_REMOTE_SERVICES_IFNAME_TO_PUBLIC_IP_MAPPING 
"CELIX_REMOTE_SERVICES_IFNAME_TO_PUBLIC_IP_MAPPING"
   ``` 
   
   Just an idea and I think this needs (quite) some more thoughts/tweaking. 
   
   I am a bit rusty on the Remote Service Admin specification, but I would like 
to look into the spec and see 
   if this issue is already tackled there.  
   But I need some time for this, hopefully somewhere next week.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@celix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to