diff options
| author | hwspeedy <ns@bigbear.dk> | 2024-05-01 09:45:49 +0200 | 
|---|---|---|
| committer | hwspeedy <ns@bigbear.dk> | 2024-05-01 09:45:49 +0200 | 
| commit | 50c94e1560eb42547ca48b6ae143cf1441df92b1 (patch) | |
| tree | ef42008ff4899438890c2434b5c8362324b04297 /modules/network | |
| parent | 3aad0054fbc0f4492871ded0f508d6d3d264acef (diff) | |
FIX Added network speed to interfaces
Diffstat (limited to 'modules/network')
| -rw-r--r-- | modules/network/net.c | 24 | 
1 files changed, 21 insertions, 3 deletions
| diff --git a/modules/network/net.c b/modules/network/net.c index ac1286fc..02291f0a 100644 --- a/modules/network/net.c +++ b/modules/network/net.c @@ -51,6 +51,7 @@ typedef struct _NetInfo NetInfo;  struct _NetInfo {      char name[16];      int mtu; +    char speed[30];      unsigned char mac[8];      char ip[16];      char mask[16]; @@ -171,7 +172,9 @@ void get_wireless_info(int fd, NetInfo *netinfo)  void get_net_info(char *if_name, NetInfo * netinfo)  {      struct ifreq ifr; -    int fd; +    int fd,s; +    gchar buf[256]; +    FILE *sysfs;      fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); @@ -187,12 +190,25 @@ void get_net_info(char *if_name, NetInfo * netinfo)      netinfo->mtu = ifr.ifr_mtu;      } +    /* Speed */ +    netinfo->speed[0]=0; +    sprintf(buf,"/sys/class/net/%s/speed",if_name); +    sysfs = fopen(buf, "r"); +    s=0; +    if (sysfs && (fgets(buf, sizeof(buf), sysfs)!=NULL)) sscanf(buf,"%d",&s); +    if(if_name[0]=='l' && if_name[1]=='o') +       sprintf(netinfo->speed,"Unlimited"); else +       if(s==0) sprintf(netinfo->speed,"Not Connected"); else +           if(s<1000) sprintf(netinfo->speed,"%d Mbit",s); else +	     sprintf(netinfo->speed,"%g Gbit",(float)s/1000); +    fclose(sysfs); +      /* HW Address */      strcpy(ifr.ifr_name, if_name);      if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) { -    memset(netinfo->mac, 0, 8); +        memset(netinfo->mac, 0, 8);      } else { -    memcpy(netinfo->mac, ifr.ifr_ifru.ifru_hwaddr.sa_data, 8); +        memcpy(netinfo->mac, ifr.ifr_ifru.ifru_hwaddr.sa_data, 8);      }      /* IP Address */ @@ -403,6 +419,7 @@ static void scan_net_interfaces_24(void)                         "%s=%s\n" /* Interface Type */                         "%s=%02x:%02x:%02x:%02x:%02x:%02x\n" /* MAC */                         "%s=%d\n" /* MTU */ +                       "%s=%s\n" /* Speed */                         "[%s]\n" /*Transfer Details*/                         "%s=%.0lf (%.2f%s)\n" /* Bytes Received */                         "%s=%.0lf (%.2f%s)\n" /* Bytes Sent */, @@ -413,6 +430,7 @@ static void scan_net_interfaces_24(void)                         ni.mac[2], ni.mac[3],                         ni.mac[4], ni.mac[5],                         _("MTU"), ni.mtu, +                       _("Speed"), ni.speed,                         _("Transfer Details"),                         _("Bytes Received"), recv_bytes, recv_mb, _("MiB"),                         _("Bytes Sent"), trans_bytes, trans_mb, _("MiB")); | 
