Project

General

Profile

Actions

Optimization #3524

closed

Remove unsafe Rust code for ALPROTO_X constants

Added by Philippe Antoine over 4 years ago. Updated over 1 year ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
Effort:
Difficulty:
Label:

Description

Now, these constants are defined in C enumeration `AppProtoEnum`

In Rust, we use a global variable ('`static mut`) whose value we get as a return of a C function call.
As a global variable, we must use `unsafe` every time we read it

We should either :
- export these from C to Rust with bindgen
- move this enum to Rust and export it to C with cbindgen (cbindgen is already used)


Related issues 1 (1 open0 closed)

Related to Suricata - Task #5053: app-layer: dynamic alproto IDsIn ReviewPhilippe AntoineActions
Actions #1

Updated by Nick Price over 4 years ago

Got started on this - moved the enum to Rust and am exporting it with cbindgen

Looks like there are a few "cyclic header dependencies" that will have to be sorted out - other than that it's just a question of safely accessing/mutating the global variables

Actions #2

Updated by Philippe Antoine over 4 years ago

Thanks for working on this and letting us know

Actions #3

Updated by Victor Julien over 4 years ago

  • Status changed from New to Assigned
  • Assignee set to Nick Price
  • Target version set to TBD
Actions #4

Updated by Nick Price over 4 years ago

Think I've got everything sorted except the header cross-dependencies - once that's done I'll run the test suites and make a PR - hopefully what I did makes sense :P

Actions #5

Updated by Philippe Antoine about 4 years ago

Hello Nick, where are you with this ? Could you create a draft PR ?

Actions #6

Updated by Philippe Antoine almost 2 years ago

  • Status changed from Assigned to In Review
  • Assignee changed from Nick Price to Philippe Antoine
Actions #7

Updated by Philippe Antoine almost 2 years ago

  • Target version changed from TBD to 8.0.0-beta1
Actions #8

Updated by Philippe Antoine over 1 year ago

  • Related to Task #5053: app-layer: dynamic alproto IDs added
Actions #9

Updated by Philippe Antoine over 1 year ago

  • Status changed from In Review to Rejected

Closing in favor of #5053

We cannot have a finite rust enumeration if we want dynamic registration...

Actions #10

Updated by Victor Julien over 1 year ago

  • Assignee deleted (Philippe Antoine)
  • Target version deleted (8.0.0-beta1)
Actions #11

Updated by Philippe Antoine over 1 year ago

@Jason Ish should we use lazy_static crate ?
Because these are initialized at runtime, but then, they are constants

Actions #12

Updated by Jason Ish over 1 year ago

We already depend on lazy_static, so if it solves the problem, sure, its there.

Actions

Also available in: Atom PDF