@@ -14,7 +14,7 @@ extern "C" {
14
14
}
15
15
16
16
#include " swss/logger.h"
17
- #include " ../ common/saiserialize.h"
17
+ #include " common/saiserialize.h"
18
18
19
19
#define MAX_LIST_COUNT 128
20
20
@@ -37,6 +37,69 @@ extern "C" {
37
37
38
38
#define StringifyEnum (x ) ((std::is_enum<x>::value) ? #x : 0 )
39
39
40
+ /*
41
+ typedef enum _sai_attr_serialization_type_t
42
+ {
43
+ SAI_SERIALIZATION_TYPE_BOOL,
44
+ SAI_SERIALIZATION_TYPE_CHARDATA,
45
+ SAI_SERIALIZATION_TYPE_UINT8,
46
+ SAI_SERIALIZATION_TYPE_INT8,
47
+ SAI_SERIALIZATION_TYPE_UINT16,
48
+ SAI_SERIALIZATION_TYPE_INT16,
49
+ SAI_SERIALIZATION_TYPE_UINT32,
50
+ SAI_SERIALIZATION_TYPE_INT32,
51
+ SAI_SERIALIZATION_TYPE_UINT64,
52
+ SAI_SERIALIZATION_TYPE_INT64,
53
+ SAI_SERIALIZATION_TYPE_MAC,
54
+ SAI_SERIALIZATION_TYPE_IP4,
55
+ SAI_SERIALIZATION_TYPE_IP6,
56
+ SAI_SERIALIZATION_TYPE_IP_ADDRESS,
57
+ SAI_SERIALIZATION_TYPE_OBJECT_ID,
58
+ SAI_SERIALIZATION_TYPE_OBJECT_LIST,
59
+ SAI_SERIALIZATION_TYPE_UINT8_LIST,
60
+ SAI_SERIALIZATION_TYPE_INT8_LIST,
61
+ SAI_SERIALIZATION_TYPE_UINT16_LIST,
62
+ SAI_SERIALIZATION_TYPE_INT16_LIST,
63
+ SAI_SERIALIZATION_TYPE_UINT32_LIST,
64
+ SAI_SERIALIZATION_TYPE_INT32_LIST,
65
+ SAI_SERIALIZATION_TYPE_UINT32_RANGE,
66
+ SAI_SERIALIZATION_TYPE_INT32_RANGE,
67
+ SAI_SERIALIZATION_TYPE_VLAN_LIST,
68
+
69
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_BOOL,
70
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8,
71
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_INT8,
72
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT16,
73
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_INT16,
74
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_INT32,
75
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT32,
76
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_MAC,
77
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_IP4,
78
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_IP6,
79
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_OBJECT_ID,
80
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_OBJECT_LIST,
81
+ SAI_SERIALIZATION_TYPE_ACL_FIELD_DATA_UINT8_LIST,
82
+
83
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_UINT8,
84
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_INT8,
85
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_UINT16,
86
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_INT16,
87
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_UINT32,
88
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_INT32,
89
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_MAC,
90
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_IPV4,
91
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_IPV6,
92
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_OBJECT_ID,
93
+ SAI_SERIALIZATION_TYPE_ACL_ACTION_DATA_OBJECT_LIST,
94
+
95
+ SAI_SERIALIZATION_TYPE_PORT_BREAKOUT,
96
+ SAI_SERIALIZATION_TYPE_QOS_MAP_LIST,
97
+ SAI_SERIALIZATION_TYPE_TUNNEL_MAP_LIST,
98
+ SAI_SERIALIZATION_TYPE_ACL_CAPABILITY
99
+
100
+ } sai_attr_serialization_type_t;
101
+ */
102
+
40
103
typedef struct _sai_object_meta_key_t
41
104
{
42
105
sai_object_type_t object_type;
@@ -325,6 +388,38 @@ typedef struct _sai_attr_condition_t {
325
388
// also must be ignored on post set/remve (check flags) so
326
389
// we could validate ranges for example what are valid when doing query
327
390
391
+ /* *
392
+ * @brief Defines enum metadata information.
393
+ */
394
+ typedef struct _sai_enum_metadata_t {
395
+
396
+ /* *
397
+ * @brief String representation of enum typedef.
398
+ */
399
+ const char * name;
400
+
401
+ /* *
402
+ * @brief Values count in enum.
403
+ */
404
+ const size_t valuescount;
405
+
406
+ /* *
407
+ * @brief Array of enum values.
408
+ */
409
+ const int * values;
410
+
411
+ /* *
412
+ * @brief Array of enum values string names.
413
+ */
414
+ const char ** valuesnames;
415
+
416
+ /* *
417
+ * @brief Array of enum values string short names.
418
+ */
419
+ const char ** valuesshortnames;
420
+
421
+ } sai_enum_metadata_t ;
422
+
328
423
typedef struct _sai_attr_metadata_t {
329
424
330
425
/*
@@ -339,6 +434,11 @@ typedef struct _sai_attr_metadata_t {
339
434
340
435
const sai_attr_id_t attrid;
341
436
437
+ /* *
438
+ * Specifies valid attribute id name for this object type.
439
+ */
440
+ const char * attridname;
441
+
342
442
/*
343
443
* Specifies serialization type for this attribute.
344
444
*/
@@ -442,6 +542,12 @@ typedef struct _sai_attr_metadata_t {
442
542
443
543
const std::set<int32_t >& enumallowedvalues;
444
544
545
+ /*
546
+ * If attribute is enum value, then this will
547
+ * hold enum metadata.
548
+ */
549
+ const sai_enum_metadata_t * const enummetadata;
550
+
445
551
/*
446
552
* Specifies condition type of attribute.
447
553
*
@@ -595,6 +701,26 @@ EXTERN_METADATA(vlan);
595
701
EXTERN_METADATA (vlan_member);
596
702
EXTERN_METADATA (wred);
597
703
704
+ #define DEFINE_ENUM_METADATA (x,count )\
705
+ const sai_enum_metadata_t metadata_enum_ ## x = {\
706
+ .name = metadata_ ## x ## _enum_name,\
707
+ .valuescount = count,\
708
+ .values = (const int *)metadata_ ## x ## _enum_values,\
709
+ .valuesnames = metadata_ ## x ## _enum_values_names,\
710
+ .valuesshortnames = metadata_ ## x ## _enum_values_short_names,\
711
+ };
712
+
713
+
714
+ extern const sai_enum_metadata_t metadata_enum_sai_port_oper_status_t ;
715
+ extern const sai_enum_metadata_t metadata_enum_sai_status_t ;
716
+ extern const sai_enum_metadata_t metadata_enum_sai_fdb_event_t ;
717
+ extern const sai_enum_metadata_t metadata_enum_sai_object_type_t ;
718
+ extern const sai_enum_metadata_t metadata_enum_sai_port_event_t ;
719
+ extern const sai_enum_metadata_t metadata_enum_sai_packet_color_t ;
720
+ extern const sai_enum_metadata_t metadata_enum_sai_packet_action_t ;
721
+ extern const sai_enum_metadata_t metadata_enum_sai_next_hop_group_type_t ;
722
+ extern const sai_enum_metadata_t metadata_enum_sai_meter_type_t ;
723
+
598
724
struct HashForEnum
599
725
{
600
726
template <typename T> std::size_t operator ()(T t) const
@@ -625,6 +751,10 @@ extern const sai_attribute_t* get_object_previous_attr(
625
751
extern sai_status_t meta_init_db ();
626
752
extern void meta_init ();
627
753
754
+ extern const sai_attr_metadata_t * sai_metadata_get_attr_metadata (
755
+ _In_ sai_object_type_t objecttype,
756
+ _In_ sai_attr_id_t attrid);
757
+
628
758
// GENERIC FUNCTION POINTERS
629
759
630
760
typedef sai_status_t (*sai_create_generic_fn)(
0 commit comments