+++ /dev/null
-menu "Configuration"
- depends on PACKAGE_mstpd
-
-config MSTPD_RTNL_RCV_BUFSIZE
- int "Netlink receive buffer size"
- default 262144
-
-config MSTPD_RTNL_SND_BUFSIZE
- int "Netlink send buffer size"
- default 262144
-
-endmenu
+++ /dev/null
-#
-# Copyright (C) 2019 Alexandru Ardelean <ardeleanalex@gmail.com>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mstpd
-PKG_VERSION:=0.1.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/mstpd/mstpd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=03d1ff4ca189d54322562cb2891888768af719d2c73ceafa5f1ca96133dffeb2
-
-PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
-PKG_LICENSE:=GPL-2.0-or-later
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_FIXUP:=autoreconf
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/mstpd
- SECTION:=net
- CATEGORY:=Network
- TITLE:=Multiple Spanning Tree Protocol daemon
- URL:=https://github.com/mstpd/mstpd
-endef
-
-define Package/mstpd/description
- Multiple Spanning Tree Protocol daemon.
- Implements MSTP which is not implemented yet in the Linux kernel.
-endef
-
-define Package/mstpd/config
- source "$(SOURCE)/Config.in"
-endef
-
-TARGET_CFLAGS += \
- -DRTNL_RCV_BUFSIZE=$(CONFIG_MSTPD_RTNL_RCV_BUFSIZE) \
- -DRTNL_SND_BUFSIZE=$(CONFIG_MSTPD_RTNL_SND_BUFSIZE)
-
-MAKE_VARS+=MODE=prod
-
-define Package/mstpd/install
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/mstpd $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/mstpctl $(1)/usr/sbin
- $(INSTALL_DIR) $(1)/etc/init.d/
- $(INSTALL_BIN) ./files/etc/init.d/mstpd.init $(1)/etc/init.d/mstpd
- $(INSTALL_DIR) $(1)/sbin
- $(INSTALL_BIN) ./files/sbin/bridge-stp $(1)/sbin
-endef
-
-$(eval $(call BuildPackage,mstpd))
+++ /dev/null
-#!/bin/sh /etc/rc.common
-
-# shellcheck disable=SC2034 # foo appears unused. Verify it or export it.
-
-START=25
-STOP=99
-
-MSTPCTL="/usr/sbin/mstpctl"
-MSTPD="/usr/sbin/mstpd"
-
-USE_PROCD=1
-
-mstpd_get_bridges() {
- "$MSTPCTL" showbridge | grep -v "^ " | cut -d " " -f 1 2>/dev/null
-}
-
-# mstpd log levels
-# LOG_LEVEL_NONE 0
-# LOG_LEVEL_ERROR 1
-# LOG_LEVEL_INFO 2
-# LOG_LEVEL_DEBUG 3
-# LOG_LEVEL_STATE_MACHINE_TRANSITION 4
-# LOG_LEVEL_MAX 100
-
-config_bridge_port_mstpd() {
- local config="$1"
- local index=$2 # FIXME: maybe remove index later
- local name=$3
-
- [ -n "$index" -a -n "$name" ] || return 0
-
- config_get br_index "$config" br_index
- [ -n "$br_index" ] || return 0
- [ "$index" = "$br_index" ] || return 0
-
- config_get port_name "$config" name
- [ -n "$port_name" ] || return 0
-
- for opt in bpduguard; do
- config_get $opt "$config" $opt
- eval optval=\$$opt
- [ -z "$optval" ] || "$MSTPCTL" "set$opt" "$name" "$port_name" "$optval"
- done
-}
-
-config_bridge_mstpd() {
- local config="$1"
- local optval=
- local name=
- local enable=
- local mstid=0 # for the moment, using only MSTID
-
- config_get index "$config" index
- [ -n "$index" ] || return 1
-
- # Get bridge name
- config_get name "$config" name
- [ -n "$name" ] || return 0
-
- config_get enable "$config" enable
- if [ "$enable" != "1" ] ; then
- return 0
- fi
-
- list_contains MSTPD_PREINSTALLED_BRIDGES "$name" || \
- "$MSTPCTL" addbridge "$name"
- # All options here have 'set$opt' equivalent calls in mstpd,
- # hence this trick with the loop
- for opt in maxage fdelay maxhops hello ageing forcevers txholdcount; do
- config_get $opt "$config" "$opt"
- eval optval=\$$opt
- [ -z "$optval" ] || "$MSTPCTL" set$opt "$name" "$optval"
- done
- config_get treeprio "$config" treeprio
- [ -z "$treeprio" ] || $MSTPCTL settreeprio "$name" "$mstid" "$treeprio"
- config_foreach config_bridge_port_mstpd bridge_port "$index" "$name"
- CONFIGURED_BRIDGES="$CONFIGURED_BRIDGES $name"
- export CONFIGURED_BRIDGES
-}
-
-start_service() {
- procd_open_instance
- procd_set_param command $MSTPD
- procd_append_param command -v 2
- procd_append_param command -d # don't daemonize, procd will handle that for us
- procd_append_param command -s # print to syslog
-
- # set auto respawn behavior
- procd_set_param respawn
-
- # reload config on respawn
- procd_open_trigger
- procd_add_raw_trigger "instance.start" 2000 "/etc/init.d/mstpd" "reload"
- procd_close_trigger
-
- procd_close_instance
-}
-
-service_running() {
- pgrep mstpd >/dev/null 2>&1
-}
-
-reload_service() {
- if ! running ; then
- start
- return
- fi
-
- unset CONFIGURED_BRIDGES
- MSTPD_PREINSTALLED_BRIDGES="$(mstpd_get_bridges)"
- export MSTPD_PREINSTALLED_BRIDGES
-
- config_load 'mstpd'
- config_foreach config_bridge_mstpd bridge
-
- for bridge in $(mstpd_get_bridges) ; do
- list_contains CONFIGURED_BRIDGES "$bridge" || \
- $MSTPCTL delbridge "$bridge"
- done
- # return 0 (success) here, otherwise, and endless restart loop will occur from procd
- # because the last return code may be mstpctl failing
- return 0
-}
-
+++ /dev/null
-#!/bin/sh
-
-# Dummy file ; don't do anything ;
-# Returning success here, tells the kernel to allow
-# a userspace module to handle STP states
-#
-# Meanwhile, procd will start mstpd, and all will be well
-
-exit 0
+++ /dev/null
---- a/hmac_md5.c
-+++ b/hmac_md5.c
-@@ -356,10 +356,10 @@ caddr_t digest; /* caller di
- */
-
- /* start out by storing key in pads */
-- bzero(k_ipad, sizeof k_ipad);
-- bzero(k_opad, sizeof k_opad);
-- bcopy(key, k_ipad, key_len);
-- bcopy( key, k_opad, key_len);
-+ memset(k_ipad, 0, sizeof k_ipad);
-+ memset(k_opad, 0, sizeof k_opad);
-+ memcpy(k_ipad, key, key_len);
-+ memcpy(k_opad, key, key_len);
-
- /* XOR key with ipad and opad values */
- for(i = 0; i < 64; ++i)