Skip to content

Commit 09047d2

Browse files
committed
pceplib: add json string option to subgroup counter
The created counters in pceplib library are structures with a string attribute which is used for further display. This string information is not formatted for json output. Add a second option in the create_subgroup_counter() creation API to provide the json attribute output. Create a json naming compatible with caml format for each subgroup counter used. Signed-off-by: Philippe Guibert <[email protected]>
1 parent 94178ed commit 09047d2

File tree

4 files changed

+141
-113
lines changed

4 files changed

+141
-113
lines changed

pceplib/pcep_session_logic_counters.c

Lines changed: 106 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -36,30 +36,30 @@ void create_session_counters(pcep_session *session)
3636
struct counters_subgroup *rx_msg_subgroup = create_counters_subgroup(
3737
"RX Message counters", COUNTER_SUBGROUP_ID_RX_MSG,
3838
PCEP_TYPE_MAX + 1);
39-
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_OPEN,
40-
"Message Open");
39+
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_OPEN, "Message Open",
40+
"messageOpen");
4141
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_KEEPALIVE,
42-
"Message KeepAlive");
42+
"Message KeepAlive", "messageKeepalive");
4343
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_PCREQ,
44-
"Message PcReq");
44+
"Message PcReq", "messagePcReq");
4545
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_PCREP,
46-
"Message PcRep");
46+
"Message PcRep", "messagePcRep");
4747
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_PCNOTF,
48-
"Message Notify");
48+
"Message Notify", "messageNotify");
4949
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_ERROR,
50-
"Message Error");
50+
"Message Error", "messageError");
5151
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_CLOSE,
52-
"Message Close");
52+
"Message Close", "messageClose");
5353
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_REPORT,
54-
"Message Report");
54+
"Message Report", "messageReport");
5555
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_UPDATE,
56-
"Message Update");
56+
"Message Update", "messageUpdate");
5757
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_INITIATE,
58-
"Message Initiate");
58+
"Message Initiate", "messageInitiate");
5959
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_START_TLS,
60-
"Message StartTls");
60+
"Message StartTls", "messageStartTls");
6161
create_subgroup_counter(rx_msg_subgroup, PCEP_TYPE_MAX,
62-
"Message Erroneous");
62+
"Message Erroneous", "messageErroneous");
6363

6464
struct counters_subgroup *tx_msg_subgroup =
6565
clone_counters_subgroup(rx_msg_subgroup, "TX Message counters",
@@ -74,59 +74,61 @@ void create_session_counters(pcep_session *session)
7474
struct counters_subgroup *rx_obj_subgroup = create_counters_subgroup(
7575
"RX Object counters", COUNTER_SUBGROUP_ID_RX_OBJ, 100);
7676
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_OPEN,
77-
"Object Open");
78-
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_RP,
79-
"Object RP");
77+
"Object Open", "objectOpen");
78+
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_RP, "Object RP",
79+
"objectRP");
8080
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_NOPATH,
81-
"Object Nopath");
82-
create_subgroup_counter(
83-
rx_obj_subgroup,
84-
((PCEP_OBJ_CLASS_ENDPOINTS << 4) | PCEP_OBJ_TYPE_ENDPOINT_IPV4),
85-
"Object Endpoint IPv4");
86-
create_subgroup_counter(
87-
rx_obj_subgroup,
88-
((PCEP_OBJ_CLASS_ENDPOINTS << 4) | PCEP_OBJ_TYPE_ENDPOINT_IPV6),
89-
"Object Endpoint IPv6");
81+
"Object Nopath", "objectNopath");
82+
create_subgroup_counter(rx_obj_subgroup,
83+
((PCEP_OBJ_CLASS_ENDPOINTS << 4) |
84+
PCEP_OBJ_TYPE_ENDPOINT_IPV4),
85+
"Object Endpoint IPv4", "objectEndpointIPv4");
86+
create_subgroup_counter(rx_obj_subgroup,
87+
((PCEP_OBJ_CLASS_ENDPOINTS << 4) |
88+
PCEP_OBJ_TYPE_ENDPOINT_IPV6),
89+
"Object Endpoint IPv6", "objectEndpointIPv6");
9090
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_BANDWIDTH,
91-
"Object Bandwidth");
91+
"Object Bandwidth", "objectBandwidth");
9292
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_METRIC,
93-
"Object Metric");
93+
"Object Metric", "objectMetric");
9494
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_ERO,
95-
"Object ERO");
95+
"Object ERO", "objectERO");
9696
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_RRO,
97-
"Object RRO");
97+
"Object RRO", "objectRRO");
9898
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_LSPA,
99-
"Object LSPA");
99+
"Object LSPA", "objectLSPA");
100100
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_IRO,
101-
"Object IRO");
101+
"Object IRO", "objectIRO");
102102
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_SVEC,
103-
"Object SVEC");
103+
"Object SVEC", "objectSVEC");
104104
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_NOTF,
105-
"Object Notify");
105+
"Object Notify", "objectNotify");
106106
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_ERROR,
107-
"Object Error");
107+
"Object Error", "objectError");
108108
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_CLOSE,
109-
"Object Close");
109+
"Object Close", "objectClose");
110110
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_LSP,
111-
"Object LSP");
111+
"Object LSP", "objectLSP");
112112
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_SRP,
113-
"Object SRP");
113+
"Object SRP", "objectSRP");
114114
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_VENDOR_INFO,
115-
"Object Vendor Info");
115+
"Object Vendor Info", "objectVendorInfo");
116116
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_INTER_LAYER,
117-
"Object Inter-Layer");
117+
"Object Inter-Layer", "objectInterLayer");
118118
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_SWITCH_LAYER,
119-
"Object Switch-Layer");
119+
"Object Switch-Layer", "objectSwitchLayer");
120120
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_REQ_ADAP_CAP,
121-
"Object Requested Adap-Cap");
121+
"Object Requested Adap-Cap",
122+
"objectRequestedAdapCap");
122123
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_SERVER_IND,
123-
"Object Server-Indication");
124+
"Object Server-Indication",
125+
"objectServerIndication");
124126
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_ASSOCIATION,
125-
"Object Association");
127+
"Object Association", "objectAssociation");
126128
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_MAX,
127-
"Object Unknown");
129+
"Object Unknown", "objectUnknown");
128130
create_subgroup_counter(rx_obj_subgroup, PCEP_OBJ_CLASS_MAX + 1,
129-
"Object Erroneous");
131+
"Object Erroneous", "objectErroneous");
130132

131133
struct counters_subgroup *tx_obj_subgroup =
132134
clone_counters_subgroup(rx_obj_subgroup, "TX Object counters",
@@ -139,21 +141,22 @@ void create_session_counters(pcep_session *session)
139141
"RX RO Sub-Object counters", COUNTER_SUBGROUP_ID_RX_SUBOBJ,
140142
RO_SUBOBJ_UNKNOWN + 2);
141143
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_IPV4,
142-
"RO Sub-Object IPv4");
144+
"RO Sub-Object IPv4", "ROSubObjectIPv4");
143145
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_IPV6,
144-
"RO Sub-Object IPv6");
146+
"RO Sub-Object IPv6", "ROSubObjectIPv6");
145147
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_LABEL,
146-
"RO Sub-Object Label");
148+
"RO Sub-Object Label", "ROSubObjectLabel");
147149
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_UNNUM,
148-
"RO Sub-Object Unnum");
150+
"RO Sub-Object Unnum", "ROSubObjectUnnum");
149151
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_ASN,
150-
"RO Sub-Object ASN");
152+
"RO Sub-Object ASN", "ROSubObjectASN");
151153
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_TYPE_SR,
152-
"RO Sub-Object SR");
154+
"RO Sub-Object SR", "ROSubObjectSR");
153155
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_UNKNOWN,
154-
"RO Sub-Object Unknown");
156+
"RO Sub-Object Unknown", "ROSubObjectUnknown");
155157
create_subgroup_counter(rx_subobj_subgroup, RO_SUBOBJ_UNKNOWN + 1,
156-
"RO Sub-Object Erroneous");
158+
"RO Sub-Object Erroneous",
159+
"ROSubObjectErroneous");
157160

158161
struct counters_subgroup *tx_subobj_subgroup = clone_counters_subgroup(
159162
rx_subobj_subgroup, "TX RO Sub-Object counters",
@@ -168,28 +171,36 @@ void create_session_counters(pcep_session *session)
168171
PCEP_SR_SUBOBJ_NAI_UNKNOWN + 1);
169172
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
170173
PCEP_SR_SUBOBJ_NAI_ABSENT,
171-
"RO Sub-Object SR NAI absent");
174+
"RO Sub-Object SR NAI absent",
175+
"ROSubObjectSRNAIAbsent");
172176
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
173177
PCEP_SR_SUBOBJ_NAI_IPV4_NODE,
174-
"RO Sub-Object SR NAI IPv4 Node");
178+
"RO Sub-Object SR NAI IPv4 Node",
179+
"ROSubObjectSRNAIIPv4Node");
175180
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
176181
PCEP_SR_SUBOBJ_NAI_IPV6_NODE,
177-
"RO Sub-Object SR NAI IPv6 Node");
182+
"RO Sub-Object SR NAI IPv6 Node",
183+
"ROSubObjectSRNAIIPv6Node");
178184
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
179185
PCEP_SR_SUBOBJ_NAI_IPV4_ADJACENCY,
180-
"RO Sub-Object SR NAI IPv4 Adj");
186+
"RO Sub-Object SR NAI IPv4 Adj",
187+
"ROSubObjectSRNAIIPv4Adj");
181188
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
182189
PCEP_SR_SUBOBJ_NAI_IPV6_ADJACENCY,
183-
"RO Sub-Object SR NAI IPv6 Adj");
190+
"RO Sub-Object SR NAI IPv6 Adj",
191+
"ROSubObjectSRNAIIPv6Adj");
184192
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
185193
PCEP_SR_SUBOBJ_NAI_UNNUMBERED_IPV4_ADJACENCY,
186-
"RO Sub-Object SR NAI Unnumbered IPv4 Adj");
194+
"RO Sub-Object SR NAI Unnumbered IPv4 Adj",
195+
"ROSubObjectSRNAIUnnumberedIPv4Adj");
187196
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
188197
PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY,
189-
"RO Sub-Object SR NAI Link Local IPv6 Adj");
198+
"RO Sub-Object SR NAI Link Local IPv6 Adj",
199+
"ROSubObjectSRNAILinkLocalIPv6Adj");
190200
create_subgroup_counter(rx_subobj_sr_nai_subgroup,
191201
PCEP_SR_SUBOBJ_NAI_UNKNOWN,
192-
"RO Sub-Object SR NAI Unknown");
202+
"RO Sub-Object SR NAI Unknown",
203+
"ROSubObjectSRNAIUnknown");
193204

194205
struct counters_subgroup *tx_subobj_sr_nai_subgroup =
195206
clone_counters_subgroup(rx_subobj_sr_nai_subgroup,
@@ -204,56 +215,60 @@ void create_session_counters(pcep_session *session)
204215
PCEP_OBJ_TLV_TYPE_UNKNOWN + 1);
205216
create_subgroup_counter(rx_tlv_subgroup,
206217
PCEP_OBJ_TLV_TYPE_NO_PATH_VECTOR,
207-
"TLV No Path Vector");
218+
"TLV No Path Vector", "TLVNoPathVector");
208219
create_subgroup_counter(rx_tlv_subgroup, PCEP_OBJ_TLV_TYPE_VENDOR_INFO,
209-
"TLV Vendor Info");
220+
"TLV Vendor Info", "TLVVendorInfo");
210221
create_subgroup_counter(rx_tlv_subgroup,
211222
PCEP_OBJ_TLV_TYPE_STATEFUL_PCE_CAPABILITY,
212-
"TLV Stateful PCE Capability");
223+
"TLV Stateful PCE Capability",
224+
"TLVStatefulPCCapability");
213225
create_subgroup_counter(rx_tlv_subgroup,
214226
PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME,
215-
"TLV Symbolic Path Name");
227+
"TLV Symbolic Path Name", "TLVSymbolicPathName");
216228
create_subgroup_counter(rx_tlv_subgroup,
217229
PCEP_OBJ_TLV_TYPE_IPV4_LSP_IDENTIFIERS,
218-
"TLV IPv4 LSP Identifier");
230+
"TLV IPv4 LSP Identifier",
231+
"TLVIPv4LSPIdentifier");
219232
create_subgroup_counter(rx_tlv_subgroup,
220233
PCEP_OBJ_TLV_TYPE_IPV6_LSP_IDENTIFIERS,
221-
"TLV IPv6 LSP Identifier");
234+
"TLV IPv6 LSP Identifier",
235+
"TLVIPv6LSPIdentifier");
222236
create_subgroup_counter(rx_tlv_subgroup,
223237
PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE,
224-
"TLV LSP Error Code");
238+
"TLV LSP Error Code", "TLVLSPErrorCode");
225239
create_subgroup_counter(rx_tlv_subgroup,
226240
PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC,
227-
"TLV RSVP Error Spec");
241+
"TLV RSVP Error Spec", "TLVRSVPErrorSpec");
228242
create_subgroup_counter(rx_tlv_subgroup,
229243
PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION,
230-
"TLV LSP DB Version");
244+
"TLV LSP DB Version", "TLVLSPDBVersion");
231245
create_subgroup_counter(rx_tlv_subgroup,
232246
PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID,
233-
"TLV Speaker Entity ID");
247+
"TLV Speaker Entity ID", "TLVSpeakerEntityId");
234248
create_subgroup_counter(rx_tlv_subgroup,
235249
PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY,
236-
"TLV SR PCE Capability");
250+
"TLV SR PCE Capability", "TLVSRPCECapability");
237251
create_subgroup_counter(rx_tlv_subgroup,
238252
PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE,
239-
"TLV Path Setup Type");
253+
"TLV Path Setup Type", "TLVPathSetupType");
240254
create_subgroup_counter(rx_tlv_subgroup,
241255
PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY,
242-
"TLV Path Setup Type Capability");
256+
"TLV Path Setup Type Capability",
257+
"TLVPathSetupTypeCapability");
243258
create_subgroup_counter(rx_tlv_subgroup,
244259
PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID,
245-
"TLV SR Policy PolId");
260+
"TLV SR Policy PolId", "TLVSRPolicyPolId");
246261
create_subgroup_counter(rx_tlv_subgroup,
247262
PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_NAME,
248-
"TLV SR Policy PolName");
263+
"TLV SR Policy PolName", "TLVSRPolicyPolName");
249264
create_subgroup_counter(rx_tlv_subgroup,
250265
PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_ID,
251-
"TLV SR Policy CpathId");
266+
"TLV SR Policy CpathId", "TLVSRPolicyCpathId");
252267
create_subgroup_counter(rx_tlv_subgroup,
253268
PCEP_OBJ_TLV_TYPE_SRPOLICY_CPATH_PREFERENCE,
254-
"TLV SR Policy CpathRef");
269+
"TLV SR Policy CpathRef", "TLVSRPolicyCpathRef");
255270
create_subgroup_counter(rx_tlv_subgroup, PCEP_OBJ_TLV_TYPE_UNKNOWN,
256-
"TLV Unknown");
271+
"TLV Unknown", "TLVUnknown");
257272

258273
struct counters_subgroup *tx_tlv_subgroup = clone_counters_subgroup(
259274
rx_tlv_subgroup, "TX TLV counters", COUNTER_SUBGROUP_ID_TX_TLV);
@@ -265,28 +280,32 @@ void create_session_counters(pcep_session *session)
265280
"Events counters", COUNTER_SUBGROUP_ID_EVENT, MAX_COUNTERS);
266281
create_subgroup_counter(events_subgroup,
267282
PCEP_EVENT_COUNTER_ID_PCC_CONNECT,
268-
"PCC connect");
283+
"PCC connect", "PCCConnect");
269284
create_subgroup_counter(events_subgroup,
270285
PCEP_EVENT_COUNTER_ID_PCE_CONNECT,
271-
"PCE connect");
286+
"PCE connect", "PCEConnect");
272287
create_subgroup_counter(events_subgroup,
273288
PCEP_EVENT_COUNTER_ID_PCC_DISCONNECT,
274-
"PCC disconnect");
289+
"PCC disconnect", "PCCDisconnect");
275290
create_subgroup_counter(events_subgroup,
276291
PCEP_EVENT_COUNTER_ID_PCE_DISCONNECT,
277-
"PCE disconnect");
292+
"PCE disconnect", "PCEDisconnect");
278293
create_subgroup_counter(events_subgroup,
279294
PCEP_EVENT_COUNTER_ID_TIMER_KEEPALIVE,
280-
"Timer KeepAlive expired");
295+
"Timer KeepAlive expired",
296+
"timerKeepAliveExpired");
281297
create_subgroup_counter(events_subgroup,
282298
PCEP_EVENT_COUNTER_ID_TIMER_DEADTIMER,
283-
"Timer DeadTimer expired");
299+
"Timer DeadTimer expired",
300+
"timerDeadTimerExpired");
284301
create_subgroup_counter(events_subgroup,
285302
PCEP_EVENT_COUNTER_ID_TIMER_OPENKEEPWAIT,
286-
"Timer OpenKeepWait expired");
303+
"Timer OpenKeepWait expired",
304+
"timerOpenKeepWaitExpired");
287305
create_subgroup_counter(events_subgroup,
288306
PCEP_EVENT_COUNTER_ID_TIMER_OPENKEEPALIVE,
289-
"Timer OpenKeepAlive expired");
307+
"Timer OpenKeepAlive expired",
308+
"timerOpenKeepAliveExpired");
290309

291310
/*
292311
* Create the parent counters group

pceplib/pcep_utils_counters.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ clone_counters_subgroup(struct counters_subgroup *subgroup,
139139
if (counter != NULL) {
140140
create_subgroup_counter(cloned_subgroup,
141141
counter->counter_id,
142-
counter->counter_name);
142+
counter->counter_name,
143+
counter->counter_name_json);
143144
}
144145
}
145146

@@ -180,7 +181,8 @@ bool add_counters_subgroup(struct counters_group *group,
180181
}
181182

182183
bool create_subgroup_counter(struct counters_subgroup *subgroup,
183-
uint32_t counter_id, const char *counter_name)
184+
uint32_t counter_id, const char *counter_name,
185+
const char *counter_name_json)
184186
{
185187
if (subgroup == NULL) {
186188
pcep_log(
@@ -212,7 +214,9 @@ bool create_subgroup_counter(struct counters_subgroup *subgroup,
212214
counter->counter_id = counter_id;
213215
strlcpy(counter->counter_name, counter_name,
214216
sizeof(counter->counter_name));
215-
217+
if (counter_name_json)
218+
strlcpy(counter->counter_name_json, counter_name_json,
219+
sizeof(counter->counter_name_json));
216220
subgroup->num_counters++;
217221
subgroup->counters[counter->counter_id] = counter;
218222

0 commit comments

Comments
 (0)