name: frr
version: @VERSION@
summary: FRRouting BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM/LDP routing daemon
description: BGP/OSPFv2/OSPFv3/ISIS/RIP/RIPng/PIM 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 and LDP as well as the IPv6 versions of these.
 FRRouting (frr) is a fork of Quagga.
confinement: strict
grade: devel

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
    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
    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
        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
    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
            
parts:
    frr: 
        build-packages: 
           - autoconf
           - automake
           - libtool
           - make
           - gawk
           - libreadline-dev
           - texinfo
           - libncurses5-dev
           - texlive-latex-base
           - texlive-generic-recommended
           - libcap-dev
           - imagemagick
           - ghostscript
           - groff
           - hardening-wrapper
           - libpcre3-dev
           - chrpath
           - pkg-config
           - libjson-c-dev
           - libc-ares-dev
           - bison
           - flex
           - python3-dev
           - protobuf-c-compiler
        stage-packages:
           - coreutils
           - iproute2
           - logrotate
           - libcap2
           - libc6
           - libtinfo5
           - libreadline6
           - libjson-c2
        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-irdp
            - --enable-user=root
            - --enable-group=root
            - --enable-pimd
            - --enable-ldpd
            - --enable-fpm
            - --enable-protobuf
            - --enable-configfile-mask=0640
            - --enable-logfile-mask=0640 
            - --localstatedir=/var/run
            - --sbindir=/sbin
            - --bindir=/bin
            - --sysconfdir=/etc/frr
            - --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
            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
            vtysh.conf.default: etc/frr/vtysh.conf.default
    frr-scripts:
        plugin: make
        source: scripts
    helpers:
        stage-packages:
           - telnet
           - traceroute
        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

