-
Notifications
You must be signed in to change notification settings - Fork 55
/
pkgoper.h
129 lines (103 loc) · 3.71 KB
/
pkgoper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/**
@file pkgoper.h
@date 2014/07/31
@author WangChunyan
@version 1.0.0
@brief 去广告应用中数据包操作接口
@note
数据包操作接口,包括组装数据包,发送数据包等。
*/
#ifndef _PKG_OPER_H_
#define _PKG_OPER_H_
#define HTTP_RESPONSE_HEAD_NOT_FIND "HTTP/1.1 302 Found\r\n"
#define HTTP_RESPONSE_HEAD_NOT_FIND_LEN 20
#define HTTP_RESPONSE_LOCATION "Location: "
#define HTTP_RESPONSE_LOCATION_LEN 10
#define HTTP_RESPONSE_END "\r\n"
#define HTTP_RESPONSE_END_LEN 2
//#define HTTP_RESPONSE_CONNECTION "Connection: closed"
/* HTTP 404 代码 */
#define HTTP_NOT_FOUND_STR "HTTP/1.1 404 Not Found\r\n" \
"Server: QWS\r\n" \
"Content-Type: text/html\r\n" \
"Content-Length: 130\r\n" \
"Connection: keep-alive\r\n\r\n" \
"<html><head><title>404 Not Found</title></head><body><center><h1>404 Not Found</h1></center><hr><center>QWS</center></body></html>"
#define HTTP_NOT_FOUND_STR_LEN 239
/* HTTP 502 代码 */
#define HTTP_BAD_GATEWAY "HTTP/1.1 502 Bad Gateway\r\n" \
"Server: QWS\r\n" \
"Content-Type: text/html\r\n" \
"Content-Length: 134\r\n" \
"Connection: keep-alive\r\n\r\n" \
"<html><head><title>502 Bad Gateway</title></head><body><center><h1>502 Bad Gateway</h1></center><hr><center>QWS</center></body></html>"
#define HTTP_BAD_GATEWAY_STR_LEN 245
/* HTTP 302 代码*/
#define HTTP_FIND_LOCAL_STR "HTTP/1.1 302 Found\r\nLocation: http://127.0.0.1/\r\n\r\n"
#define HTTP_FIND_LOCAL_STR_LEN 51
/* lan interface */
#define ETH_CLIENT_LAN0 "eth1"
#define ETH_CLIENT_LAN1 "eth1"
/* wlan interface */
#define ETH_CLIENT_WLAN0 "vlan0"
#define ETH_CLIENT_WLAN1 "vlan1"
/**
网卡信息结构体
主要在往网卡发送数据包时使用,包括有线和无线网卡。
*/
struct client_nicname
{
int index; ///< 网卡索引
char *name; ///< 网卡名称
};
/**
根据tcp数据生成数据包
根据tcp数据,生成数据包,并填充 mac/ip/tcp 头部信息
@param skb 原始的sk_buff结构地址
@param names 网卡名称结构首地址
@param num 网卡个数
@param tcpdata tcp数据地址
@param tcpdatalen tcp数据长度
@return 成功返回数据包地址,失败返回NULL。
*/
struct sk_buff *pkg_skbuff_generate(struct sk_buff *skb, struct client_nicname *names, int num, char *tcpdata, int tcpdatalen);
/**
发送tcp数据包
@param skb 原始的sk_buff结构地址
@param tcpdata tcp数据地址
@param tcpdatalen tcp数据长度
@return 成功返回 ADV_KILL_OK,失败返回 ADV_KILL_FAIL。
*/
int pkg_skbuff_dev_xmit(struct sk_buff *skb, char *tcpdata, int tcpdatalen);
/**
根据Host生成location字符串
@param httplen 生成的location长度
@param host Host字符串内容
@return 成功返回location地址,失败返回NULL。
*/
char *http_location_str_generate(int *httplen, char *host);
/**
根据location发送302消息
@param skb 原始的sk_buff结构地址
@param location 需要发送的location内容
@return 成功返回 ADV_KILL_OK,失败返回 ADV_KILL_FAIL。
*/
int send_client_location(struct sk_buff *skb, char *location);
/**
发送404消息
@param skb 原始的sk_buff结构地址
@return 成功返回 ADV_KILL_OK,失败返回 ADV_KILL_FAIL。
*/
int send_client_notfound(struct sk_buff *skb);
/**
发送502消息
@param skb 原始的sk_buff结构地址
@return 成功返回 ADV_KILL_OK,失败返回 ADV_KILL_FAIL。
*/
int send_client_bad_gateway(struct sk_buff *skb);
/**
重新对IP头和TCP头进行校验
@param skb 原始的sk_buff结构地址
*/
void refresh_skb_checksum(struct sk_buff *skb);
#endif