驱动中获取特定网络接口的信息

上一篇 / 下一篇  2008-07-29 10:51:55

/*这个是我写的*/
static int find_dev_mac(char *name, unsigned char *mac)
{
       struct net_device *dev, *nxt;

       if (!mac || !name){
              return -1;
      }
 
      for (dev = dev_base; dev; dev = nxt) {
               nxt = dev->next;
              if (!strcmp(dev->name, name)){
                     DBG("find %s in kernel dev_base", name);
                     memcpy(mac, dev->dev_addr, 6);
                     return 0;
              }
       }

      return -1; 
}
/*这个是抄过来的,貌似更严谨*/
#define IP_INTERFACE "br0"
static void
ath_find_own_ip(u_int32_t *u_ownIp)
{
    struct in_device *in_dev;
    struct in_ifaddr **ifap = NULL;
    struct in_ifaddr *ifa = NULL;
    struct net_device *dev;
   
    if ((dev = dev_get_by_name(IP_INTERFACE)) == NULL) {
        return;
    }
    if ((in_dev=(struct in_device*)dev->ip_ptr) != NULL) {
        if (ifa == NULL) {
            for (ifap=&in_dev->ifa_list; (ifa=*ifap) != NULL; ifap=&ifa->ifa_next)
                if (strcmp(IP_INTERFACE, ifa->ifa_label) == 0)
                    break;
        }
    }
    if (ifa == NULL)
        return;
    *u_ownIp = ifa->ifa_local;
   
}



TAG: 获取 接口 驱动 网络

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar