Skip to content

Commit 7d7e97f

Browse files
Andreas ZimberGIC-de
authored andcommitted
add md and ma name format setting
1 parent fafcdd6 commit 7d7e97f

File tree

9 files changed

+346
-20
lines changed

9 files changed

+346
-20
lines changed

code/bngblaster/src/bbl_cfm.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ typedef struct bbl_cfm_session_
2323
uint8_t cfm_interval;
2424
uint16_t cfm_ma_id;
2525
char *cfm_md_name;
26+
uint8_t cfm_md_name_format;
27+
bool cfm_md_name_format_set;
2628
char *cfm_ma_name;
29+
uint8_t cfm_ma_name_format;
30+
bool cfm_ma_name_format_set;
2731
uint8_t vlan_priority;
2832

2933
struct timer_ *timer_cfm_cc;

code/bngblaster/src/bbl_config.c

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

code/bngblaster/src/bbl_config.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,11 @@ typedef struct bbl_access_config_
104104
uint8_t cfm_interval;
105105
uint16_t cfm_ma_id;
106106
char *cfm_md_name;
107+
uint8_t cfm_md_name_format;
108+
bool cfm_md_name_format_set;
107109
char *cfm_ma_name;
110+
uint8_t cfm_ma_name_format;
111+
bool cfm_ma_name_format_set;
108112
uint8_t cfm_vlan_priority;
109113

110114
/* Iterator */
@@ -169,7 +173,11 @@ typedef struct bbl_network_config_
169173
uint8_t cfm_interval;
170174
uint16_t cfm_ma_id;
171175
char *cfm_md_name;
176+
uint8_t cfm_md_name_format;
177+
bool cfm_md_name_format_set;
172178
char *cfm_ma_name;
179+
uint8_t cfm_ma_name_format;
180+
bool cfm_ma_name_format_set;
173181
uint8_t cfm_vlan_priority;
174182

175183
void *next; /* pointer to next network config element */

code/bngblaster/src/bbl_network.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,11 @@ bbl_network_interfaces_add()
222222
network_interface->cfm->cfm_interval = network_config->cfm_interval;
223223
network_interface->cfm->cfm_ma_id = network_config->cfm_ma_id;
224224
network_interface->cfm->cfm_md_name = network_config->cfm_md_name;
225+
network_interface->cfm->cfm_md_name_format = network_config->cfm_md_name_format;
226+
network_interface->cfm->cfm_md_name_format_set = network_config->cfm_md_name_format_set;
225227
network_interface->cfm->cfm_ma_name = network_config->cfm_ma_name;
228+
network_interface->cfm->cfm_ma_name_format = network_config->cfm_ma_name_format;
229+
network_interface->cfm->cfm_ma_name_format_set = network_config->cfm_ma_name_format_set;
226230
network_interface->cfm->vlan_priority = network_config->cfm_vlan_priority;
227231
network_interface->cfm->network_interface = network_interface;
228232
bbl_cfm_cc_start(network_interface->cfm);

code/bngblaster/src/bbl_protocols.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,15 @@
277277

278278
#define CFM_TYPE_CCM 1
279279
#define CMF_MD_NAME_FORMAT_NONE 1
280+
#define CMF_MD_NAME_FORMAT_DNS 2
281+
#define CMF_MD_NAME_FORMAT_MAC_INT 3
280282
#define CMF_MD_NAME_FORMAT_STRING 4
283+
284+
#define CMF_MA_NAME_FORMAT_VLAN 1
281285
#define CMF_MA_NAME_FORMAT_STRING 2
286+
#define CMF_MA_NAME_FORMAT_UINT16 3
287+
#define CMF_MA_NAME_FORMAT_VPN_ID 4
288+
#define CMF_MA_NAME_FORMAT_ICC 32
282289

283290
#define TCP_HDR_LEN_MIN 20
284291
#define UDP_HDR_LEN 8

code/bngblaster/src/bbl_session.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,11 @@ bbl_sessions_init()
961961
session->cfm->cfm_interval = access_config->cfm_interval;
962962
session->cfm->cfm_ma_id = access_config->cfm_ma_id;
963963
update_strings(&session->cfm->cfm_md_name, access_config->cfm_md_name, NULL, NULL);
964+
session->cfm->cfm_md_name_format = access_config->cfm_md_name_format;
965+
session->cfm->cfm_md_name_format_set = access_config->cfm_md_name_format_set;
964966
update_strings(&session->cfm->cfm_ma_name, access_config->cfm_ma_name, NULL, NULL);
967+
session->cfm->cfm_ma_name_format = access_config->cfm_ma_name_format;
968+
session->cfm->cfm_ma_name_format_set = access_config->cfm_ma_name_format_set;
965969
session->cfm->vlan_priority = access_config->cfm_vlan_priority;
966970
session->cfm->session = session;
967971
}

0 commit comments

Comments
 (0)