This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tsg-service-chaining-…/platform/include/packet_io.h

76 lines
2.1 KiB
C
Raw Normal View History

#ifndef _PACKET_IO_H
#define _PACKET_IO_H
2024-07-16 17:25:55 +08:00
#ifdef __cplusplus
extern "C"
{
#endif
#include <marsio.h>
/******************************************************************************
* Packet IO API for gtest
******************************************************************************/
struct sids
{
sid_t elems[MR_SID_LIST_MAXLEN];
int num;
};
struct route_ctx
{
char data[64];
int len;
};
struct metadata
{
uint64_t session_id;
uint32_t rehash_index;
char *raw_data; // refer to current packet data
int raw_len;
uint16_t l7offset;
uint16_t link_id;
int direction; // 1: E2I; 0: I2E
int is_ctrl_pkt;
int is_decrypted;
struct sids sids;
struct route_ctx route_ctx;
};
int mbuff_get_metadata(marsio_buff_t *rx_buff, struct metadata *meta);
int mbuff_set_metadata(marsio_buff_t *tx_buff, struct metadata *meta);
void vlan_encapsulate(marsio_buff_t *mbuff, int vlan_id, int replace_orig_vlan_header);
struct mr_instance *packet_io_get_mr_instance(struct packet_io *handle);
/******************************************************************************
* Packet IO API for global
******************************************************************************/
struct packet_io *packet_io_create(const char *profile, int thread_num, cpu_set_t *coremask);
void packet_io_destory(struct packet_io *handle);
/******************************************************************************
* Packet IO API for thread
******************************************************************************/
// return 0 for success
// return -1 for error
2023-11-29 09:52:20 +08:00
int packet_io_init(struct packet_io *handle, struct thread_ctx *thread_ctx);
void packet_io_wait(struct packet_io *handle, struct thread_ctx *thread_ctx, int timeout_ms);
// return n_packet_recved
2023-11-29 09:52:20 +08:00
int packet_io_polling_nf(struct packet_io *handle, struct thread_ctx *thread_ctx);
int packet_io_polling_endpoint_l3(struct packet_io *handle, struct thread_ctx *thread_ctx);
int packet_io_polling_endpoint_l2(struct packet_io *handle, struct thread_ctx *thread_ctx);
2024-07-16 17:25:55 +08:00
#ifdef __cplusplus
}
#endif
#endif