Skip to main content

mm1_multinode/
proto.rs

1use mm1_address::address::Address;
2use mm1_address::subnet::NetAddress;
3use mm1_proto::message;
4use mm1_proto_network_management::protocols::LocalTypeKey;
5
6use crate::common::RouteMetric;
7
8#[message(base_path = ::mm1_proto)]
9pub struct SubscribeToRoutesRequest {
10    pub deliver_to: Address,
11}
12
13#[message(base_path = ::mm1_proto)]
14pub struct SubscribeToRoutesResponse {
15    pub routes: Vec<SetRoute>,
16}
17
18#[message(base_path = ::mm1_proto)]
19pub struct Forward {
20    pub local_type_key: LocalTypeKey,
21    #[serde(with = "mm1_common::serde::binary")]
22    pub body:           Box<[u8]>,
23}
24
25#[derive(Clone)]
26#[message(base_path = ::mm1_proto)]
27pub struct SetRoute {
28    pub message:     LocalTypeKey,
29    pub destination: NetAddress,
30    pub via:         Option<Address>,
31    pub metric:      Option<RouteMetric>,
32}
33
34impl From<(LocalTypeKey, NetAddress, Option<Address>, RouteMetric)> for SetRoute {
35    fn from(
36        (message, destination, via, metric): (
37            LocalTypeKey,
38            NetAddress,
39            Option<Address>,
40            RouteMetric,
41        ),
42    ) -> Self {
43        Self {
44            message,
45            destination,
46            via,
47            metric: Some(metric),
48        }
49    }
50}