feature: add packet_manager API definition
This commit is contained in:
@@ -171,17 +171,8 @@ enum packet_action
|
|||||||
{
|
{
|
||||||
PACKET_ACTION_FORWARD = 0,
|
PACKET_ACTION_FORWARD = 0,
|
||||||
PACKET_ACTION_DROP = 1,
|
PACKET_ACTION_DROP = 1,
|
||||||
PACKET_ACTION_FAST_FORWARD = 2,
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
void packet_mark_as_drop(struct packet *pkt, bool drop);
|
|
||||||
|
|
||||||
void packet_free(struct packet *pkt);
|
|
||||||
|
|
||||||
|
|
||||||
void packet_set_action(struct packet *pkt, enum packet_action action);
|
void packet_set_action(struct packet *pkt, enum packet_action action);
|
||||||
enum packet_action packet_get_action(const struct packet *pkt);
|
enum packet_action packet_get_action(const struct packet *pkt);
|
||||||
|
|
||||||
@@ -194,6 +185,15 @@ uint16_t packet_get_raw_len(const struct packet *pkt);
|
|||||||
const char *packet_get_payload(const struct packet *pkt);
|
const char *packet_get_payload(const struct packet *pkt);
|
||||||
uint16_t packet_get_payload_len(const struct packet *pkt);
|
uint16_t packet_get_payload_len(const struct packet *pkt);
|
||||||
|
|
||||||
|
enum packet_stage
|
||||||
|
{
|
||||||
|
PACKET_STAGE_PREROUTING,
|
||||||
|
PACKET_STAGE_INPUT,
|
||||||
|
PACKET_STAGE_FORWARD,
|
||||||
|
PACKET_STAGE_OUTPUT,
|
||||||
|
PACKET_STAGE_POSTROUTING,
|
||||||
|
PACKET_STAGE_MAX,
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
25
include/stellar/packet_manager.h
Normal file
25
include/stellar/packet_manager.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "packet.h"
|
||||||
|
|
||||||
|
struct packet_manager;
|
||||||
|
struct packet_manager_schema;
|
||||||
|
struct packet_manager_runtime;
|
||||||
|
|
||||||
|
struct packet_manager_schema *packet_manager_get_schema(struct packet_manager *pkt_mgr);
|
||||||
|
struct packet_manager_runtime *packet_manager_get_runtime(struct packet_manager *pkt_mgr, uint16_t thr_idx);
|
||||||
|
|
||||||
|
typedef void on_packet_stage_callback(enum packet_stage stage, struct packet *pkt, void *args);
|
||||||
|
int packet_manager_schema_add_subscriber(struct packet_manager_schema *schema, enum packet_stage stage, on_packet_stage_callback cb, void *args);
|
||||||
|
|
||||||
|
void packet_manager_runtime_take_packet(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt);
|
||||||
|
void packet_manager_runtime_schedule_packet(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt, enum packet_stage stage);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user