The `show ipv6 route json` command displays the IPv6 routing table in
JSON format, including SRv6 SIDs. For each SRv6 SID, it provides
behavior and SID attributes. However, it does not include the SID
structure.
This commit adds the SID structure to the SRv6 SID JSON output.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
(cherry picked from commit
312f7b3f8c7382afef6993aa2110326db2327c35)
json_object *json_backups = NULL;
json_object *json_seg6local = NULL;
json_object *json_seg6local_context = NULL;
+ json_object *json_srv6_sid_structure = NULL;
json_object *json_seg6 = NULL;
json_object *json_segs = NULL;
int i;
json_object_object_add(json_nexthop, "seg6localContext",
json_seg6local_context);
+ json_srv6_sid_structure = json_object_new_object();
+ srv6_sid_structure2json(&nexthop->nh_srv6->seg6local_ctx, json_srv6_sid_structure);
+ json_object_object_add(json_seg6local, "sidStructure", json_srv6_sid_structure);
+
if (nexthop->nh_srv6->seg6_segs &&
nexthop->nh_srv6->seg6_segs->num_segs == 1) {
json_seg6 = json_object_new_object();
return strlen(str);
}
+void srv6_sid_structure2json(const struct seg6local_context *ctx, json_object *json)
+{
+ json_object_int_add(json, "blockLen", ctx->block_len);
+ json_object_int_add(json, "nodeLen", ctx->node_len);
+ json_object_int_add(json, "funcLen", ctx->function_len);
+ json_object_int_add(json, "argLen", ctx->argument_len);
+}
+
void seg6local_context2json(const struct seg6local_context *ctx,
uint32_t action, json_object *json)
{
uint32_t action);
void seg6local_context2json(const struct seg6local_context *ctx,
uint32_t action, json_object *json);
+void srv6_sid_structure2json(const struct seg6local_context *ctx, json_object *json);
static inline const char *srv6_sid_ctx2str(char *str, size_t size,
const struct srv6_sid_ctx *ctx)