[systemd-devel] sd-bus dynamic property table

Stephen Hemminger stephen at networkplumber.org
Mon May 13 15:25:03 UTC 2019


I have a simple application that does provides property table for network
devices (maybe it would be useful for a more complete example somewhere).
The app is more to show how to use sdbus, not to replace network manager.

The next step is to add ethtool statistics. Each type of network device will have
different set of named properties. How could this be implemented?
So far, the only idea would be to dynamically build a vtable then
register it?


# busctl tree  org.networkplumber.net1
└─/org
  └─/org/networkplumber
    └─/org/networkplumber/net1
      └─/org/networkplumber/net1/interface
        ├─/org/networkplumber/net1/interface/eno1
        ├─/org/networkplumber/net1/interface/eno2
        ├─/org/networkplumber/net1/interface/ens11
        └─/org/networkplumber/net1/interface/lo

# busctl introspect org.networkplumber.net1 /org/networkplumber/net1/interface/eno1
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface -         -            -
.Introspect                         method    -         s            -
org.freedesktop.DBus.Peer           interface -         -            -
.GetMachineId                       method    -         s            -
.Ping                               method    -         -            -
org.freedesktop.DBus.Properties     interface -         -            -
.Get                                method    ss        v            -
.GetAll                             method    s         a{sv}        -
.Set                                method    ssv       -            -
.PropertiesChanged                  signal    sa{sv}as  -            -
org.networkplumber.net1.Interface   interface -         -            -
.carrier                            property  q         1            -
.ifindex                            property  q         2            -
.iflink                             property  q         2            -
.mtu                                property  q         1500         -


Want to be able to add these:
# ethtool -S eno1 | grep -v ' 0$'
NIC statistics:
     rx_packets: 84980
     tx_packets: 32068
     rx_bytes: 107413644
     tx_bytes: 9299204
     rx_broadcast: 219
     tx_broadcast: 84
     rx_multicast: 152
     tx_multicast: 157
     multicast: 152
     tx_tcp_seg_good: 1561
     rx_long_byte_count: 107413644
     tx_queue_0_packets: 6888
     tx_queue_0_bytes: 3127349
     tx_queue_1_packets: 6307
     tx_queue_1_bytes: 3623152
     tx_queue_2_packets: 12569
     tx_queue_2_bytes: 1239345
     tx_queue_3_packets: 6304
     tx_queue_3_bytes: 1163512
     rx_queue_0_packets: 17936
     rx_queue_0_bytes: 21464312
     rx_queue_1_packets: 20651
     rx_queue_1_bytes: 27029893
     rx_queue_2_packets: 12642
     rx_queue_2_bytes: 13132543
     rx_queue_3_packets: 33751
     rx_queue_3_bytes: 45446976



More information about the systemd-devel mailing list