pnoltes commented on code in PR #710: URL: https://github.com/apache/celix/pull/710#discussion_r1453873365
########## bundles/remote_services/remote_service_admin_dfi/src/remote_service_admin_dfi_constants.h: ########## @@ -36,6 +36,15 @@ #define RSA_DFI_CONFIGURATION_TYPE "org.amdatu.remote.admin.http" #define RSA_DFI_ENDPOINT_URL "org.amdatu.remote.admin.http.url" +/** + * @brief RSA Configuration type for zeroconf http, it is synonymous(https://docs.osgi.org/specification/osgi.cmpn/7.0.0/service.remoteservices.html#i1698916) with RSA_DFI_CONFIGURATION_TYPE, they refer to the same endpoint. Review Comment: > Thank you for your reply. > > First, I agree with this solution. But I still have some issues that need to confirm with you. > > > Update the Topology Manager to detect RSA services what support dynamic IP fill-in and in that case create multiple endpoints for a single export registration based on the available network interfaces and an optional network selection configuration. These endpoints are then forwarded to the discovery listener services that support network specific endpoints. The discovery implementation can pick and handle or drop endpoints based on the selected network interface. > > Does this mean that the endpoint descriptions for dynamic IP are generated by Topology Manager when exporting service? Should the network interface used to publish services be specified by Topology Manager or RSA? Good point, this should indeed be the RSA. > > How about dealing with it in two cases: In the first case, if the RSA supports dynamic IP, RSA should bind its services to ANY address (0.0.0.0). Then the Topology Manager should specify which network interfaces the services are published to, and restrict access to the corresponding services from other network interfaces (e.g.: `iptables -A INPUT -i eth0 -p tcp -- dport 80 -j DROP`). > > In the second case, if RSA does not support dynamic IP, RSA binds its network services to a specific IP, and its exported endpoint should specify which network interface the service is published to. > > In the above case, we will define a generic endpoint property `rsa.ifnames` (Type string list). The property is used to specify which network interfaces the service is published to. That does indeed sound better. One of my cancern was to prevent too much repeated boiler plaiting between the RSA bundles, but indeed the RSA is binding on network interface and hence it should decide and informs whether is uses a single or multiple interfaces. > > > RSA Export Registration dynamic replaceable property > > > > * Property name: rsa.ip.address > > * Type string > > When using dynamic IP, perhaps multiple IP are obtained, should the `rsa.ip.address` type be a string list? List of string, but this is not yet supported. I am busy with a branch that updates properties for (among others) list of strings: https://github.com/apache/celix/tree/feature/674-improve-properties I will make a ticket for yet another improvement on remote service and let it depend on #674 For this PR this remark can now be ignored. -- 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