<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    Linux中ifreq 結構體分析和使用

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    結構原型:

    struct ifreq
    {
    #define IFHWADDRLEN 6
     union
     {
      char ifrn_name[IFNAMSIZ];  
     } ifr_ifrn;
     
     union {
      struct sockaddr ifru_addr;
      struct sockaddr ifru_dstaddr;
      struct sockaddr ifru_broadaddr;
      struct sockaddr ifru_netmask;
      struct  sockaddr ifru_hwaddr;
      short ifru_flags;
      int ifru_ivalue;
      int ifru_mtu;
      struct  ifmap ifru_map;
      char ifru_slave[IFNAMSIZ]; 
      char ifru_newname[IFNAMSIZ];
      void __user * ifru_data;
      struct if_settings ifru_settings;
     } ifr_ifru;
    };

    #define ifr_name ifr_ifrn.ifrn_name 
    #define ifr_hwaddr ifr_ifru.ifru_hwaddr 
    #define ifr_addr ifr_ifru.ifru_addr 
    #define ifr_dstaddr ifr_ifru.ifru_dstaddr 
    #define ifr_broadaddr ifr_ifru.ifru_broadaddr 
    #define ifr_netmask ifr_ifru.ifru_netmask 
    #define ifr_flags ifr_ifru.ifru_flags 
    #define ifr_metric ifr_ifru.ifru_ivalue 
    #define ifr_mtu  ifr_ifru.ifru_mtu 
    #define ifr_map  ifr_ifru.ifru_map 
    #define ifr_slave ifr_ifru.ifru_slave 
    #define ifr_data ifr_ifru.ifru_data 
    #define ifr_ifindex ifr_ifru.ifru_ivalue 
    #define ifr_bandwidth ifr_ifru.ifru_ivalue    
    #define ifr_qlen ifr_ifru.ifru_ivalue 
    #define ifr_newname ifr_ifru.ifru_newname 
    #define ifr_settings ifr_ifru.ifru_settings 

     

    基本介紹: 

    ifreq結構定義在/usr/include/net/if.h,用來配置ip地址,激活接口,配置MTU等接口信息的。其中包含了一個接口的名 字和具體內容——(是個共用體,有可能是IP地址,廣播地址,子網掩碼,MAC號,MTU或其他內容)。ifreq包含在ifconf結構中。而 ifconf結構通常是用來保存所有接口的信息的。

     

    舉例說明:

    在Linux系統中,ifconfig命令是通過ioctl接口與內核通信,例如,當系統管理員輸入如下命令來改變接口eth0的MTU大小:

        ifconfig eth0 mtu 1250

    ifconfig命令首先打開一個socket,然后通過系統管理員輸入的參數初始化一個數據結構,并通過ioctl調用將數據傳送到內核。SIOCSIFMTU是命令標識符。

        struct ifreq data;
        fd = socket(PF_INET, SOCK_DGRAM, 0);
        < ... initialize "data" ...>
        err = ioctl(fd, SIOCSIFMTU, &data);

     

    來源:http://blog.csdn.net/zhu114wei/article/details/6927513

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全