TSG-13837 decrypted traffic steering适配mrzcpd新增MR_BUFF_USER_0类型
This commit is contained in:
@@ -15,12 +15,13 @@
|
|||||||
#include "ctrl_packet.h"
|
#include "ctrl_packet.h"
|
||||||
#include "global_metrics.h"
|
#include "global_metrics.h"
|
||||||
|
|
||||||
|
#define RX_BURST_MAX 128
|
||||||
|
#define MR_MASK_DECRYPTED 0x01
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* struct
|
* struct
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#define RX_BURST_MAX 128
|
|
||||||
|
|
||||||
struct config
|
struct config
|
||||||
{
|
{
|
||||||
int bypass_all_traffic;
|
int bypass_all_traffic;
|
||||||
@@ -91,13 +92,20 @@ int mbuff_get_metadata(marsio_buff_t *rx_buff, struct metadata *meta)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
meta->is_ctrl_pkt = 0;
|
meta->is_ctrl_pkt = 0;
|
||||||
#if 0
|
uint16_t user_data = 0;
|
||||||
if (marsio_buff_get_metadata(rx_buff, MR_IS_DECRYPTED, &(meta->is_decrypted), sizeof(meta->is_decrypted)) <= 0)
|
if (marsio_buff_get_metadata(rx_buff, MR_BUFF_USER_0, &user_data, sizeof(user_data)) <= 0)
|
||||||
{
|
{
|
||||||
LOG_ERROR("%s: unable to get is_decrypted from metadata", LOG_TAG_PKTIO);
|
LOG_ERROR("%s: unable to get is_decrypted from metadata", LOG_TAG_PKTIO);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
if (user_data & MR_MASK_DECRYPTED)
|
||||||
|
{
|
||||||
|
meta->is_decrypted = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta->is_decrypted = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
meta->sids.num = marsio_buff_get_sid_list(rx_buff, meta->sids.elems, sizeof(meta->sids.elems) / sizeof(meta->sids.elems[0]));
|
meta->sids.num = marsio_buff_get_sid_list(rx_buff, meta->sids.elems, sizeof(meta->sids.elems) / sizeof(meta->sids.elems[0]));
|
||||||
@@ -143,14 +151,17 @@ int mbuff_set_metadata(marsio_buff_t *tx_buff, struct metadata *meta)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO
|
uint16_t user_data = 0;
|
||||||
#if 0
|
if (meta->is_decrypted)
|
||||||
if (marsio_buff_set_metadata(tx_buff, MR_IS_DECRYPTED, &(meta->is_decrypted), sizeof(meta->is_decrypted)) != 0)
|
{
|
||||||
|
user_data = MR_MASK_DECRYPTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (marsio_buff_set_metadata(tx_buff, MR_BUFF_USER_0, &user_data, sizeof(user_data)) != 0)
|
||||||
{
|
{
|
||||||
LOG_ERROR("%s: unable to set is_decrypted for metadata", LOG_TAG_PKTIO);
|
LOG_ERROR("%s: unable to set is_decrypted for metadata", LOG_TAG_PKTIO);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta->sids.num > 0)
|
if (meta->sids.num > 0)
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ struct mrb_metadata
|
|||||||
uint16_t port_egress;
|
uint16_t port_egress;
|
||||||
|
|
||||||
uint16_t link_db_index;
|
uint16_t link_db_index;
|
||||||
|
uint16_t user_data_0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mock_marsio_buff_t
|
struct mock_marsio_buff_t
|
||||||
@@ -171,6 +172,9 @@ int marsio_buff_set_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type,
|
|||||||
case MR_BUFF_PAYLOAD_OFFSET:
|
case MR_BUFF_PAYLOAD_OFFSET:
|
||||||
mrb_metadata->payload_offset = *(uint16_t *)data;
|
mrb_metadata->payload_offset = *(uint16_t *)data;
|
||||||
return 0;
|
return 0;
|
||||||
|
case MR_BUFF_USER_0:
|
||||||
|
mrb_metadata->user_data_0 = *(uint16_t *)data;
|
||||||
|
return 0;
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -224,6 +228,13 @@ int marsio_buff_get_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type,
|
|||||||
}
|
}
|
||||||
*(uint16_t *)(data) = (uint16_t)mrb_metadata->payload_offset;
|
*(uint16_t *)(data) = (uint16_t)mrb_metadata->payload_offset;
|
||||||
return sizeof(uint16_t);
|
return sizeof(uint16_t);
|
||||||
|
case MR_BUFF_USER_0:
|
||||||
|
if (sz_data < sizeof(uint16_t))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
*(uint16_t *)(data) = (uint16_t)mrb_metadata->user_data_0;
|
||||||
|
return sizeof(uint16_t);
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ enum mr_buff_metadata_type
|
|||||||
MR_BUFF_ROUTE_CTX = 2,
|
MR_BUFF_ROUTE_CTX = 2,
|
||||||
MR_BUFF_SESSION_ID = 3,
|
MR_BUFF_SESSION_ID = 3,
|
||||||
MR_BUFF_DIR = 4,
|
MR_BUFF_DIR = 4,
|
||||||
MR_BUFF_PAYLOAD_OFFSET = 5
|
MR_BUFF_PAYLOAD_OFFSET = 5,
|
||||||
|
MR_BUFF_USER_0 = 254,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mr_instance *marsio_create();
|
struct mr_instance *marsio_create();
|
||||||
|
|||||||
Reference in New Issue
Block a user