青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

struct sk_buff

/home/green/src/list.c
alloc_skb
kfree_skb
skb_put
skb_trim


#############
/home/green/src/list.c
#############
alloc_skb
kfree_skb
skb_put  // used data后部擴(kuò)展
skb_push // used data前部擴(kuò)展
skb_pull // used data前部截?cái)?/div>
skb_trim // used data后部截?cái)?/div>
skb_reserve // data+分片后移,只允許對(duì)空緩存使用

skb_queue_head_init  // 初始化struct sk_buff_head
skb_queue_head  // list頭部添加一個(gè)packet
skb_queue_tail  // list尾部添加一個(gè)packet
skb_dequeue      // 移去list頭部第一個(gè)packet(返回移除的packet指針,內(nèi)存沒(méi)有收回?)
skb_dequeue_tail // 移去list尾部第一個(gè)packet  
skb_queue_purge  // 清空l(shuí)ist中的節(jié)點(diǎn)
skb_append      // 在list的給定packet后append一個(gè)packet
skb_insert      // 在list的給定packet前insert一個(gè)packet



#############
alloc_skb
#############
<linux-2.6.36/net/core/skbuff.c>

__alloc_skb()分析:

申請(qǐng)struct skb_buff skb空間, 必須從CACHE中申請(qǐng)(skbuff_fclone_cache或skbuff_head_cache).
申請(qǐng)數(shù)據(jù)區(qū)內(nèi)存, 使用kmalloc. 數(shù)據(jù)區(qū)包括字節(jié)對(duì)齊后的size和struct skb_shared_info.
填充skb結(jié)構(gòu).
填充分片信息struct skb_shared_info shinfo.
如果頭部skb_buff是從skbuff_fclone_cache中申請(qǐng)的,do something... //TODO

********

__alloc_skb()完成時(shí),內(nèi)存狀態(tài):

skb           struct sk_buff     <-| skb->truesize
              --------------       |
data          size                 |
skb->data                          |
skb->head                          |
              -------------      <-|
              struct skb_shared_info

tail 和 end是偏移量
skb->tail = skb->data - skb->head = 0
skb->end = skb->tail + skb->size

********

head,data是指針,tail,end是偏移量。

<linux-2.6.36/include/linux/skbuff.h>
#ifdef NET_SKBUFF_DATA_USES_OFFSET
typedef unsigned int sk_buff_data_t;
#else
typedef unsigned char *sk_buff_data_t;
#endif

struct sk_buff {
    /* These elements must be at the end, see alloc_skb() for details.  */
    sk_buff_data_t      tail;
    sk_buff_data_t      end;
    unsigned char       *head,
    *data;

    unsigned int        truesize;
    atomic_t        users;
};

*********
skb,shinfo的引用計(jì)數(shù)都是原子類型atomic_t.
volatile只讀內(nèi)存,不讀寄存器. 


#############
kfree_skb
#############
內(nèi)存屏障

軟件可通過(guò)讀寫屏障強(qiáng)制內(nèi)存訪問(wèn)次序.所有在設(shè)置讀寫屏障之前發(fā)起的內(nèi)存訪問(wèn),必須先于在設(shè)置屏障之后發(fā)起的內(nèi)存訪問(wèn)之前完成,確保內(nèi)存訪問(wèn)按程序的順序完成.

smp_mb()    適用于多處理器的內(nèi)存屏障。
smp_rmb()   適用于多處理器的讀內(nèi)存屏障。

http://blogold.chinaunix.net/u3/93713/showart_2061476.html


#############
skb_put
#############
BUG() BUGON()

BUG()和BUG_ON()被用來(lái)提供斷言,當(dāng)被調(diào)用時(shí)會(huì)引發(fā)oops,導(dǎo)致棧的回溯和錯(cuò)誤信息的打印.
大部分體系結(jié)構(gòu)把BUG()定義成某種非法操作.
斷言某種情況不該發(fā)生:
if(bad_thing):
    BUG();
或者更好的形式:
BUG_ON(bad_thing);

******
frag_list

如果傳輸層將數(shù)據(jù)包分片了,就會(huì)把這些數(shù)據(jù)包放到skb的frag_list鏈表中.

******
skb_put 在尾部擴(kuò)展used data area.常被用于給數(shù)據(jù)塊添加協(xié)議尾部.
其實(shí)就修改了tail偏移量和len值,別的什么都沒(méi)做.
設(shè)了倆斷言:
數(shù)據(jù)包不能有分片;
擴(kuò)展數(shù)據(jù)區(qū)不能超出skb->end.


#############
skb_trim
#############
struct sk_buff

truesize = skb + data
len = data + 分片
data+len = 分片

posted on 2011-03-24 18:07 小默 閱讀(943) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 289
  • 文章 - 0
  • 評(píng)論 - 84
  • 引用 - 0

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

  •  

積分與排名

  • 積分 - 297095
  • 排名 - 89

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲午夜久久久久久久久电影网| 亚洲午夜久久久久久久久电影网| 亚洲精品影视在线观看| 国产日韩av在线播放| 欧美久久婷婷综合色| 久久久五月天| 久久综合久久综合九色| 久久女同精品一区二区| 久久精品av麻豆的观看方式| 亚洲综合三区| 免费人成网站在线观看欧美高清| 久久人人爽国产| 久久亚洲一区二区| 欧美精品www| 国产精品手机视频| 亚洲第一主播视频| 亚洲欧美日韩成人| 久久av资源网| 国产精品成人一区二区| 精品不卡一区| 99re在线精品| 亚洲视频综合在线| 麻豆久久婷婷| 羞羞答答国产精品www一本| 欧美精品18+| 亚洲国产精品视频| 美女脱光内衣内裤视频久久影院 | 欧美精品 日韩| 欧美成人按摩| 欧美资源在线观看| 久久伊人亚洲| 亚洲免费在线视频| 亚洲国产免费| 亚洲国产高清在线观看视频| 亚洲一级片在线看| 欧美午夜一区二区福利视频| 一区久久精品| 久久中文字幕一区| 亚洲男人的天堂在线观看| 欧美激情一区二区三区四区| 狠狠综合久久| 久久久久国产精品人| 一本大道久久a久久综合婷婷| 午夜久久福利| 韩国精品在线观看| 久久性色av| 久久精品夜色噜噜亚洲aⅴ| 亚洲精品女人| 日韩视频一区| 亚洲第一在线综合在线| 欧美久色视频| 亚洲国产精品ⅴa在线观看 | 久久亚洲精品一区二区| 亚洲天堂男人| 亚洲国产高清在线观看视频| 久久成人综合网| 在线观看欧美精品| 欧美激情第五页| 国产欧美日韩视频一区二区三区 | 国产亚洲毛片在线| 一本色道久久综合亚洲精品不 | 国产伦精品一区二区三区| 91久久精品国产91性色tv| 亚洲电影中文字幕| 久久亚洲综合色| 亚洲激情校园春色| 亚洲视频在线观看网站| 亚洲电影免费在线观看| 亚洲国产精品久久人人爱蜜臀| 一区二区免费在线观看| 久久精品国产亚洲一区二区| 亚洲第一福利视频| 激情综合色综合久久| 亚洲福利视频一区| 国产精品日韩| 亚洲伦伦在线| 久久中文在线| 国产精品一区免费观看| 亚洲尤物视频网| 亚洲精品日本| 欧美日本韩国在线| 久久久久青草大香线综合精品| 欧美日本国产精品| 一区二区三区精品国产| 亚洲与欧洲av电影| 欧美日韩免费视频| 亚洲欧美日韩精品久久久| 欧美日韩国产123| 日韩一区二区福利| 亚洲精品日韩精品| 免费在线看成人av| 欧美77777| 一道本一区二区| 国产精品视频九色porn| 欧美激情一区二区在线| 亚洲精品裸体| 国产精一区二区三区| 午夜在线a亚洲v天堂网2018| 久久久久久穴| 亚洲乱码精品一二三四区日韩在线 | 国产精品你懂的在线欣赏| 亚洲第一视频网站| 亚洲少妇最新在线视频| 国产精品一区二区在线观看| 欧美专区在线| 久久伊人一区二区| 亚洲专区一区二区三区| 欧美精品 日韩| 国内精品国产成人| 欧美高清视频在线| 亚洲影院污污.| 久久综合图片| 亚洲一区二区三区影院| 韩国精品在线观看| 国产日韩欧美麻豆| 欧美精品久久久久久久免费观看 | 欧美va亚洲va日韩∨a综合色| 亚洲天天影视| 国产精品一区免费视频| 久久深夜福利免费观看| 亚洲宅男天堂在线观看无病毒| 美女91精品| 免费看精品久久片| aa成人免费视频| 在线观看国产成人av片| 欧美精品在线视频观看| 久久精品亚洲一区二区| 欧美一级专区免费大片| 免费永久网站黄欧美| 久久久久综合网| 亚洲一二三区在线| 亚洲一二三区视频在线观看| 99re国产精品| 亚洲黄网站黄| 亚洲国产精品久久久久久女王| 欧美日韩国产一区精品一区 | 欧美黄色影院| 欧美一级淫片aaaaaaa视频| 一区二区三区产品免费精品久久75| 欧美一级黄色录像| 亚洲影音一区| 亚洲电影专区| 在线精品高清中文字幕| 国产三级欧美三级| 亚洲一区二区四区| 欧美成人精品影院| 欧美成在线视频| 亚洲国产精品久久91精品| 亚洲午夜在线| 欧美一区三区三区高中清蜜桃| 欧美日韩综合| 午夜精品久久久久久久久久久久 | 亚洲韩国精品一区| 欧美专区18| 亚洲国产欧美日韩| 日韩亚洲不卡在线| 国产精品乱子久久久久| 久久国产精品一区二区三区四区 | 亚洲视频一区二区免费在线观看| 久久久久久久久久久久久9999| 久久免费99精品久久久久久| 99成人免费视频| 欧美一区二区免费| 国产午夜精品久久| 欧美 日韩 国产在线| av成人手机在线| 性欧美videos另类喷潮| 国内精品国产成人| 男女精品视频| 久久久99爱| 亚洲精品国产精品国自产观看| 亚洲一区精彩视频| 伊人久久大香线| 国产精品看片资源| 欧美日韩成人在线视频| 久久久久久夜| 一区二区激情视频| 亚洲观看高清完整版在线观看| 亚洲欧美视频在线| 亚洲黄色影院| 欧美黄污视频| 一区二区三区精品久久久| 国产亚洲毛片在线| 欧美日韩在线一区二区三区| 久久精品首页| 亚洲一二三级电影| 亚洲二区免费| 亚洲国产91| 亚洲经典自拍| 91久久在线观看| 亚洲大片在线| 亚洲国产精品免费| 91久久精品国产| 一本色道久久综合一区| 亚洲美女福利视频网站| 亚洲乱码日产精品bd| 亚洲婷婷综合久久一本伊一区| 亚洲一二三级电影| 亚洲欧美自拍偷拍| 欧美日韩在线精品|