#include "networkd-route.h"
#include "networkd-route-util.h"
#include "networkd-routing-policy-rule.h"
+#include "networkd-speed-meter.h"
#include "networkd-wwan.h"
#include "ordered-set.h"
#include "set.h"
if (r < 0)
return r;
+ /* Append BitRates if speed meter is active */
+ uint64_t tx, rx;
+ link_get_bit_rates(link, &tx, &rx);
+ if (tx != UINT64_MAX && rx != UINT64_MAX) {
+ r = sd_json_variant_merge_objectbo(
+ &v,
+ SD_JSON_BUILD_PAIR("BitRates",
+ SD_JSON_BUILD_OBJECT(
+ SD_JSON_BUILD_PAIR_UNSIGNED("TxBitRate", tx),
+ SD_JSON_BUILD_PAIR_UNSIGNED("RxBitRate", rx))));
+ if (r < 0)
+ return r;
+ }
+
*ret = TAKE_PTR(v);
return 0;
}
SD_VARLINK_FIELD_COMMENT("Static DHCP leases configured for specific clients"),
SD_VARLINK_DEFINE_FIELD_BY_TYPE(StaticLeases, DHCPServerLease, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE));
+static SD_VARLINK_DEFINE_STRUCT_TYPE(
+ BitRates,
+ SD_VARLINK_FIELD_COMMENT("Transmit bitrate in bits per second"),
+ SD_VARLINK_DEFINE_FIELD(TxBitRate, SD_VARLINK_INT, 0),
+ SD_VARLINK_FIELD_COMMENT("Receive bitrate in bits per second"),
+ SD_VARLINK_DEFINE_FIELD(RxBitRate, SD_VARLINK_INT, 0));
+
static SD_VARLINK_DEFINE_STRUCT_TYPE(
Interface,
SD_VARLINK_FIELD_COMMENT("Network interface index"),
SD_VARLINK_FIELD_COMMENT("DHCPv6 client configuration and lease information"),
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DHCPv6Client, DHCPv6Client, SD_VARLINK_NULLABLE),
SD_VARLINK_FIELD_COMMENT("LLDP transmit configuration for this interface"),
- SD_VARLINK_DEFINE_FIELD_BY_TYPE(LLDP, LLDPNeighbor, SD_VARLINK_NULLABLE));
+ SD_VARLINK_DEFINE_FIELD_BY_TYPE(LLDP, LLDPNeighbor, SD_VARLINK_NULLABLE),
+ SD_VARLINK_FIELD_COMMENT("Current transmit/receive bitrates from speed meter"),
+ SD_VARLINK_DEFINE_FIELD_BY_TYPE(BitRates, BitRates, SD_VARLINK_NULLABLE));
static SD_VARLINK_DEFINE_METHOD(
Describe,
&vl_method_GetLLDPNeighbors,
&vl_method_SetPersistentStorage,
&vl_type_Address,
+ &vl_type_BitRates,
&vl_type_DHCPLease,
&vl_type_DHCPServer,
&vl_type_DHCPServerLease,