On Thu, 2019-06-13 at 14:17 +0600, work vlpl via networkmanager-list wrote:
Hello, I want to contribute to NetworkManger but don't know where to start, so I am looking for advise how I can start it.
Hi, thanks for reaching out. We would very welcome your help!
wpa_supplicant supports great feature Hotspot 2.0 and contains in its distribution program - osu_client, that allow to do automatic wifi configuration provision using protocols and conventions defined in Hotspot 2.0 Specification. I want to implement support of this feature in NetworkManager. wpa_supplicant - query AP for information needed for for Hotspot 2.0, and act as executor for commands that come from osu_client. osu_client - communicate with Online Signup server (parsing response, generate payload), enrolling user certificates for EAP-TLS, downloading root certificates that will validate certificated provided by radius servers, saving wifi configuration in xml file and load it in wpa_supplicant. I have superficially studied how NetworkManager mange wpa_supplicant. If I am not wrong it does it using D-Bus.
Correct
But main features that provide Hotspot 2.0 experience located in osu_client program. It is the standalone program that communicate with wpa_supplicant using control interface /run/wpa_supplicant. I think that it is a viable way to implement in NetworkManager functionality from osu_client that execute wpa_supplicant command, for example `interworking select`. But I doubt that it is a good idea to implement certificate enrolment in NetworkManager.
It sound to me like NetworkManager really would prefer to talk to some D-Bus API here. Possibly the functionality of osu_client could go into wpa-supplicant (and exposed on D-Bus), or osu_client could itself be a D-Bus service. Re-implmenting osu_client in NetworkManager does not sound preferable... (but maybe it is?? It seems large, but not extremely large). But talking to a command line tool is also not preferable...
So my questions are: What features should be implemented in NetworkManager code?
Any features that you deem useful and are willing to contribute :)
If some functionality is better to keep in separate program, for example osu_client, how organise communication between NetworkManager and that program? osu_client does not support D-Bus.
Theretically anything you can think of. Including spawning processes or any protocol via sockets (varlink?). But having a separate service and a D-Bus API sounds preferable to me. I think it would make it easier for everybody to talk to this API, so the effort spend there would not only benefit NetworkManager. wpa-supplicant itself is a D-Bus activatable service and not spawned by NetworkManager. That is very nice, because the service is properly managed (e.g. by systemd) and not by NetworkManager (which would do a less great job at that).
Both NetworkManager and osu_client can configure wifi connection, so if osu_client will be kept, how to pass wifi configuration? From it, or from NetworkManager?
I which NetworkManager source files I should put new code?
That depends... probably most of it under "src/device/wifi" and some under "src/supplicant". You can also find us on IRC (freenode, #nm). See https://wiki.gnome.org/Projects/NetworkManager/Hacking (and if you have questions that are not answered there, maybe we could improve the wiki). best, Thomas
Attachment:
signature.asc
Description: This is a digitally signed message part