#pragma once #ifdef __cplusplus extern "C" { #endif #include "stellar/layer.h" #include "stellar/packet.h" #define PACKET_MAX_LAYERS 32 #define MAX_ROUTE_CTX 64 struct route_ctx { char data[MAX_ROUTE_CTX]; int used; }; struct metadata { struct route_ctx route_ctx; struct sids sids; uint64_t session_id; uint64_t domain_id; uint16_t link_id; int is_ctrl; enum packet_direction direction; enum packet_action action; const void *origin_ctx; }; struct raw_layer { enum layer_proto proto; const char *hdr_ptr; // header pointer const char *pld_ptr; // payload pointer uint16_t hdr_offset; // header offset from data_ptr uint16_t hdr_len; // header length uint16_t pld_len; // payload length }; struct packet { struct raw_layer layers[PACKET_MAX_LAYERS]; struct raw_layer *frag_layer; // fragment layer int8_t layers_used; int8_t layers_size; int8_t need_free; const char *data_ptr; uint16_t data_len; uint16_t trim_len; // trim eth padding struct metadata meta; }; #ifdef __cplusplus } #endif