Skip to content

Commit 7985248

Browse files
committed
add option to disable CFM CC sequence numbers
1 parent e3a52ec commit 7985248

File tree

7 files changed

+32
-4
lines changed

7 files changed

+32
-4
lines changed

code/bngblaster/src/bbl_config.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ 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-ma-id", "cfm-ma-name",
687+
"cfm-cc", "cfm-level", "cfm-ma-id", "cfm-ma-name", "cfm-seq",
688688
"ldp-instance-id"
689689
};
690690
if(!schema_validate(network_interface, "network", schema,
@@ -869,6 +869,12 @@ json_parse_network_interface(json_t *network_interface, bbl_network_config_s *ne
869869
if(value) {
870870
network_config->cfm_cc = json_boolean_value(value);
871871
}
872+
JSON_OBJ_GET_BOOL(network_interface, value, "network", "cfm-seq");
873+
if(value) {
874+
network_config->cfm_seq = json_boolean_value(value);
875+
} else {
876+
network_config->cfm_seq = true;
877+
}
872878
JSON_OBJ_GET_NUMBER(network_interface, value, "network", "cfm-level", 0, 7);
873879
if(value) {
874880
network_config->cfm_level = json_number_value(value);
@@ -919,7 +925,7 @@ json_parse_access_interface(json_t *access_interface, bbl_access_config_s *acces
919925
"session-group-id", "stream-group-id",
920926
"session-limit", "arp-client-group-id",
921927
"http-client-group-id", "icmp-client-group-id",
922-
"cfm-cc", "cfm-level", "cfm-ma-id", "cfm-ma-name"
928+
"cfm-cc", "cfm-level", "cfm-ma-id", "cfm-ma-name", "cfm-seq"
923929
};
924930
if(!schema_validate(access_interface, "access", schema,
925931
sizeof(schema)/sizeof(schema[0]))) {
@@ -1284,6 +1290,12 @@ json_parse_access_interface(json_t *access_interface, bbl_access_config_s *acces
12841290
if(value) {
12851291
access_config->cfm_cc = json_boolean_value(value);
12861292
}
1293+
JSON_OBJ_GET_BOOL(access_interface, value, "access", "cfm-seq");
1294+
if(value) {
1295+
access_config->cfm_seq = json_boolean_value(value);
1296+
} else {
1297+
access_config->cfm_seq = true;
1298+
}
12871299
JSON_OBJ_GET_NUMBER(access_interface, value, "access", "cfm-level", 0, 7);
12881300
if(value) {
12891301
access_config->cfm_level = json_number_value(value);

code/bngblaster/src/bbl_config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ typedef struct bbl_access_config_
9797

9898
/* CFM CC */
9999
bool cfm_cc;
100+
bool cfm_seq;
100101
uint8_t cfm_level;
101102
uint16_t cfm_ma_id;
102103
char *cfm_ma_name;
@@ -154,6 +155,7 @@ typedef struct bbl_network_config_
154155

155156
/* CFM CC */
156157
bool cfm_cc;
158+
bool cfm_seq;
157159
uint8_t cfm_level;
158160
uint16_t cfm_ma_id;
159161
char *cfm_ma_name;

code/bngblaster/src/bbl_network.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ bbl_network_interfaces_add()
215215
if(network_config->cfm_cc) {
216216
network_interface->cfm = calloc(1, sizeof(bbl_cfm_session_s));
217217
network_interface->cfm->cfm_cc = true;
218+
if(network_config->cfm_seq) network_interface->cfm->cfm_seq = 1;
218219
network_interface->cfm->cfm_level = network_config->cfm_level;
219220
network_interface->cfm->cfm_ma_id = network_config->cfm_ma_id;
220221
network_interface->cfm->cfm_ma_name = network_config->cfm_ma_name;

code/bngblaster/src/bbl_session.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,7 @@ bbl_sessions_init()
939939
if(access_config->cfm_cc) {
940940
session->cfm = calloc(1, sizeof(bbl_cfm_session_s));
941941
session->cfm->cfm_cc = true;
942+
if(access_config->cfm_seq) session->cfm->cfm_seq = 1;
942943
session->cfm->cfm_level = access_config->cfm_level;
943944
session->cfm->cfm_ma_id = access_config->cfm_ma_id;
944945
update_strings(&session->cfm->cfm_ma_name, access_config->cfm_ma_name, NULL, NULL);

code/bngblaster/src/bbl_tx.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,7 +1363,10 @@ bbl_tx_encode_packet_cfm_cc_session(bbl_session_s *session)
13631363
eth.type = ETH_TYPE_CFM;
13641364
eth.next = &cfm_hdr;
13651365
cfm_hdr.type = CFM_TYPE_CCM;
1366-
cfm_hdr.seq = cfm->cfm_seq++;
1366+
if(cfm->cfm_seq) {
1367+
cfm_hdr.seq = cfm->cfm_seq++;
1368+
if(!cfm->cfm_seq) cfm->cfm_seq = 1;
1369+
}
13671370
cfm_hdr.rdi = cfm->cfm_rdi;
13681371
cfm_hdr.md_level = cfm->cfm_level;
13691372
cfm_hdr.md_name_format = CMF_MD_NAME_FORMAT_NONE;
@@ -1394,7 +1397,10 @@ bbl_tx_encode_packet_cfm_cc(bbl_network_interface_s *interface,
13941397
eth->type = ETH_TYPE_CFM;
13951398
eth->next = &cfm_hdr;
13961399
cfm_hdr.type = CFM_TYPE_CCM;
1397-
cfm_hdr.seq = cfm->cfm_seq++;
1400+
if(cfm->cfm_seq) {
1401+
cfm_hdr.seq = cfm->cfm_seq++;
1402+
if(!cfm->cfm_seq) cfm->cfm_seq = 1;
1403+
}
13981404
cfm_hdr.rdi = cfm->cfm_rdi;
13991405
cfm_hdr.md_level = cfm->cfm_level;
14001406
cfm_hdr.md_name_format = CMF_MD_NAME_FORMAT_NONE;

docsrc/sources/configuration/interfaces_access.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
+-----------------------------------+----------------------------------------------------------------------+
7575
| **cfm-ma-name** | | Set EOAM CFM maintenance association short name (string). |
7676
+-----------------------------------+----------------------------------------------------------------------+
77+
| **cfm-seq** | | Enable EOAM CFM CC sequence numbers. |
78+
| | | Default: true |
79+
+-----------------------------------+----------------------------------------------------------------------+
7780
| **username** | | Overwrite the username from the authentication section. |
7881
+-----------------------------------+----------------------------------------------------------------------+
7982
| **password** | | Overwrite the password from the authentication section. |

docsrc/sources/configuration/interfaces_network.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,7 @@
7878
| | | Default: 0 Range: 0 - 65535 |
7979
+-----------------------------------+----------------------------------------------------------------------+
8080
| **cfm-ma-name** | | Set EOAM CFM maintenance association short name (string). |
81+
+-----------------------------------+----------------------------------------------------------------------+
82+
| **cfm-seq** | | Enable EOAM CFM CC sequence numbers. |
83+
| | | Default: true |
8184
+-----------------------------------+----------------------------------------------------------------------+

0 commit comments

Comments
 (0)