嵌入式linux中文站在线图书

Previous Page
Next Page

21.2. Interface to the Neighboring Subsystem

As shown in Figure 18-1 in Chapter 18, transmissions end with a call to ip_finish_output. The latter is a simple wrapper for a Netfilter hook point. Note that ip_finish_output does not follow the naming convention do_something + do_something_finish, but instead the convention do_something + do_something2. ip_finish_output2 is described in the section "Interaction Between Neighboring Protocols and L3 Transmission Functions" in Chapter 27.

    int ip_finish_output(struct sk_buff *skb)
    {
        struct net_device *dev = skb->dst->dev;

        skb->dev = dev;
        skb->protocol = _ _constant_htons(ETH_P_IP);

        return NF_HOOK(PF_INET, NF_IP_POST_ROUTING, skb, NULL, dev,
                   ip_finish_output2);
    }

When everything is finally in place (including the L2 header), the dev_queue_xmit function is called (via hh->hh_output or dst->neighbour->output) to do the "hard job" of transmission. We already discussed in detail how that function works in Chapter 11.


Previous Page
Next Page