Hi Guillaume, >>> struct emulator_network_provision_driver{ >>> char *name; >>> (void)(*get_settings)(struct emulator_network **out_en); >> You will probably need to make this async, and allow cancellation, since >> there can be multiple emulators requesting private networks >> concurrently. This probably means you need to return a unique >> identifier as well. >> > > Concerning asynchronism and cancellation, > I don't see the use case here, do you mean: > - on a device with multiple modems, we have one DUN emulator per modem > - 2 clients request DUN data call on this device, data call will be > redirected to each modem by ConnMan. > - oFono will ask for 2 private network settings, however ConnMan You can have several modems in the system with DUN connections. You might have several DUN connection transports active, e.g. USB & BT, or you might simply have several clients on the same transport. > can't handle this case, so we should > avoid this case from oFono by cancelling the 1 of the request. > Is ConnMan only handing out 1 IP per application? If so that is not enough for oFono... > how should we priotirize it? > Could that be a concrete use case? > >>> (void)(*release)(void); >> And you need to take the unique id as input here. > > I can store the private_network_settings into ofono_emulator. Then I > pass it as input of the release function. > Won't work as you might need to cancel a request that is still pending. Regards, -Denis