applets/network: really fix the build on FreeBSD
This previously built on FreeBSD 12.3 for lack of SIOCGIFDATA; this should now build on FreeBSD 13.1.
This commit is contained in:
parent
e33f9d5fb9
commit
c4222c2ea2
|
@ -24,11 +24,11 @@
|
||||||
#endif
|
#endif
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <net/if.h>
|
||||||
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
|
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
|
||||||
# include <ifaddrs.h>
|
# include <ifaddrs.h>
|
||||||
#endif
|
#endif
|
||||||
#include <libintl.h>
|
|
||||||
#include <net/if.h>
|
|
||||||
#include <System.h>
|
#include <System.h>
|
||||||
#include "Panel/applet.h"
|
#include "Panel/applet.h"
|
||||||
#define _(string) gettext(string)
|
#define _(string) gettext(string)
|
||||||
|
@ -298,8 +298,11 @@ static void _refresh_interface_flags(Network * network, NetworkInterface * ni,
|
||||||
#ifdef SIOCGIFDATA
|
#ifdef SIOCGIFDATA
|
||||||
# if defined(__NetBSD__)
|
# if defined(__NetBSD__)
|
||||||
struct ifdatareq ifdr;
|
struct ifdatareq ifdr;
|
||||||
|
struct if_data * pifdr = &ifdr.ifdr_data;
|
||||||
# else
|
# else
|
||||||
struct if_data ifdr;
|
struct ifreq ifdr;
|
||||||
|
struct if_data ifd;
|
||||||
|
struct if_data * pifdr = &ifd;
|
||||||
# endif
|
# endif
|
||||||
# if GTK_CHECK_VERSION(2, 12, 0)
|
# if GTK_CHECK_VERSION(2, 12, 0)
|
||||||
unsigned long ibytes;
|
unsigned long ibytes;
|
||||||
|
@ -317,42 +320,43 @@ static void _refresh_interface_flags(Network * network, NetworkInterface * ni,
|
||||||
#ifdef SIOCGIFDATA
|
#ifdef SIOCGIFDATA
|
||||||
/* XXX ignore errors */
|
/* XXX ignore errors */
|
||||||
memset(&ifdr, 0, sizeof(ifdr));
|
memset(&ifdr, 0, sizeof(ifdr));
|
||||||
|
# if defined(__NetBSD__)
|
||||||
strncpy(ifdr.ifdr_name, ni->name, sizeof(ifdr.ifdr_name));
|
strncpy(ifdr.ifdr_name, ni->name, sizeof(ifdr.ifdr_name));
|
||||||
|
# else
|
||||||
|
strncpy(ifdr.ifr_name, ni->name, sizeof(ifdr.ifr_name));
|
||||||
|
ifdr.ifr_data = (caddr_t)pifdr;
|
||||||
|
# endif
|
||||||
if(ioctl(network->fd, SIOCGIFDATA, &ifdr) == -1)
|
if(ioctl(network->fd, SIOCGIFDATA, &ifdr) == -1)
|
||||||
network->helper->error(NULL, "SIOCGIFDATA", 1);
|
network->helper->error(NULL, "SIOCGIFDATA", 1);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(ifdr.ifdr_data.ifi_ipackets > ni->ipackets)
|
if(pifdr->ifi_ipackets > ni->ipackets)
|
||||||
icon = (ifdr.ifdr_data.ifi_opackets
|
icon = (pifdr->ifi_opackets > ni->opackets)
|
||||||
> ni->opackets)
|
|
||||||
? "network-transmit-receive"
|
? "network-transmit-receive"
|
||||||
: "network-receive";
|
: "network-receive";
|
||||||
else if(ifdr.ifdr_data.ifi_opackets > ni->opackets)
|
else if(pifdr->ifi_opackets > ni->opackets)
|
||||||
icon = "network-transmit";
|
icon = "network-transmit";
|
||||||
# ifdef LINK_STATE_DOWN
|
# ifdef LINK_STATE_DOWN
|
||||||
else if(ifdr.ifdr_data.ifi_link_state
|
else if(pifdr->ifi_link_state == LINK_STATE_DOWN)
|
||||||
== LINK_STATE_DOWN)
|
|
||||||
icon = "network-offline";
|
icon = "network-offline";
|
||||||
# endif
|
# endif
|
||||||
else
|
else
|
||||||
icon = "network-idle";
|
icon = "network-idle";
|
||||||
# if GTK_CHECK_VERSION(2, 12, 0)
|
# if GTK_CHECK_VERSION(2, 12, 0)
|
||||||
ibytes = (ifdr.ifdr_data.ifi_ibytes >= ni->ibytes)
|
ibytes = (pifdr->ifi_ibytes >= ni->ibytes)
|
||||||
? ifdr.ifdr_data.ifi_ibytes - ni->ibytes
|
? pifdr->ifi_ibytes - ni->ibytes
|
||||||
: ULONG_MAX - ni->ibytes
|
: ULONG_MAX - ni->ibytes + pifdr->ifi_ibytes;
|
||||||
+ ifdr.ifdr_data.ifi_ibytes;
|
obytes = (pifdr->ifi_obytes >= ni->obytes)
|
||||||
obytes = (ifdr.ifdr_data.ifi_obytes >= ni->obytes)
|
? pifdr->ifi_obytes - ni->obytes
|
||||||
? ifdr.ifdr_data.ifi_obytes - ni->obytes
|
: ULONG_MAX - ni->obytes + pifdr->ifi_obytes;
|
||||||
: ULONG_MAX - ni->obytes
|
|
||||||
+ ifdr.ifdr_data.ifi_obytes;
|
|
||||||
snprintf(tooltip, sizeof(tooltip),
|
snprintf(tooltip, sizeof(tooltip),
|
||||||
_("%s\nIn: %lu kB/s\nOut: %lu kB/s"),
|
_("%s\nIn: %lu kB/s\nOut: %lu kB/s"),
|
||||||
ni->name, ibytes / 512, obytes / 512);
|
ni->name, ibytes / 512, obytes / 512);
|
||||||
# endif
|
# endif
|
||||||
ni->ipackets = ifdr.ifdr_data.ifi_ipackets;
|
ni->ipackets = pifdr->ifi_ipackets;
|
||||||
ni->opackets = ifdr.ifdr_data.ifi_opackets;
|
ni->opackets = pifdr->ifi_opackets;
|
||||||
ni->ibytes = ifdr.ifdr_data.ifi_ibytes;
|
ni->ibytes = pifdr->ifi_ibytes;
|
||||||
ni->obytes = ifdr.ifdr_data.ifi_obytes;
|
ni->obytes = pifdr->ifi_obytes;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user