rotonda 0.5.2-alpha.0

composable, programmable BGP engine
Documentation
@use "Template";

@{
    let (asn_a, addr_a, ribview_a) = (
        self.peer_a.remote_asn,
        self.peer_a.remote_addr,
        self.peer_a.peer_rib_type
    );
    let (asn_b, addr_b, ribview_b) = (
        self.peer_b.remote_asn,
        self.peer_b.remote_addr,
        self.peer_b.peer_rib_type
    );

    let (header_a, header_b) = if
        asn_a == asn_b && asn_a.is_some()
            && addr_a == addr_b && addr_a.is_some()
        {
            // same asn+ip, only show rib view
            (
            ribview_a.alt("").to_string(),
            ribview_b.alt("").to_string(),
            )
        } else {
            (
            format!(
                "{} {}/{}",
                ribview_a.alt(""), asn_a.alt(""), (addr_a.alt(""))
            ),

            format!(
                "{} {}/{}",
                ribview_b.alt(""), asn_b.alt(""), (addr_b.alt(""))
            )
            )
        }
    ;
}

<Template title={
    Routes diff 
}>

Left: @if let Some(bmp) = &self.bmp_a
{
    @#bmp_details(&bmp) (BMP from @bmp.info.remote_addr.alt(""))
}
    @ribview_a.alt("") @asn_a.alt("") (@addr_a.alt("")) <br/>
vs <br/>

Right: @if let Some(bmp) = &self.bmp_b
{
    @#bmp_details(&bmp) (BMP from @bmp.info.remote_addr.alt(""))
}
    @ribview_b.alt("") @asn_b.alt("") (@addr_b.alt("")) <br/>

@if let Some((a,b)) = self.bmp_a.as_ref().zip(self.bmp_b.as_ref()) {
    @if a.id != b.id {
        <a href="/peers/diff/@a.id/@b.id">Compare peer presence</a>
        between these two routers<br/>
    } else {
        <br/>
    }
}
<table>
    <tr>
        <th>@header_a</th>
        <th>both</th>
        <th>@header_b</th>
    </tr>
    
    @for prefix in &self.only_a {
    <tr>
        <td><a href="/routes/@prefix">@prefix</a></td>
        <td></td>
        <td></td>
    </tr>
    }
    @for prefix in &self.only_b {
    <tr>
        <td></td>
        <td></td>
        <td><a href="/routes/@prefix">@prefix</a></td>
    </tr>
    }
    @for prefix in &self.both {
    <tr>
        <td></td>
        <td><a href="/routes/@prefix">@prefix</a></td>
        <td></td>
    </tr>
    }
</table>
</Template>