machine-readable --query-ip-configuration [patch] (2nd attempt)
Aleksander Morgado
aleksander at aleksander.es
Fri Mar 24 09:07:53 UTC 2017
Hey,
On Thu, Mar 23, 2017 at 11:47 PM, Daniel Barlow <dan at telent.net> wrote:
> I recently added an EM7455 to my Thinkpad X1 and in the goal of making it
> work have been learning a *little* more than I expected to have to about
> MBIM (and for that matter about IPv6-only connectivity)
>
> Because my current distribution doesn't seem to want to let me run
> ModemManager without NetworkManager I wanted to make everything work using
> the supplied mbim-network script, and it seems that the biggest missing bit
> there is actually configuring the interface/gateway/dns servers etc after
> the connection is made. Because I don't much like writing machine parsers
> for potentially brittle intended-for-humans output, I took the liberty of
> writing a small patch to optionally turn the output of
> --query-ip-configuration into awk-friendly tab separated lines. So for
> example I can run
>
> $ mbimcli -p -d /dev/cdc-wdm0 --query-ip-configuration --machine-readable
>
> IPv4 fields none
>
> IPv6 fields address, gateway, dns, mtu
> IPv6 address 2a01:4c8:1b:eb13:2dbf:b045:8a94:88fa/64
> IPv6 gateway 2a01:4c8:1b:eb13:40dc:ba5f:4d43:d4c
> IPv6 dns 2a01:4c8:f000:1::1
> IPv6 dns 2a01:4c8:f000:1::2
> IPv6 mtu 1500
>
> Would there be any interest in merging this or something like it? I see
> some previous discussion about extending mbim-network to configure the wwan
> interface
> (https://lists.freedesktop.org/archives/libmbim-devel/2015-May/000576.html)
> and it seems to me like having an easy-to-parse output format for the
> necessary config data would be an important part of that work.
>
> I can't see any contribution guidelines in the project repo so I hope that
> attaching a diff as MIME is acceptable. I've also posted it as a gist at
> https://gist.github.com/telent/fa67574cbb483228d9861376e8dea92a
Doing something like this for all mbimcli, qmicli and mmcli has been
in my TODO list for a long time, especially since I worked on making
ModemManager work in OpenWRT; where mmcli output parsing is a bit
klunky.
But I didn't think of tab-separated outputs, more maybe something like this:
ipv6.address=2a01:4c8:1b:eb13:2dbf:b045:8a94:88fa/64
ipv6.gateway=2a01:4c8:1b:eb13:40dc:ba5f:4d43:d4c
ipv6.dns0=2a01:4c8:f000:1::1
ipv6.dns1= 2a01:4c8:f000:1::2
mtu=1500
i.e. "field=value". I've seen other attempts to do this using e.g.
JSON formatted output, but I never liked that for integration of CLIs
in shell scripts.
One of the things that I do consider is that this should be a global
option for all commands, not just for IP settings.
And also, there has to be a way of querying which would be the
possible output fields that a command may generate, so that when
you're developing based on the CLI outputs, you can know in advance
which fields you may receive as output without needing to look at the
source code. Something like:
$ mbimcli --query-ip-configuration --machine-readable-help
Fields that may be generated in "Query IP Configuration":
ipv6.address
ipv6.gateway
ipv6.dns0
ipv6.dns1
mtu
Maybe mbimcli is the best candidate to start adding support for this,
as I think it's the simplest of the CLIs for now.
--
Aleksander
https://aleksander.es
More information about the libmbim-devel
mailing list