linux協議棧skb操作函式
阿新 • • 發佈:2019-02-12
unsigned char *raw;
} nh;
union
{
struct ethhdr *ethernet;
unsigned char *raw;
} mac;
以上三個union結構依次是傳輸層,網路層,鏈路層的頭部結構指標。這些指
針在網路報文進入這一層時被賦值,其中raw是一個無結構的字元指標,用於
擴充套件的協議。
struct dst_entry *dst; //此報文的路由,路由確定後賦此值
char cb[48]; //用於在協議棧之間傳遞引數,引數內容的涵義由
使用它的函式確定。
unsigned int len;
此報文的長度,這是指網路報文在不同協議層中的長度,包括頭部和資料。在
協議棧的不同層,這個長度是不同的。
unsigned char is_clone,
cloned,
以上兩個變數描述此控制結構是否是clone的控制結構。一個網路報文可以對
應多個控制結構,其中只有一個是原始的結構,其他的都是clone出來的。由
於可能存在多個控制結構,所以在釋放網路報文時要確定它所有的控制結構都
已被釋放。
pkt_type,
網路報文的型別,常見的有PACKET_HOST,代表發給本機的報文;還有
PACKET_OUTGOING,代表本機發出的報文。
unsigned short protocol; //鏈路層協議
unsigned int truesize; //此報文儲存區的長度,這個長度是16位元組
對齊的,一般要比報文的長度大。
unsigned char *head;
unsigned char *data;
unsigned char *tail;
unsigned char *end;
以上四個變數指向此報文儲存區,具體的涵義後面會解釋。
__u32 fwmark; //防火牆在報文中做的標記
};
} nh;
union
{
struct ethhdr *ethernet;
unsigned char *raw;
} mac;
以上三個union結構依次是傳輸層,網路層,鏈路層的頭部結構指標。這些指
針在網路報文進入這一層時被賦值,其中raw是一個無結構的字元指標,用於
擴充套件的協議。
struct dst_entry *dst; //此報文的路由,路由確定後賦此值
char cb[48]; //用於在協議棧之間傳遞引數,引數內容的涵義由
使用它的函式確定。
unsigned int len;
此報文的長度,這是指網路報文在不同協議層中的長度,包括頭部和資料。在
協議棧的不同層,這個長度是不同的。
unsigned char is_clone,
cloned,
以上兩個變數描述此控制結構是否是clone的控制結構。一個網路報文可以對
應多個控制結構,其中只有一個是原始的結構,其他的都是clone出來的。由
於可能存在多個控制結構,所以在釋放網路報文時要確定它所有的控制結構都
已被釋放。
pkt_type,
網路報文的型別,常見的有PACKET_HOST,代表發給本機的報文;還有
PACKET_OUTGOING,代表本機發出的報文。
unsigned short protocol; //鏈路層協議
unsigned int truesize; //此報文儲存區的長度,這個長度是16位元組
對齊的,一般要比報文的長度大。
unsigned char *head;
unsigned char *data;
unsigned char *tail;
unsigned char *end;
以上四個變數指向此報文儲存區,具體的涵義後面會解釋。
__u32 fwmark; //防火牆在報文中做的標記
};