summaryrefslogtreecommitdiff
path: root/shaping/include/shaper_marsio.h
blob: c530ee295d6a171b7bfb23112b8a7d17fdef46a0 (plain)
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
#pragma once

#include <marsio.h>
#include "shaper.h"
#include "utils.h"

#define SHAPER_MARSIO_RX_BRUST_MAX 128

enum ctr_pkt_index
{
    INDEX_TSYNC = 0,
    INDEX_SESSION_ID,
    INDEX_STATE,
    INDEX_METHOD,
    INDEX_KEY_SCE,
    INDEX_SCE,
    INDEX_KEY_SHAPER,
    INDEX_SHAPER,
    INDEX_KEY_PROXY,
    INDEX_PROXY,
    INDEX_MAX
};

struct shaping_marsio_info
{
    struct mr_instance *instance;
    struct mr_vdev *mr_dev;
    struct mr_sendpath *mr_path;
    int rx_brust_max;
};

enum session_state
{
    SESSION_STATE_OPENING = 1,
    SESSION_STATE_CLOSING = 2,
    SESSION_STATE_ACTIVE = 3,
    SESSION_STATE_RESETALL = 4,
};

struct ctrl_pkt_data
{
    uint64_t session_id;
    enum session_state state;
    uuid_t shaping_rule_uuids[SHAPING_RULE_NUM_MAX];
    int shaping_rule_num;
};

struct shaping_marsio_info* shaper_marsio_init(struct shaping_system_conf *sys_conf);
void shaper_marsio_destroy(struct shaping_marsio_info *marsio_info);
int shaper_marsio_pkt_metadata_get(marsio_buff_t *rx_buff, struct metadata *meta, int is_ctrl_buff, struct raw_pkt_parser *raw_parser);
int shaper_marsio_ctrl_pkt_data_parse(struct ctrl_pkt_data *ctrl_data, const char *data, size_t length);
void shaper_marsio_metadata_deep_copy(struct metadata *dst, struct metadata *src);