非原創:只是學習而已。
後記:#define nipquad(addr) \
((unsigned char *)&addr)[0], \
((unsigned char *)&addr)[1], \
((unsigned char *)&addr)[2], \
((unsigned char *)&addr)[3]
#define nipquad_fmt "%u.%u.%u.%u"
轉換ip位址格式
printk("source ip :%d.%d.%d.%d:%u\n",nipquad(iph->saddr));//從__be32轉換為常用格式
nipquad是ipv4用
nip6是ipv6用
netfilter的hook點
在netfilter的hook點上為 contrack定義了如下幾個掛接點,用來處理流經的ip包: nf_ip_pre_routing : ip_conntrack_defrag -> ip_conntrack_in nf_ip_local_in : ip_conntrack_help -> ip_confirm nf_ip_local_out : ip_conntrack_defrag -> ip_conntrack_local nf_ip_post_routing :ip_conntrack_help -> ip_confirm其中ip_contrack_defrag用來處理報文分 片;ip_conntrack_in和ip_conntrack_local(內部呼叫ip_conntrack_in)用於conntrack為每個連 接建立模式記錄,ip_conntrack,並判斷報文是否符合合法的模式,不符合則丟棄;ip_conntrack_help是針對使用動態協議和埠 的連線設計的資料結構,如乙個ftp連線針對資料流和控制流分別用到了兩個埠,;ip_confirm判斷報文所屬的模式ip_conntrack是否 已經存在系統雜湊中,否則加入到系統的hash中。
tuple
tuple 結構僅僅用來標識乙個連線,並不是描述一條完整的連線狀態,netfilter將資料報轉換成tuple結構,並根據其計算hash,在相應的鍊錶上查詢,獲取相應的連線狀態,如果沒有查到,則表示是乙個新的連線。
核心中,描述乙個包的連線狀態,使用了struct ip_conntrack(ip_conntrack.h) 結構
IP位址轉換
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 乙個ip位址是用四個位元組 每個位元組8個位 的二進位製碼組成。請將32位二進位製碼表示的ip位址轉換為十進位制格式表示的ip位址輸出。輸入格式 輸入在一行中給出32位二進位制字串。輸出格式 在...
IP位址轉換函式
ip位址轉換函式 unsigned long inet addr const char cp inet addr將乙個點分十進位制ip位址字串轉換成32位數字表示的ip位址 網路位元組順序 char inet ntoa struct in addr in inet ntoa將乙個32位數字表示的ip...
IP位址轉換函式
include in addr t inet addr const char strptr 點分十進位制ipv4位址轉換為網路ipv4位址,失敗返回inaddr none int inet aton const char cp,struct in addr inp 點分十進位制ipv4位址轉換為網路...