added support for the {gwaddr} variable

This commit is contained in:
Rolf Vidar Mazunki Hoksaas 2021-09-09 20:05:18 +02:00
parent 4e256cf3f0
commit 2c380a53ca
4 changed files with 15 additions and 1 deletions

View File

@ -16,5 +16,8 @@ install: build
run: build
./build/waybar
debug-run: build
./build/waybar --log-level debug
clean:
rm -rf build

View File

@ -67,6 +67,7 @@ class Network : public ALabel {
bool carrier_;
std::string ifname_;
std::string ipaddr_;
std::string gwaddr_;
std::string netmask_;
int cidr_;
int32_t signal_strength_dbm_;

View File

@ -131,6 +131,8 @@ Addressed by *network*
*{ipaddr}*: The first IP of the interface.
*{gwaddr}*: The default gateway for the interface
*{netmask}*: The subnetmask corresponding to the IP.
*{cidr}*: The subnetmask corresponding to the IP in CIDR notation.

View File

@ -348,6 +348,7 @@ auto waybar::modules::Network::update() -> void {
fmt::arg("ifname", ifname_),
fmt::arg("netmask", netmask_),
fmt::arg("ipaddr", ipaddr_),
fmt::arg("gwaddr", gwaddr_),
fmt::arg("cidr", cidr_),
fmt::arg("frequency", frequency_),
fmt::arg("icon", getIcon(signal_strength_, state_)),
@ -376,6 +377,7 @@ auto waybar::modules::Network::update() -> void {
fmt::arg("ifname", ifname_),
fmt::arg("netmask", netmask_),
fmt::arg("ipaddr", ipaddr_),
fmt::arg("gwaddr", gwaddr_),
fmt::arg("cidr", cidr_),
fmt::arg("frequency", frequency_),
fmt::arg("icon", getIcon(signal_strength_, state_)),
@ -409,6 +411,7 @@ void waybar::modules::Network::clearIface() {
ifname_.clear();
essid_.clear();
ipaddr_.clear();
gwaddr_.clear();
netmask_.clear();
carrier_ = false;
cidr_ = 0;
@ -581,6 +584,7 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
break;
}
char temp_gw_addr[INET6_ADDRSTRLEN];
case RTM_DELROUTE:
is_del_event = true;
case RTM_NEWROUTE: {
@ -595,6 +599,7 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
int temp_idx = -1;
uint32_t priority = 0;
/* Find the message(s) concerting the main routing table, each message
* corresponds to a single routing table entry.
*/
@ -612,9 +617,10 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
case RTA_GATEWAY:
/* The gateway of the route.
*
* If someone every needs to figure out the gateway address as well,
* If someone ever needs to figure out the gateway address as well,
* it's here as the attribute payload.
*/
inet_ntop(net->family_, RTA_DATA(attr), temp_gw_addr, sizeof(temp_gw_addr));
has_gateway = true;
break;
case RTA_DST: {
@ -655,6 +661,8 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
net->clearIface();
net->ifid_ = temp_idx;
net->route_priority = priority;
net->gwaddr_ = temp_gw_addr;
spdlog::debug("netwok: gateway {}", net->gwaddr_);
spdlog::debug("network: new default route via if{} metric {}", temp_idx, priority);