Re: Looking for advice how to start contributing in NetworkManager and implement Hotstpot 2.0 feature for WiFi

On Thu, 2019-06-13 at 14:17 +0600, work vlpl via networkmanager-list

I want to contribute to NetworkManger but don't know where to start,
so I am looking for advise how I can start it.


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
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
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.


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
to implement in NetworkManager functionality from osu_client that
execute wpa_supplicant command, for example `interworking select`.
I doubt that it is a good idea to implement certificate enrolment in

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

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 (and if you have
questions that are not answered there, maybe we could improve the


Attachment: signature.asc
Description: This is a digitally signed message part

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]