`
文章列表
linux内核太构造数据包的第二种方式就是直接调用dev_queue_xmit函数,将构造完毕的数据包直接发送到网卡驱动。从NF框架来看,该函数的调用是在 POSTROUTING点之后了,也可以理解为直接通过调用二层的发送函数,将三层构造的数据 ...
转自:http://blog.chinaunix.net/u/33048/showart_2043789.html,作者:Godbach 一、构造数据包简析 这里并不详细介绍如何在内核中构造数据包,下文如有需要会在适当的位置进行分析。这里简单的分析讲一下内核态基于Netfilter框架构造数据包的方式。        内核中可以用到的构造数据包的方式,个人认为可以分为两种。 其一,我们直接用alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基于当前数据包的skb,调用skb_copy_expand()函数等新申请一个nskb,并且拷贝skb的内容。 其二,也 ...
/**************************************************** * dev_alloc_skb - 分配内存为接受的包 * @length: 分配的长度 * GFP_ATOMIC:原子类型,此函数经常用于终端上下文中 ***************************************************/ struct sk_buff *dev_alloc_skb(unsigned int length) { return __dev_alloc_skb(length, G ...
#define ETH_ALEN 6 /* Octets in one ethernet addr */ #define ETH_HLEN 14 /* Total octets in header. */ #define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ #define ETH_DATA_LEN 1500 /* Max. octets in payload ...
#include <linux/module.h> #include <linux/init.h> #include <linux/netfilter_ipv4.h> #include <linux/netfilter.h> #include <linux/ip.h> static unsigned int skb_buff_ops(unsigned int hooknum, struct sk_buff *skb, con ...
Global site tag (gtag.js) - Google Analytics