route_verification_lex/
peering.rs1use super::*;
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
4pub struct Peering {
5 pub as_expr: AsExpr,
6 #[serde(default)]
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub router_expr1: Option<AsExpr>,
9 #[serde(default)]
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub router_expr2: Option<AsExpr>,
12}
13
14#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
15#[serde(untagged)]
16pub enum AsExpr {
17 Field(String),
18 AsComp(ComplexAsExpr),
19}
20
21#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
22#[serde(rename_all = "snake_case")]
23pub enum ComplexAsExpr {
24 And {
25 left: Box<AsExpr>,
26 right: Box<AsExpr>,
27 },
28 Or {
29 left: Box<AsExpr>,
30 right: Box<AsExpr>,
31 },
32 Except {
33 left: Box<AsExpr>,
34 right: Box<AsExpr>,
35 },
36 Group(Box<AsExpr>),
37}