@@ -684,8 +684,9 @@ json_parse_network_interface(json_t *network_interface, bbl_network_config_s *ne
684684 "isis-l1-priority" , "isis-l2-priority" ,
685685 "ospfv2-instance-id" , "ospfv2-metric" , "ospfv2-type" ,
686686 "ospfv3-instance-id" , "ospfv3-metric" , "ospfv3-type" ,
687- "cfm-cc" , "cfm-level" , "cfm-interval" , "cfm-md-name" , "cfm-ma-id" , "cfm-ma-name" ,
688- "cfm-seq" , "cfm-vlan-priority" ,
687+ "cfm-cc" , "cfm-level" , "cfm-interval" , "cfm-md-name" , "cfm-md-name-format" ,
688+ "cfm-ma-id" , "cfm-ma-name" , "cfm-ma-name-format" , "cfm-seq" ,
689+ "cfm-vlan-priority" ,
689690 "ldp-instance-id" , "a10nsp" , "a10nsp-tx-label"
690691 };
691692 if (!schema_validate (network_interface , "network" , schema ,
@@ -893,12 +894,38 @@ json_parse_network_interface(json_t *network_interface, bbl_network_config_s *ne
893894 if (json_unpack (network_interface , "{s:s}" , "cfm-md-name" , & s ) == 0 ) {
894895 network_config -> cfm_md_name = strdup (s );
895896 }
897+ JSON_OBJ_GET_NUMBER (network_interface , value , "network" , "cfm-md-name-format" , 1 , 4 );
898+ if (value ) {
899+ network_config -> cfm_md_name_format = json_number_value (value );
900+ network_config -> cfm_md_name_format_set = true;
901+ } else {
902+ network_config -> cfm_md_name_format = CMF_MD_NAME_FORMAT_STRING ;
903+ network_config -> cfm_md_name_format_set = false;
904+ }
905+ if (network_config -> cfm_md_name_format_set &&
906+ network_config -> cfm_md_name_format != CMF_MD_NAME_FORMAT_NONE &&
907+ !network_config -> cfm_md_name ) {
908+ fprintf (stderr , "JSON config error: Missing network->cfm-md-name\n" );
909+ return false;
910+ }
896911 if (json_unpack (network_interface , "{s:s}" , "cfm-ma-name" , & s ) == 0 ) {
897912 network_config -> cfm_ma_name = strdup (s );
898913 } else if (network_config -> cfm_cc ) {
899914 fprintf (stderr , "JSON config error: Missing network->cfm-ma-name\n" );
900915 return false;
901916 }
917+ JSON_OBJ_GET_NUMBER (network_interface , value , "network" , "cfm-ma-name-format" , 1 , 32 );
918+ if (value ) {
919+ network_config -> cfm_ma_name_format = json_number_value (value );
920+ network_config -> cfm_ma_name_format_set = true;
921+ if (network_config -> cfm_ma_name_format > 4 && network_config -> cfm_ma_name_format != CMF_MA_NAME_FORMAT_ICC ) {
922+ fprintf (stderr , "JSON config error: Invalid value for network->cfm-ma-name-format\n" );
923+ return false;
924+ }
925+ } else {
926+ network_config -> cfm_ma_name_format = CMF_MA_NAME_FORMAT_STRING ;
927+ network_config -> cfm_ma_name_format_set = false;
928+ }
902929 JSON_OBJ_GET_NUMBER (network_interface , value , "network" , "cfm-vlan-priority" , 0 , 7 );
903930 if (value ) {
904931 network_config -> cfm_vlan_priority = json_number_value (value );
@@ -947,8 +974,9 @@ json_parse_access_interface(json_t *access_interface, bbl_access_config_s *acces
947974 "session-group-id" , "stream-group-id" ,
948975 "session-limit" , "arp-client-group-id" ,
949976 "http-client-group-id" , "icmp-client-group-id" ,
950- "cfm-cc" , "cfm-level" , "cfm-interval" , "cfm-md-name" , "cfm-ma-id" , "cfm-ma-name" ,
951- "cfm-seq" , "cfm-vlan-priority"
977+ "cfm-cc" , "cfm-level" , "cfm-interval" , "cfm-md-name" , "cfm-md-name-format" ,
978+ "cfm-ma-id" , "cfm-ma-name" , "cfm-ma-name-format" , "cfm-seq" ,
979+ "cfm-vlan-priority"
952980 };
953981 if (!schema_validate (access_interface , "access" , schema ,
954982 sizeof (schema )/sizeof (schema [0 ]))) {
@@ -1350,12 +1378,38 @@ json_parse_access_interface(json_t *access_interface, bbl_access_config_s *acces
13501378 if (json_unpack (access_interface , "{s:s}" , "cfm-md-name" , & s ) == 0 ) {
13511379 access_config -> cfm_md_name = strdup (s );
13521380 }
1381+ JSON_OBJ_GET_NUMBER (access_interface , value , "access" , "cfm-md-name-format" , 1 , 4 );
1382+ if (value ) {
1383+ access_config -> cfm_md_name_format = json_number_value (value );
1384+ access_config -> cfm_md_name_format_set = true;
1385+ } else {
1386+ access_config -> cfm_md_name_format = CMF_MD_NAME_FORMAT_STRING ;
1387+ access_config -> cfm_md_name_format_set = false;
1388+ }
1389+ if (access_config -> cfm_md_name_format_set &&
1390+ access_config -> cfm_md_name_format != CMF_MD_NAME_FORMAT_NONE &&
1391+ !access_config -> cfm_md_name ) {
1392+ fprintf (stderr , "JSON config error: Missing access->cfm-md-name\n" );
1393+ return false;
1394+ }
13531395 if (json_unpack (access_interface , "{s:s}" , "cfm-ma-name" , & s ) == 0 ) {
13541396 access_config -> cfm_ma_name = strdup (s );
13551397 } else if (access_config -> cfm_cc ) {
13561398 fprintf (stderr , "JSON config error: Missing access->cfm-ma-name\n" );
13571399 return false;
13581400 }
1401+ JSON_OBJ_GET_NUMBER (access_interface , value , "access" , "cfm-ma-name-format" , 1 , 32 );
1402+ if (value ) {
1403+ access_config -> cfm_ma_name_format = json_number_value (value );
1404+ access_config -> cfm_ma_name_format_set = true;
1405+ if (access_config -> cfm_ma_name_format > 4 && access_config -> cfm_ma_name_format != CMF_MA_NAME_FORMAT_ICC ) {
1406+ fprintf (stderr , "JSON config error: Invalid value for access->cfm-ma-name-format\n" );
1407+ return false;
1408+ }
1409+ } else {
1410+ access_config -> cfm_ma_name_format = CMF_MA_NAME_FORMAT_STRING ;
1411+ access_config -> cfm_ma_name_format_set = false;
1412+ }
13591413 JSON_OBJ_GET_NUMBER (access_interface , value , "access" , "cfm-vlan-priority" , 0 , 7 );
13601414 if (value ) {
13611415 access_config -> cfm_vlan_priority = json_number_value (value );
0 commit comments