Skip to content

pan: Roadmap #286

@rolbk

Description

@rolbk

The goal is to eventually merge pan into scionproto/scion. However, the library is not yet production-ready. The following items need to be addressed before it is ready for wider use.

API Redesign

  • Redesign API: State should be shared between connections without being global
    • Possible solution: Client struct encapsulating all shared state
    • Remove global singleton host context (hardcodes SCIOND connection)
    • Remove global pathpool and stats singletons
    • Make path pool configurable (currently no configuration options)
    • Reduce long parameter lists via options pattern or shared client state

Type Cleanup

  • Use original types: Use types from snet and other SCION components instead of redefining it
    • addr.IA
    • maybe pan.Path -> snet path.Path
    • possibly other types

PingingSelector Improvements

  • API: SetActive() must be called at the correct time - refactor to call automatically
  • Replace object-wide mutex with RWLock (currently locks for every packet sent)
  • Fix reliability issues with proper testing
  • Port internal ping package to use SCION CLI ping logic (currently copied from early SCION version)

Policy Improvements

  • Fix "With" pattern: Calling WithPolicy() multiple times only sets the last policy - should build chain policy automatically

Code Organization

  • Restructure into subpackages: Currently ~6000 LOC in 34 files, all in root package
  • Drop RAINS support: Not actively used, adds maintenance burden

Testing

  • Add unit tests: Improve test coverage across the library

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions