嵌入式 hi3518平台检测网线是否插上


/********************************** (C) COPYRIGHT *******************************
* File Name          : linkstatus_check.c
* Author             : skdkjzz
* Date               : 2014/08/07
* Description        : 网线是否插上
*********************************************************************************/


#include <sys/types.h>  
#include <string.h>  
#include <stdlib.h>  
#include <sys/types.h>  
#include <sys/ioctl.h>  
#include <sys/stat.h>  
#include <stdio.h>  
#include <string.h>  
#include <errno.h>  
#include <net/if.h>  
#include <sys/utsname.h>  
#include <limits.h>  
#include <ctype.h>     
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <arpa/inet.h>     
#include <linux/sockios.h>  
  
#define ETHTOOL_GLINK   0x0000000a   /* Get link status (ethtool_value) */  
struct ethtool_value {  
                      unsigned int   cmd;  
                      unsigned int   data;   
                     };    
  
int get_netlink_status(const char *if_name);  
   


/**************************************************************** 
   return value:  
   -1 -- error , details can check errno  
   1  -- interface link up  
   0  -- interface link down.  
****************************************************************/
int get_netlink_status(const char *if_name)  
{  
    int skfd;  
    struct ifreq ifr;  
    struct ethtool_value edata;  
    edata.cmd = ETHTOOL_GLINK;  
    edata.data = 0;  
    memset(&ifr, 0, sizeof(ifr));  
    strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name) - 1);  
    ifr.ifr_data = (char *)&edata;  
    if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) == 0)  
        return -1;  
    if (ioctl(skfd, SIOCETHTOOL, &ifr) == -1)  
    {  
       close(skfd);       
       return -1;  
    }  
    close(skfd);  
    return edata.data;  
}  


int main()  
{  
    char net_buf[10]="eth0"; 
    printf("Net link status: %s\n", get_netlink_status(net_buf) == 1 ? "up" : "down");  
    return 0;  
}  
 


   </span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值