netspeeds: added error condition for openbsd
implemented additional error condition for openbsd netstat in case the interface could not be found in the interface list or if_data is not readable.
This commit is contained in:
		
				
					committed by
					
						
						Aaron Marcher
					
				
			
			
				
	
			
			
			
						parent
						
							0383146e5e
						
					
				
				
					commit
					2321aecff0
				
			@@ -64,6 +64,7 @@
 | 
			
		||||
		uint64_t rxbytes = 0;
 | 
			
		||||
		const char *rxs;
 | 
			
		||||
		extern const unsigned int interval;
 | 
			
		||||
		char if_ok = 0;
 | 
			
		||||
 | 
			
		||||
		if (getifaddrs(&ifal) == -1) {
 | 
			
		||||
			warn("getifaddrs failed");
 | 
			
		||||
@@ -72,10 +73,14 @@
 | 
			
		||||
		for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
 | 
			
		||||
			if (!strcmp(ifa->ifa_name, interface) &&
 | 
			
		||||
			   (ifd = (struct if_data *)ifa->ifa_data)) {
 | 
			
		||||
				rxbytes += ifd->ifi_ibytes;
 | 
			
		||||
				rxbytes += ifd->ifi_ibytes, if_ok = 1;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		freeifaddrs(ifal);
 | 
			
		||||
		if (!if_ok) {
 | 
			
		||||
			warn("reading 'if_data' failed");
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
 | 
			
		||||
		                              interval * 1000) : NULL;
 | 
			
		||||
@@ -91,6 +96,7 @@
 | 
			
		||||
		uint64_t txbytes = 0;
 | 
			
		||||
		const char *txs;
 | 
			
		||||
		extern const unsigned int interval;
 | 
			
		||||
		char if_ok = 0;
 | 
			
		||||
 | 
			
		||||
		if (getifaddrs(&ifal) == -1) {
 | 
			
		||||
			warn("getifaddrs failed");
 | 
			
		||||
@@ -99,10 +105,14 @@
 | 
			
		||||
		for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
 | 
			
		||||
			if (!strcmp(ifa->ifa_name, interface) &&
 | 
			
		||||
			   (ifd = (struct if_data *)ifa->ifa_data)) {
 | 
			
		||||
				txbytes += ifd->ifi_obytes;
 | 
			
		||||
				txbytes += ifd->ifi_obytes, if_ok = 1;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		freeifaddrs(ifal);
 | 
			
		||||
		if (!if_ok) {
 | 
			
		||||
			warn("reading 'if_data' failed");
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
 | 
			
		||||
		                              interval * 1000) : NULL;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user