Merge pull request #1239 from mazunki/default-gateway
Added support for {gwaddr} as a variable
This commit is contained in:
commit
6938921e92
3
Makefile
3
Makefile
|
@ -16,5 +16,8 @@ install: build
|
|||
run: build
|
||||
./build/waybar
|
||||
|
||||
debug-run: build-debug
|
||||
./build/waybar --log-level debug
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -117,7 +117,8 @@
|
|||
"network": {
|
||||
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"format-linked": "{ifname} (No IP) ",
|
||||
"format-disconnected": "Disconnected ⚠",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
|
|
|
@ -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,8 +661,8 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
|
|||
net->clearIface();
|
||||
net->ifid_ = temp_idx;
|
||||
net->route_priority = priority;
|
||||
|
||||
spdlog::debug("network: new default route via if{} metric {}", temp_idx, priority);
|
||||
net->gwaddr_ = temp_gw_addr;
|
||||
spdlog::debug("network: new default route via {} on if{} metric {}", temp_gw_addr, temp_idx, priority);
|
||||
|
||||
/* Ask ifname associated with temp_idx as well as carrier status */
|
||||
struct ifinfomsg ifinfo_hdr = {
|
||||
|
|
Loading…
Reference in New Issue