linux에서 대역폭 가져오는 방법

mini7510의 이미지

linux에서 네트웍 정보 가지고 오는 코드입니다.
제가 가져오고 싶은 정보는 대역폭 입니다.
이 예제되로 하면 대역폭 정보가 이상하게 나오는데
어떻게 해야 대역폭 정보를 가져올수 있는지 알고 싶습니다.

아시고 계신분은 좋은 답변부탁드립니다.

#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <net/if.h>

#include <arpa/inet.h>

int main()
{
    struct ifreq *ifr;
    struct sockaddr_in *sin;
    struct ifconf ifcfg;
    int fd;
    int n;
    int numreqs = 30;
    fd = socket(AF_INET, SOCK_DGRAM, 0);

    memset(&ifcfg, 0, sizeof(ifcfg));
    ifcfg.ifc_buf = NULL;
    ifcfg.ifc_len = sizeof(struct ifreq) * numreqs;
    ifcfg.ifc_buf = (char *)malloc(ifcfg.ifc_len);
    for(;;)
    {
        ifcfg.ifc_len = sizeof(struct ifreq) * numreqs;
        ifcfg.ifc_buf = (char *)realloc(ifcfg.ifc_buf, ifcfg.ifc_len);
        if (ioctl(fd, SIOCGIFCONF, (char *)&ifcfg) < 0)
        {
            perror("SIOCGIFCONF ");
            return 0;
        }
        printf("%d : %d \n", ifcfg.ifc_len, sizeof(struct ifreq));
        break;
    }
    ifr = ifcfg.ifc_req;
    for (n = 0; n < ifcfg.ifc_len; n+= sizeof(struct ifreq))
    {
        printf("%s\n", ifr->ifr_name);
        sin = (struct sockaddr_in *)&ifr->ifr_addr;
        printf("IP    %s\n", inet_ntoa(sin->sin_addr) );
        if ( (sin->sin_addr.s_addr) == INADDR_LOOPBACK)
        {
            printf("Loop Back\n");
        }
        ioctl(fd,  SIOCGIFBRDADDR, (char *)ifr);
        sin = (struct sockaddr_in *)&ifr->ifr_broadaddr;
        printf("BROD  %s\n", inet_ntoa(sin->sin_addr));
        ioctl(fd, SIOCGIFNETMASK, (char *)ifr);
        sin = (struct sockaddr_in *)&ifr->ifr_addr;
        printf("MASK  %s\n", inet_ntoa(sin->sin_addr));
        ioctl(fd, SIOCGIFMTU, (char *)ifr);
        printf("MTU   %d\n", ifr->ifr_mtu);
        ioctl(fd, SIOCGIFINDEX, (char *)ifr);
        printf("BAND  %d %d\n", ifr->ifr_ifindex, ifr->ifr_bandwidth);
        printf("\n");
        ifr++;
    }
}

[/b]