Optimization #3524
closedRemove unsafe Rust code for ALPROTO_X constants
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)
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
Updated by Philippe Antoine over 4 years ago
Thanks for working on this and letting us know
Updated by Victor Julien over 4 years ago
- Status changed from New to Assigned
- Assignee set to Nick Price
- Target version set to TBD
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
Updated by Philippe Antoine about 4 years ago
Hello Nick, where are you with this ? Could you create a draft PR ?
Updated by Philippe Antoine almost 2 years ago
- Status changed from Assigned to In Review
- Assignee changed from Nick Price to Philippe Antoine
Updated by Philippe Antoine almost 2 years ago
- Target version changed from TBD to 8.0.0-beta1
Updated by Philippe Antoine over 1 year ago
- Related to Task #5053: app-layer: dynamic alproto IDs added
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...
Updated by Victor Julien over 1 year ago
- Assignee deleted (
Philippe Antoine) - Target version deleted (
8.0.0-beta1)
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
Updated by Jason Ish over 1 year ago
We already depend on lazy_static
, so if it solves the problem, sure, its there.