freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux-310-kernel-bridge轉(zhuǎn)發(fā)邏輯(留存版)

2025-09-18 09:52上一頁面

下一頁面
  

【正文】 ig_dev)。 pt_prev = ptype。} netif_receive_skb只是對數(shù)據(jù)包進行了RPS的處理,然后調(diào)用__netif_receive_skb。2. Bridge轉(zhuǎn)發(fā)邏輯分析還是先從netif_receive_skb函數(shù)分析,這個函數(shù)算是進入?yún)f(xié)議棧的入口。 Linux kernel bridge轉(zhuǎn)發(fā)邏輯之前分析過linux kernel ,下面分析一下linux kernel 。 /....../}這個函數(shù)在創(chuàng)建netdev vport時將設(shè)備的接收函數(shù)設(shè)置為netdev_frame_hook函數(shù),這也是整個openvswitch的入口函數(shù),從而由bridge邏輯進入OpenvSwitch邏輯。 return ret。ptype_all, list) { if (!ptypedev || ptypedev == skbdev) { if (pt_prev) ret = deliver_skb(skb, pt_prev, orig_dev)。amp。 br_should_route_hook_t *rhook。 return RX_HANDLER_PASS。 struct net_bridge_port *p = br_port_get_rcu(skbdev)。 if (pstate == BR_STATE_LEARNING) goto drop。 } else if ((dst = __br_fdb_get(br, dest, vid)) amp。 IFF_PROMISC) amp。 //skbdev設(shè)置為出口設(shè)備dev skb_forward_csum(skb)。也就出了bridge邏輯。 //vlan處理 skb = br_handle_vlan(tobr, nbp_get_vlan_info(to), skb)。} 我們先看發(fā)往本機協(xié)議棧的函數(shù)br_pass_frame_up。 skb = NULL。amp。 /*更新bridge的mac表,注意vlan id也是參數(shù),說明每個vlan有一個獨立的mac表*/ br_fdb_update(pbr, p, eth_hdr(skb)h_source, vid)。 /* consumed by filter */ } else { *pskb = skb。l br_add_if點擊(此處)折疊或打開int br_add_if(struct net_bridge *br, struct net_device *dev){ /*......*/ err = netdev_rx_handler_register(dev, br_handle_frame, p)。 } } /*根據(jù) skbprotocol傳遞給上層協(xié)議*/ type = skbprotocol。 skb_reset_network_header(skb)。 rcu_read_unlock()。這相對于老式的網(wǎng)橋處理更靈活,有了這個機制也可以在模塊中自行注冊處理函數(shù)。l netdev_rx_handler_register點擊(此處)折疊或打開/** dev: 要注冊接收函數(shù)的dev* rx_handler: 要注冊的接收函數(shù)* rx_handler_data: 指向rx_handler_data使用的數(shù)據(jù)*/int netdev_rx_handler_register(struct net_device *dev, rx_handler_func_t *rx_handler, void *rx_handler_data){ ASSERT_RTNL()。 /*RPS邏輯處理,現(xiàn)在內(nèi)核中使用了RPS機制, 將報文分散到各個cpu的接收隊列中進行負載均衡處理*/ ifdef CONFIG_RPS if (static_key_false(amp。 rx_handler_func_t *rx_handler。 } switch (rx_handler(amp。 } else {drop: atomic_long_inc(amp。 /*獲取dev對應的bridge port*/ p = br_port_get_rcu(skbdev)。default:drop: kfree_skb(skb)。 u16 vid = 0。 dst = NULL。 } if (skb) { if (dst) { dstused = jiffies。 if (!skb) return NET_RX_DROP。amp。 } else { skb_push(skb, ETH_HLEN)。 skbdev = brdev。 //轉(zhuǎn)發(fā)給目的接口 } else br_flood_forward(br, skb, skb2)。 else if (is_mul
點擊復制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1