Project

General

Profile

Actions

Optimization #2780

open

Convert DNP3 from C to Rust

Added by Danny Browning about 5 years ago. Updated about 3 years ago.

Status:
New
Priority:
Normal
Target version:
Effort:
medium
Difficulty:
Label:
Protocol

Description

Convert parser from C to Rust.

Related to https://redmine.openinfosecfoundation.org/issues/2778


Related issues 1 (1 open0 closed)

Related to Suricata - Task #2778: tracking: port app-layer parsers to RustNewOISF DevActions
Actions #1

Updated by Danny Browning about 5 years ago

  • Related to Task #2778: tracking: port app-layer parsers to Rust added
Actions #2

Updated by Victor Julien about 5 years ago

  • Target version changed from 5.0beta1 to TBD
Actions #3

Updated by Victor Julien about 5 years ago

  • Tracker changed from Bug to Optimization
Actions #4

Updated by Victor Julien about 5 years ago

  • Assignee set to Community Ticket
Actions #5

Updated by Victor Julien about 4 years ago

  • Label Protocol added
Actions #6

Updated by Simon Dugas about 3 years ago

We are working on a rust parser for DNP3 so I wouldn't mind taking on this ticket.

The move/implementation would be similar to modbus (https://github.com/OISF/suricata/pull/5810) once that code review is finalized.

Implementation Steps
  1. Move app-layer parser for DNP3 from C to Rust, leaving C tests as much as possible.
  2. Move detection module for DNP3 from C to Rust, leaving C tests as much as possible.
  3. Move tests from C to rust.

Out of Scope
Should we move eve json logging for DNP3 to rust or is this out of scope?

Actions #7

Updated by Jason Ish about 3 years ago

Once the transaction objects are Rust, I think its only natural to have the logging in Rust as well, otherwise there will be a lot of getter's or unecessary restrictions keeping the structs C compatible. The C code uses the same input to generate the loggers as it does the parser.

Have you taked a look at https://github.com/rust-bakery/nom-derive? I thought something like that, or inspired by it might help with a migration of DNP3 to Rust.

Actions #8

Updated by Simon Dugas about 3 years ago

Haven't heard of `nom-derive`. Thank you for the info.

Actions

Also available in: Atom PDF