From d851b2fc0d872e461b3c90056f0a1b551c0e4cf6 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Fri, 21 Apr 2017 02:49:39 -0700 Subject: [PATCH] snapcraft: Add FPM module with command to set mode or disable it - New snap command: frr.set fpm {disable | protobuf | netlink} Signed-off-by: Martin Winter --- snapcraft/README.usage.md | 16 +++++++++++++ snapcraft/scripts/Makefile | 1 + snapcraft/scripts/set-options | 40 +++++++++++++++++++++++++++++++++ snapcraft/scripts/zebra-service | 8 +++++-- snapcraft/snapcraft.yaml.in | 5 +++++ 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100755 snapcraft/scripts/set-options diff --git a/snapcraft/README.usage.md b/snapcraft/README.usage.md index c678c8805c42..537147303a82 100644 --- a/snapcraft/README.usage.md +++ b/snapcraft/README.usage.md @@ -30,6 +30,8 @@ Commands defined by this snap options - `frr.readme`: Returns this document `cat README_usage.md` +- `frr.set`: + Allows to enable `FPM` module. See FPM section below and for debugging defined at this time (May get removed later - do not depend on them). These are mainly intended to debug the Snap @@ -86,6 +88,20 @@ are named `eth0`, `eth1` and `eth2`, then the additional lines in These settings require either a reboot or a manual configuration with `sysctl` as well. +FPM Module +---------- +The `frr.set` allows to turn FPM module on or off. + + frr.set fpm {disable|protobuf|netlink} + + Disables FPM or enables FPM with selected mode + +By default, the FPM module is disabled, but installed with netlink and +protobuf support. To enable the FPM module, use the `frr.set fpm protobuf` +or `frr.set fpm netlink` command. The command will only enable the mode +for the next restart of zebra. Please reboot or restart zebra after +changing the mode to become effective. + FAQ --- - frr.vtysh displays `--MORE--` on long output. How to suppress this? diff --git a/snapcraft/scripts/Makefile b/snapcraft/scripts/Makefile index 0f9a24b649c0..2a60d4d65226 100644 --- a/snapcraft/scripts/Makefile +++ b/snapcraft/scripts/Makefile @@ -12,3 +12,4 @@ install: install -D -m 0755 pimd-service $(DESTDIR)/bin/ install -D -m 0755 ldpd-service $(DESTDIR)/bin/ install -D -m 0755 nhrpd-service $(DESTDIR)/bin/ + install -D -m 0755 set-options $(DESTDIR)/bin/ diff --git a/snapcraft/scripts/set-options b/snapcraft/scripts/set-options new file mode 100755 index 000000000000..e76e321ef80c --- /dev/null +++ b/snapcraft/scripts/set-options @@ -0,0 +1,40 @@ +#!/bin/sh + +set -e + +case $1 in + fpm) + case $2 in + disable) + rm -f $SNAP_DATA/fpm.conf + echo "FPM module disabled. Please restart FRR" + ;; + protobuf) + echo "-M fpm:protobuf" > $SNAP_DATA/fpm.conf + echo "FPM enabled and set to protobuf mode. Please restart FRR" + ;; + netlink) + echo "-M fpm:netlink" > $SNAP_DATA/fpm.conf + echo "FPM enabled and set to netlink mode. Please restart FRR" + ;; + *) + echo "Usage:" + echo " ${SNAP_NAME}.set fpm {disable|protobuf|netlink}" + echo "" + echo " Disables FPM module or enables it with specified mode" + echo " Mode will be saved for next restart of zebra, but zebra" + echo " is not automatically restarted" + exit 1 + ;; + esac + ;; + *) + echo "Usage:" + echo " ${SNAP_NAME}.set fpm {disable|protobuf|netlink}" + echo "" + echo " Disables FPM or enables FPM with selected mode" + exit 1 + ;; +esac + +exit 0 diff --git a/snapcraft/scripts/zebra-service b/snapcraft/scripts/zebra-service index 9119a4055d45..2ee131f9e5bc 100644 --- a/snapcraft/scripts/zebra-service +++ b/snapcraft/scripts/zebra-service @@ -8,9 +8,13 @@ fi if ! [ -e $SNAP_DATA/vtysh.conf ]; then cp $SNAP/etc/frr/vtysh.conf.default $SNAP_DATA/vtysh.conf fi +EXTRA_OPTIONS="" +if [ -e $SNAP_DATA/fpm.conf ]; then + EXTRA_OPTIONS="`cat $SNAP_DATA/fpm.conf`" +fi exec $SNAP/sbin/zebra \ -f $SNAP_DATA/zebra.conf \ --pid_file $SNAP_DATA/zebra.pid \ --socket $SNAP_DATA/zsock \ - --vty_socket $SNAP_DATA - + --vty_socket $SNAP_DATA \ + --moduledir $SNAP/lib/frr/modules $EXTRA_OPTIONS diff --git a/snapcraft/snapcraft.yaml.in b/snapcraft/snapcraft.yaml.in index 54a1cfd4f014..b5fb24a36163 100644 --- a/snapcraft/snapcraft.yaml.in +++ b/snapcraft/snapcraft.yaml.in @@ -90,6 +90,8 @@ apps: - 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: @@ -177,6 +179,7 @@ parts: - bison - flex - python3-dev + - protobuf-c-compiler stage-packages: - coreutils - iproute2 @@ -208,6 +211,8 @@ parts: - --enable-group=root - --enable-pimd - --enable-ldpd + - --enable-fpm + - --enable-protobuf - --enable-configfile-mask=0640 - --enable-logfile-mask=0640 - --localstatedir=/var/run