• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一個險惡bug的深入分析(2)

    發表于:2012-06-06來源:伯樂在線作者:不詳點擊數: 標簽:bug
    skb_bond函數會判斷skb是否屬于bond。如果是,那么函數要確保skb來自bond上的一個活躍設備。這個檢查是為了防止高層協議為某個bond重復進行配置分配。如果

      skb_bond函數會判斷skb是否屬于bond。如果是,那么函數要確保skb來自bond上的一個活躍設備。這個檢查是為了防止高層協議為某個bond重復進行配置分配。如果skb通過了這些檢查,skb的dev指針會被賦值為指向bond的設備指針,同時netif_receive_skb函數會返回原設備指針。

      從概念上理解,你可以把上述代碼等價于如下偽代碼:

      起始狀態:

    1
    2
    3
    4
    5
    6
    7
    orig_dev = NULL
    skb->dev = "eth0"
     
    orig_dev = skb->dev
    if skb->dev 是bond的一部分:
      if skb->dev 是bond上的活躍設備
        skb->dev = bond

      結束狀態:

    1
    2
    orig_dev = "eth0"
    skb->dev = bond

      因此,看上去skb消息被當成發自一個bond中的設備而不是物理設備。

      如果我們繼續跟蹤netif_receive_skb函數,我們會看到代碼將skb轉給了pcap處理:

    1
    2
    3
    4
    5
    6
    7
    8
    list_for_each_entry_rcu(ptype, &ptype_all, list) {
      if (!ptype->dev || ptype->dev == skb->dev) {
        if (pt_prev)
          ret = deliver_skb(skb, pt_prev, orig_dev);
     
        pt_prev = ptype;
      }
    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>