@@ -274,7 +274,6 @@ validate_string_param(char* param_name, char* param, uint32_t param_maxlen, jbpf
274
274
static int
275
275
validate_codeletset (struct jbpf_codeletset_load_req * load_req , jbpf_codeletset_load_error_s * err )
276
276
{
277
-
278
277
if (!load_req ) {
279
278
char msg [JBPF_MAX_ERR_MSG_SIZE ];
280
279
sprintf (msg , "load_req is NULL\n" );
@@ -286,7 +285,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
286
285
}
287
286
288
287
if (validate_string_param ("codeletset_id.name" , load_req -> codeletset_id .name , JBPF_CODELETSET_NAME_LEN , err ) != 1 ) {
289
- return JBPF_CODELET_PARAM_INVALID ;
288
+ goto err ;
290
289
}
291
290
292
291
if (load_req -> num_codelet_descriptors == 0 ) {
@@ -296,7 +295,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
296
295
if (err ) {
297
296
strcpy (err -> err_msg , msg );
298
297
}
299
- return JBPF_CODELET_PARAM_INVALID ;
298
+ goto err ;
300
299
}
301
300
302
301
if (load_req -> num_codelet_descriptors > JBPF_MAX_CODELETS_IN_CODELETSET ) {
@@ -306,39 +305,39 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
306
305
if (err ) {
307
306
strcpy (err -> err_msg , msg );
308
307
}
309
- return JBPF_CODELET_PARAM_INVALID ;
308
+ goto err ;
310
309
}
311
310
312
311
for (int i = 0 ; i < load_req -> num_codelet_descriptors ; ++ i ) {
313
312
314
313
// validate codelet_name
315
314
if (validate_string_param (
316
315
"codelet_name" , load_req -> codelet_descriptor [i ].codelet_name , JBPF_CODELET_NAME_LEN , err ) != 1 ) {
317
- return JBPF_CODELET_PARAM_INVALID ;
316
+ goto err ;
318
317
}
319
318
320
319
// validate hook_name
321
320
if (validate_string_param ("hook_name" , load_req -> codelet_descriptor [i ].hook_name , JBPF_HOOK_NAME_LEN , err ) !=
322
321
1 ) {
323
- return JBPF_CODELET_PARAM_INVALID ;
322
+ goto err ;
324
323
}
325
324
326
325
// validate codelet_path
327
326
if (validate_string_param ("codelet_path" , load_req -> codelet_descriptor [i ].codelet_path , JBPF_PATH_LEN , err ) !=
328
327
1 ) {
329
- return JBPF_CODELET_PARAM_INVALID ;
328
+ goto err ;
330
329
}
331
330
332
331
// validate in_io_channel
333
332
for (int ch = 0 ; ch < load_req -> codelet_descriptor [i ].num_in_io_channel ; ch ++ ) {
334
333
jbpf_io_channel_desc_s * chan = & load_req -> codelet_descriptor [i ].in_io_channel [ch ];
335
- if (validate_string_param ("in_io_channel.name " , chan -> name , JBPF_IO_CHANNEL_NAME_LEN , err ) != 1 ) {
336
- return JBPF_CODELET_PARAM_INVALID ;
334
+ if (validate_string_param ("in_io_channel.name" , chan -> name , JBPF_IO_CHANNEL_NAME_LEN , err ) != 1 ) {
335
+ goto err ;
337
336
}
338
337
#ifdef JBPF_EXPERIMENTAL_FEATURES
339
338
if (chan -> has_serde ) {
340
339
if (validate_string_param ("in_io_channel.serde " , chan -> serde .file_path , JBPF_PATH_LEN , err ) != 1 ) {
341
- return JBPF_CODELET_PARAM_INVALID ;
340
+ goto err ;
342
341
}
343
342
// check Serde file exists
344
343
FILE * file = fopen (chan -> serde .file_path , "rb" );
@@ -349,7 +348,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
349
348
if (err ) {
350
349
strcpy (err -> err_msg , msg );
351
350
}
352
- return JBPF_CODELET_PARAM_INVALID ;
351
+ goto err ;
353
352
}
354
353
fclose (file );
355
354
}
@@ -359,13 +358,13 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
359
358
// validate out_io_channel
360
359
for (int ch = 0 ; ch < load_req -> codelet_descriptor [i ].num_out_io_channel ; ch ++ ) {
361
360
jbpf_io_channel_desc_s * chan = & load_req -> codelet_descriptor [i ].out_io_channel [ch ];
362
- if (validate_string_param ("out_io_channel.name " , chan -> name , JBPF_IO_CHANNEL_NAME_LEN , err ) != 1 ) {
363
- return JBPF_CODELET_PARAM_INVALID ;
361
+ if (validate_string_param ("out_io_channel.name" , chan -> name , JBPF_IO_CHANNEL_NAME_LEN , err ) != 1 ) {
362
+ goto err ;
364
363
}
365
364
#ifdef JBPF_EXPERIMENTAL_FEATURES
366
365
if (chan -> has_serde ) {
367
366
if (validate_string_param ("out_io_channel.serde " , chan -> serde .file_path , JBPF_PATH_LEN , err ) != 1 ) {
368
- return JBPF_CODELET_PARAM_INVALID ;
367
+ goto err ;
369
368
}
370
369
// check Serde file exists
371
370
FILE * file = fopen (chan -> serde .file_path , "rb" );
@@ -376,7 +375,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
376
375
if (err ) {
377
376
strcpy (err -> err_msg , msg );
378
377
}
379
- return JBPF_CODELET_PARAM_INVALID ;
378
+ goto err ;
380
379
}
381
380
fclose (file );
382
381
}
@@ -386,17 +385,17 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
386
385
// validate linked_maps
387
386
for (int m = 0 ; m < load_req -> codelet_descriptor [i ].num_linked_maps ; m ++ ) {
388
387
jbpf_linked_map_descriptor_s * map = & load_req -> codelet_descriptor [i ].linked_maps [m ];
389
- if (validate_string_param ("linked_maps.map_name " , map -> map_name , JBPF_MAP_NAME_LEN , err ) != 1 ) {
390
- return JBPF_CODELET_PARAM_INVALID ;
388
+ if (validate_string_param ("linked_maps.map_name" , map -> map_name , JBPF_MAP_NAME_LEN , err ) != 1 ) {
389
+ goto err ;
391
390
}
392
391
if (validate_string_param (
393
- "linked_maps.linked_codelet_name " , map -> linked_codelet_name , JBPF_CODELET_NAME_LEN , err ) != 1 ) {
394
- return JBPF_CODELET_PARAM_INVALID ;
392
+ "linked_maps.linked_codelet_name" , map -> linked_codelet_name , JBPF_CODELET_NAME_LEN , err ) != 1 ) {
393
+ goto err ;
395
394
}
396
395
397
- if (validate_string_param ("linked_maps.linked_map_name " , map -> linked_map_name , JBPF_MAP_NAME_LEN , err ) !=
396
+ if (validate_string_param ("linked_maps.linked_map_name" , map -> linked_map_name , JBPF_MAP_NAME_LEN , err ) !=
398
397
1 ) {
399
- return JBPF_CODELET_PARAM_INVALID ;
398
+ goto err ;
400
399
}
401
400
}
402
401
// check that a codelet does not link to itself
@@ -415,7 +414,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
415
414
if (err ) {
416
415
strcpy (err -> err_msg , msg );
417
416
}
418
- return JBPF_CODELET_PARAM_INVALID ;
417
+ goto err ;
419
418
}
420
419
}
421
420
// check that map_name is unique
@@ -431,7 +430,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
431
430
if (err ) {
432
431
strcpy (err -> err_msg , msg );
433
432
}
434
- return JBPF_CODELET_PARAM_INVALID ;
433
+ goto err ;
435
434
}
436
435
}
437
436
}
@@ -454,7 +453,7 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
454
453
if (err ) {
455
454
strcpy (err -> err_msg , msg );
456
455
}
457
- return JBPF_CODELET_PARAM_INVALID ;
456
+ goto err ;
458
457
}
459
458
}
460
459
}
@@ -468,19 +467,23 @@ validate_codeletset(struct jbpf_codeletset_load_req* load_req, jbpf_codeletset_l
468
467
char msg [JBPF_MAX_ERR_MSG_SIZE ];
469
468
sprintf (
470
469
msg ,
471
- "codelet_name %s is not unique. Unloading codeletset %s\n" ,
470
+ "codelet_name %s is not unique ( codeletset %s) \n" ,
472
471
load_req -> codelet_descriptor [i ].codelet_name ,
473
472
load_req -> codeletset_id .name );
474
473
jbpf_logger (JBPF_ERROR , "%s" , msg );
475
474
if (err ) {
476
475
strcpy (err -> err_msg , msg );
477
476
}
478
- return JBPF_CODELET_PARAM_INVALID ;
477
+ goto err ;
479
478
}
480
479
}
481
480
}
482
481
483
482
return JBPF_CODELET_LOAD_SUCCESS ;
483
+
484
+ err :
485
+ jbpf_logger (JBPF_ERROR , "Codeletset %s validation failed.\n" , load_req -> codeletset_id .name );
486
+ return JBPF_CODELET_PARAM_INVALID ;
484
487
}
485
488
486
489
static void *
0 commit comments