mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 07:52:42 +01:00 
			
		
		
		
	Merge pull request #1239 from mazunki/default-gateway
Added support for {gwaddr} as a variable
			
			
This commit is contained in:
		
							
								
								
									
										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 = { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alex
					Alex