@@ -191,6 +191,10 @@ sai_status_t transfer_attribute(
191
191
transfer_primitive (src_attr.value .ipaddr , dst_attr.value .ipaddr );
192
192
break ;
193
193
194
+ case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
195
+ transfer_primitive (src_attr.value .ipprefix , dst_attr.value .ipprefix );
196
+ break ;
197
+
194
198
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
195
199
transfer_primitive (src_attr.value .oid , dst_attr.value .oid );
196
200
break ;
@@ -1346,6 +1350,9 @@ std::string sai_serialize_attr_value(
1346
1350
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
1347
1351
return sai_serialize_ip_address (attr.value .ipaddr );
1348
1352
1353
+ case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
1354
+ return sai_serialize_ip_prefix (attr.value .ipprefix );
1355
+
1349
1356
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
1350
1357
return sai_serialize_object_id (attr.value .oid );
1351
1358
@@ -2102,6 +2109,42 @@ void sai_deserialize_ip_address(
2102
2109
SWSS_LOG_THROW (" invalid ip address %s" , s.c_str ());
2103
2110
}
2104
2111
2112
+ void sai_deserialize_ip_prefix (
2113
+ _In_ const std::string &s,
2114
+ _Out_ sai_ip_prefix_t &ip_prefix)
2115
+ {
2116
+ SWSS_LOG_ENTER ();
2117
+
2118
+ auto tokens = swss::tokenize (s, ' /' );
2119
+
2120
+ if (tokens.size () != 2 )
2121
+ {
2122
+ SWSS_LOG_THROW (" invalid ip prefix %s" , s.c_str ());
2123
+ }
2124
+
2125
+ uint8_t mask;
2126
+ sai_deserialize_number (tokens[1 ], mask);
2127
+
2128
+ const std::string &ip = tokens[0 ];
2129
+
2130
+ if (inet_pton (AF_INET, ip.c_str (), &ip_prefix.addr .ip4 ) == 1 )
2131
+ {
2132
+ ip_prefix.addr_family = SAI_IP_ADDR_FAMILY_IPV4;
2133
+
2134
+ sai_populate_ip_mask (mask, (uint8_t *)&ip_prefix.mask .ip4 , false );
2135
+ }
2136
+ else if (inet_pton (AF_INET6, ip.c_str (), ip_prefix.addr .ip6 ) == 1 )
2137
+ {
2138
+ ip_prefix.addr_family = SAI_IP_ADDR_FAMILY_IPV6;
2139
+
2140
+ sai_populate_ip_mask (mask, ip_prefix.mask .ip6 , true );
2141
+ }
2142
+ else
2143
+ {
2144
+ SWSS_LOG_THROW (" invalid ip prefix %s" , s.c_str ());
2145
+ }
2146
+ }
2147
+
2105
2148
void sai_deserialize_ip_address_list (
2106
2149
_In_ const std::string& s,
2107
2150
_Out_ sai_ip_address_list_t & list,
@@ -2341,6 +2384,9 @@ void sai_deserialize_attr_value(
2341
2384
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
2342
2385
return sai_deserialize_ip_address (s, attr.value .ipaddr );
2343
2386
2387
+ case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
2388
+ return sai_deserialize_ip_prefix (s, attr.value .ipprefix );
2389
+
2344
2390
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
2345
2391
return sai_deserialize_object_id (s, attr.value .oid );
2346
2392
@@ -2421,42 +2467,6 @@ void sai_deserialize_attr_value(
2421
2467
}
2422
2468
}
2423
2469
2424
- void sai_deserialize_ip_prefix (
2425
- _In_ const std::string &s,
2426
- _Out_ sai_ip_prefix_t &ip_prefix)
2427
- {
2428
- SWSS_LOG_ENTER ();
2429
-
2430
- auto tokens = swss::tokenize (s, ' /' );
2431
-
2432
- if (tokens.size () != 2 )
2433
- {
2434
- SWSS_LOG_THROW (" invalid ip prefix %s" , s.c_str ());
2435
- }
2436
-
2437
- uint8_t mask;
2438
- sai_deserialize_number (tokens[1 ], mask);
2439
-
2440
- const std::string &ip = tokens[0 ];
2441
-
2442
- if (inet_pton (AF_INET, ip.c_str (), &ip_prefix.addr .ip4 ) == 1 )
2443
- {
2444
- ip_prefix.addr_family = SAI_IP_ADDR_FAMILY_IPV4;
2445
-
2446
- sai_populate_ip_mask (mask, (uint8_t *)&ip_prefix.mask .ip4 , false );
2447
- }
2448
- else if (inet_pton (AF_INET6, ip.c_str (), ip_prefix.addr .ip6 ) == 1 )
2449
- {
2450
- ip_prefix.addr_family = SAI_IP_ADDR_FAMILY_IPV6;
2451
-
2452
- sai_populate_ip_mask (mask, ip_prefix.mask .ip6 , true );
2453
- }
2454
- else
2455
- {
2456
- SWSS_LOG_THROW (" invalid ip prefix %s" , s.c_str ());
2457
- }
2458
- }
2459
-
2460
2470
void sai_deserialize_status (
2461
2471
_In_ const std::string& s,
2462
2472
_Out_ sai_status_t & status)
@@ -2778,6 +2788,7 @@ void sai_deserialize_free_attribute_value(
2778
2788
case SAI_ATTR_VALUE_TYPE_IPV6:
2779
2789
case SAI_ATTR_VALUE_TYPE_POINTER:
2780
2790
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS:
2791
+ case SAI_ATTR_VALUE_TYPE_IP_PREFIX:
2781
2792
case SAI_ATTR_VALUE_TYPE_OBJECT_ID:
2782
2793
break ;
2783
2794
0 commit comments