IOS开发入门之如何得到mac地址
凌雪 2018-11-09 来源 :网络 阅读 1723 评论 0

摘要:本文将带你了解IOS开发入门如何得到mac地址,希望本文对大家学IOS有所帮助。

本文将带你了解IOS开发入门如何得到mac地址,希望本文对大家学IOS有所帮助。


         

如何得到mac地址

在net   driver中一般通过device_get_mac_address来从acpi或dts中拿到mac地址,如下例子所示:
static   void hns_init_mac_addr(struct net_device *ndev)
{
struct   hns_nic_priv *priv = netdev_priv(ndev);

if   (!device_get_mac_address(priv->dev, ndev->dev_addr, ETH_ALEN))   {
eth_hw_addr_random(ndev);
dev_warn(priv->dev,   "No valid mac, use random mac %pM",
ndev->dev_addr);
}
}

void   *device_get_mac_address(struct device *dev, char *addr, int   alen)
{
char *res;

res =   device_get_mac_addr(dev, "mac-address", addr, alen);
if   (res)
return res;

res = device_get_mac_addr(dev,   "local-mac-address", addr, alen);
if (res)
return   res;

return device_get_mac_addr(dev, "address",   addr, alen);
}
在device_get_mac_address   中一次检查mac-address/local-mac-address/address 这三个字串。
static void   *device_get_mac_addr(struct device *dev,
const char *name, char   *addr,
int alen)
{
int ret =   device_property_read_u8_array(dev, name, addr, alen);

if   (ret == 0 && alen == ETH_ALEN &&   is_valid_ether_addr(addr))
return addr;
return   NULL;
}
在device_get_mac_addr   最终通过device_property_read_u8_array得到mac地址,这样函数是ACPI 和 DT   都可以使用的,前面的文章有分析过,会调用is_valid_ether_addr   检查mac地址是否合法其中有两种mac地址是非法的00:00:00:00:00:00 和   FF:FF:FF:FF:FF:FF
如果device_get_mac_address   返回failed的话,则调用eth_hw_addr_random 来随机得到一组mac值
static inline void   eth_hw_addr_random(struct net_device   *dev)
{
dev->addr_assign_type =   NET_ADDR_RANDOM;
eth_random_addr(dev->dev_addr);
}
eth_hw_addr_random   调用eth_random_addr 得到随机值
static inline void eth_random_addr(u8   *addr)
{
get_random_bytes(addr, ETH_ALEN);
addr[0]   &= 0xfe; /* clear multicast bit */
addr[0] |= 0x02; /* set   local assignment bit (IEEE802) */
}
最终调用get_random_bytes   来得到随机数
    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved