2014-05-10 146 views
0

我必須通過修改Linux內核源代碼來稍微改變TCP擁塞控制算法。但要檢查resutl是否正確,我需要記錄MAC或IP地址的信息。如何在Linux內核中使用IP地址或MAC地址進行printk內核源代碼

我用PRINTK函數打印內核消息。但是我很難打印出主機的MAC/IP地址。

的printk( 「%PM \ n」,MAC)

但什麼是MAC是指什麼? 在TCP源代碼中,我經常使用skbuff或sock結構。

謝謝。

UPDATE:

struct iphdr *iph = ip_hdr(skb); 
printk(KERN_DEBUG "%pI4", iph->saddr); 

回答

0

您正在尋找這樣的事情? 從弓/ Xtensa可/平臺/ ISS/network.c:

printk("(%pM) ", lp->mac); 

我發現它在使用此命令

grep -R "mac)" * | grep printk 

可能更容易幫助,如果你能告訴我們哪些文件/行你目前正在開展工作。

0

Linux文檔printk格式說明符擴展名文件Documentation/printk-formats.txt作爲內核源代碼的一部分提供。對於你的例子,

IPv4 addresses: 

     %pI4 1.2.3.4 
     %pi4 001.002.003.004 
     %p[Ii][hnbl] 

     For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4' 
     specifiers result in a printed address with ('i4') or without ('I4') 
     leading zeros. 

傳遞的參數將是一個指向打印IP地址(skbuff,套接字結構等)的指針。

相關問題