name: frr
version: '@VERSION@'
summary: FRRouting BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM/LDP/EIGRP/BFD routing daemon
description: BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM/LDP/EIGRP/BFD routing daemon
 FRRouting (FRR) is free software which manages TCP/IP based routing
 protocols. It supports BGP4, BGP4+, OSPFv2, OSPFv3, IS-IS, RIPv1, RIPv2,
 RIPng, PIM, LDP, Babel, EIGRP, PBR (Policy-based routing), PATHD (Segment
 routing), BFD and OpenFabric as well as the IPv6 versions of these.
 FRRouting (frr) is a fork of Quagga.
confinement: strict
grade: devel
base: core18

apps:
    vtysh:
        command: bin/vtysh --vty_socket $SNAP_DATA --config_dir $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
        aliases: [vtysh]
    version:
        command: bin/show_version
    readme:
        command: bin/cat $SNAP/doc/README.usage.md
    zebra:
        command: bin/zebra-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    bgpd:
        command: bin/bgpd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    ospfd:
        command: bin/ospfd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    ospf6d:
        command: bin/ospf6d-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    isisd:
        command: bin/isisd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    ripd:
        command: bin/ripd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    ripngd:
        command: bin/ripngd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    pimd:
        command: bin/pimd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    pim6d:
        command: bin/pim6d-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    ldpd:
        command: bin/ldpd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    nhrpd:
        command: bin/nhrpd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    babeld:
        command: bin/babeld-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    eigrpd:
        command: bin/eigrpd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    pbrd:
        command: bin/pbrd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    staticd:
        command: bin/staticd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    bfdd:
        command: bin/bfdd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    fabricd:
        command: bin/fabricd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    vrrpd:
        command: bin/vrrpd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    pathd:
        command: bin/pathd-service
        daemon: simple
        plugs:
            - network
            - network-bind
            - network-control
    set:
        command: bin/set-options
    zebra-debug:
        command: sbin/zebra -f $SNAP_DATA/zebra.conf --pid_file $SNAP_DATA/zebra.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    bgpd-debug:
        command: sbin/bgpd -f $SNAP_DATA/bgpd.conf --pid_file $SNAP_DATA/bgpd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA --moduledir $SNAP/lib/frr/modules
        plugs:
            - network
            - network-bind
            - network-control
    ospfd-debug:
        command: sbin/ospfd -f $SNAP_DATA/ospfd.conf --pid_file $SNAP_DATA/ospfd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    ospf6d-debug:
        command: sbin/ospf6d -f $SNAP_DATA/ospf6d.conf --pid_file $SNAP_DATA/ospf6d.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    isisd-debug:
        command: sbin/isisd -f $SNAP_DATA/isisd.conf --pid_file $SNAP_DATA/isisd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    ripd-debug:
        command: sbin/ripd -f $SNAP_DATA/ripd.conf --pid_file $SNAP_DATA/ripd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    ripngd-debug:
        command: sbin/ripngd -f $SNAP_DATA/ripngd.conf --pid_file $SNAP_DATA/ripngd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    pimd-debug:
        command: sbin/pimd -f $SNAP_DATA/pimd.conf --pid_file $SNAP_DATA/pimd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    pim6d-debug:
        command: sbin/pim6d -f $SNAP_DATA/pim6d.conf --pid_file $SNAP_DATA/pim6d.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    ldpd-debug:
        command: sbin/ldpd -f $SNAP_DATA/ldpd.conf --pid_file $SNAP_DATA/ldpd.pid --socket $SNAP_DATA/zsock --ctl_socket $SNAP_DATA --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    nhrpd-debug:
        command: sbin/nhrpd -f $SNAP_DATA/nhrpd.conf --pid_file $SNAP_DATA/nhrpd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    babeld-debug:
        command: sbin/babeld -f $SNAP_DATA/babeld.conf --pid_file $SNAP_DATA/babeld.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    eigrpd-debug:
        command: sbin/eigrpd -f $SNAP_DATA/eigrpd.conf --pid_file $SNAP_DATA/eigrpd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    pbrd-debug:
        command: sbin/pbrd -f $SNAP_DATA/pbrd.conf --pid_file $SNAP_DATA/pbrd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    staticd-debug:
        command: sbin/staticd -f $SNAP_DATA/staticd.conf --pid_file $SNAP_DATA/staticd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    bfdd-debug:
        command: sbin/bfdd -f $SNAP_DATA/bfdd.conf --pid_file $SNAP_DATA/bfdd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    fabricd-debug:
        command: sbin/fabricd -f $SNAP_DATA/fabricd.conf --pid_file $SNAP_DATA/fabricd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    vrrpd-debug:
        command: sbin/vrrpd -f $SNAP_DATA/vrrpd.conf --pid_file $SNAP_DATA/vrrpd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control
    pathd-debug:
        command: sbin/pathd -f $SNAP_DATA/pathd.conf --pid_file $SNAP_DATA/pathd.pid --socket $SNAP_DATA/zsock --vty_socket $SNAP_DATA
        plugs:
            - network
            - network-bind
            - network-control

parts:
    rtrlib:
        build-packages:
           - cmake
           - make
           - gcc
           - libssh-dev
        stage-packages:
           - libssh-4
           - zlib1g
        prime:
           - lib/librtr.so*
           - usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libssh.so*
        source: https://github.com/rtrlib/rtrlib.git
        source-type: git
        source-tag: v0.8.0
        plugin: cmake
        configflags:
           - -DCMAKE_BUILD_TYPE=Release
    libyang:
        build-packages:
           - cmake
           - make
           - gcc
           - libpcre2-dev
        stage-packages:
           - libpcre2-8-0
        source: https://github.com/CESNET/libyang.git
        source-type: git
        source-tag: v2.1.128
        plugin: cmake
        configflags:
           - -DCMAKE_INSTALL_PREFIX:PATH=/usr
           - -DENABLE_LYD_PRIV=ON
           - -DENABLE_CACHE=ON
           - -DCMAKE_BUILD_TYPE:String="Release"
    frr:
        after: [rtrlib,libyang]
        build-packages:
           - gcc
           - autoconf
           - automake
           - libtool
           - make
           - gawk
           - libreadline-dev
           - libelf-dev
           - texinfo
           - libncurses5-dev
           - texlive-latex-base
           - texlive-generic-recommended
           - libcap-dev
           - imagemagick
           - ghostscript
           - groff
           - libpcre3-dev
           - chrpath
           - pkg-config
           - libjson-c-dev
           - libc-ares-dev
           - bison
           - flex
           - python3-dev
           - libprotobuf-c-dev
           - protobuf-c-compiler
           - python3-sphinx
        stage-packages:
           - coreutils
           - iproute2
           - logrotate
           - libcap2
           - libtinfo5
           - libreadline7
           - libjson-c3
           - libc-ares2
           - libatm1
           - libprotobuf-c1
           - libdb5.3
           - libacl1
           - libattr1
           - libaudit1
           - libcap-ng0
           - libpam0g
           - libpcre3
           - libselinux1
           - libxtables12
        plugin: autotools
        source: ../frr-@PACKAGE_VERSION@.tar.gz
        configflags:
            - --enable-vtysh
            - --enable-isisd
            - --enable-watchfrr
            - --enable-ospfclient=yes
            - --enable-ospfapi=yes
            - --enable-multipath=64
            - --enable-rtadv
            - --enable-user=root
            - --enable-group=root
            - --enable-pimd
            - --enable-pim6d
            - --enable-ldpd
            - --enable-fpm
            - --enable-protobuf
            - --enable-rpki
            - --enable-vrrpd
            - --enable-configfile-mask=0640
            - --enable-logfile-mask=0640
            - --sysconfdir=/etc
            - --localstatedir=/var
            - --sbindir=/sbin
            - --bindir=/bin
            - --with-pkg-extra-version=@PACKAGE_EXTRAVERSION@
    frr-defaults:
        plugin: dump
        source: defaults
        organize:
            zebra.conf.default: etc/frr/zebra.conf.default
            bgpd.conf.default: etc/frr/bgpd.conf.default
            isisd.conf.default: etc/frr/isisd.conf.default
            ospf6d.conf.default: etc/frr/ospf6d.conf.default
            ospfd.conf.default: etc/frr/ospfd.conf.default
            pimd.conf.default: etc/frr/pimd.conf.default
            pim6d.conf.default: etc/frr/pim6d.conf.default
            ripd.conf.default: etc/frr/ripd.conf.default
            ripngd.conf.default: etc/frr/ripngd.conf.default
            ldpd.conf.default: etc/frr/ldpd.conf.default
            nhrpd.conf.default: etc/frr/nhrpd.conf.default
            babeld.conf.default: etc/frr/babeld.conf.default
            eigrpd.conf.default: etc/frr/eigrpd.conf.default
            pbrd.conf.default: etc/frr/pbrd.conf.default
            bfdd.conf.default: etc/frr/bfdd.conf.default
            fabricd.conf.default: etc/frr/fabricd.conf.default
            vrrpd.conf.default: etc/frr/vrrpd.conf.default
            pathd.conf.default: etc/frr/pathd.conf.default
            vtysh.conf.default: etc/frr/vtysh.conf.default
            staticd.conf.default: etc/frr/staticd.conf.default
    frr-scripts:
        plugin: make
        source: scripts
    helpers:
        stage-packages:
           - telnet
           - traceroute
           - libgcc1
           - libstdc++6
        plugin: make
        source: helpers
        prime:
           - bin/telnet
           - bin/traceroute
           - bin/traceroute6
    docs:
        plugin: dump
        source: .
        organize:
            README.usage.md: doc/README.usage.md
            README.snap_build.md: doc/README.snap_build.md
            extra_version_info.txt: doc/extra_version_info.txt
