2021-09-14 15:50:53 +08:00
|
|
|
|
#ifndef __MESA_JUMP_LAYER_H_
|
|
|
|
|
|
#define __MESA_JUMP_LAYER_H_ 1
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#include "stream.h"
|
|
|
|
|
|
#include <netinet/ip.h>
|
|
|
|
|
|
#include <netinet/ip6.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const char *MESA_jump_layer_get_last_error(void);
|
|
|
|
|
|
|
2021-09-15 10:36:02 +08:00
|
|
|
|
|
2021-09-14 15:50:53 +08:00
|
|
|
|
/*
|
2021-09-15 10:36:02 +08:00
|
|
|
|
CHN : <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ͷ<EFBFBD><EFBFBD>ƫ<EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
|
raw_data: <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>;
|
|
|
|
|
|
raw_layer_type: <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: enum addr_type_t ;
|
|
|
|
|
|
expect_layer_type: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: enum addr_type_t ;
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:
|
|
|
|
|
|
NULL: <EFBFBD>˵<EFBFBD>ַ;
|
|
|
|
|
|
NON-NULL: <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ.
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>赱ǰ<EFBFBD><EFBFBD>ΪEthernet, <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ַΪthis_layer_hdr, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>IPv6<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>:
|
|
|
|
|
|
struct ip6_hdr *ip6_header;
|
|
|
|
|
|
ip6_header = MESA_net_jump_to_layer(this_layer_hdr, ADDR_TYPE_MAC, ADDR_TYPE_IPV6);
|
2021-09-14 15:50:53 +08:00
|
|
|
|
*/
|
2021-09-14 17:33:59 +08:00
|
|
|
|
const void *MESA_jump_layer(const void *raw_data, int raw_layer_type, int expect_layer_type);
|
2021-09-14 15:50:53 +08:00
|
|
|
|
|
2021-09-15 10:36:02 +08:00
|
|
|
|
/*
|
|
|
|
|
|
MESA_jump_layer_greedy<EFBFBD><EFBFBD>MESA_jump_layer<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵,
|
|
|
|
|
|
MESA_jump_layer<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>expect_layer_type;
|
|
|
|
|
|
MESA_jump_layer_greedy<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>expect_layer_type;
|
|
|
|
|
|
*/
|
2021-09-14 17:33:59 +08:00
|
|
|
|
const void *MESA_jump_layer_greedy(const void *raw_data, int raw_layer_type, int expect_layer_type);
|
2021-09-14 15:50:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-09-15 10:36:02 +08:00
|
|
|
|
/* <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>Ľӿ<C4BD><D3BF><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC> */
|
|
|
|
|
|
const void *MESA_net_jump_to_layer(const void *raw_data, int raw_layer_type, int expect_layer_type);
|
|
|
|
|
|
const void *MESA_net_jump_to_layer_greedy(const void *raw_data, int raw_layer_type, int expect_layer_type);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const char *MESA_jump_layer_ipv4_ntop(const struct ip *ip4_hdr, char *out_buf, int buf_len );
|
2021-09-14 15:50:53 +08:00
|
|
|
|
const char *MESA_jump_layer_ipv6_ntop(const struct ip6_hdr *ip6_hdr, char *out_buf, int buf_len);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
}
|
2021-09-15 10:36:02 +08:00
|
|
|
|
#endif
|