【问题标题】:Print the MAC addresses from the mac header of IEEE802.11 packet when extracted using sk_buff使用 sk_buff 提取时从 IEEE802.11 数据包的 mac 头打印 MAC 地址
【发布时间】:2014-04-06 10:18:33
【问题描述】:

我正在编写一个模块,用于提取无线 802.11 数据包的以太网 Mac 标头的 MAC 地址。我将 ethernetmac 标头提取为

ieee = (struct ieee80211_hdr *)skb_mac_header(sock_buff);
ieee->addr1[ETH_ALEN];
ieee->addr2[ETH_ALEN];
ieee->addr3[ETH_ALEN];

我想打印这些地址以查看其中包含的值。我如何使用printkKERN_INFO 来做到这一点

目前我正在使用此语句,但它会导致内核处于恐慌模式

printk(KERN_INFO "The address is %x:%x:%x:%x:%x:%x", ieee->addr1[0],ieee->addr1[1],ieee->addr1[2],ieee->addr1[3],ieee->addr1[4],ieee->addr1[5]);

【问题讨论】:

    标签: mac-address printk


    【解决方案1】:

    嗯,根据this,addr1是u8 addr1[ETH_LEN],所以:

    printk("MAC %pM: \n", ieee->addr1);
    

    【讨论】:

    • 不,内核再次进入恐慌模式
    • 你完全确定它在 printk() 调用时会发生恐慌吗?检查它是否不为 NULL。
    • 是的,如果我把它注释掉,内核不会恐慌,但是如果我写了一个语句来打印一个像这个地址这样的变量值,内核就会恐慌。如果我只使用 printk 打印一些语句,它也不会惊慌。我检查了它这个地址是空的,它不是空的。可能是什么问题?
    • 而且我刚刚初始化了一个 int i =9;并打印出来,它工作正常,没有恐慌,并给出了 i 变量的正确值
    猜你喜欢
    • 2012-04-25
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多