mirror of
https://github.com/openwrt/packages.git
synced 2025-12-21 17:04:32 +04:00
ampr-ripd: Initial package release
This project can be used with the OpenWrt SDK to generate a package for ampr-ripd. It is intended for use only by licensed amateur radio operators. ampr-ripd is a modified RIPv2 listener that provides route information for ARDC IPIP Mesh tunnels. Signed-off-by: Dan Srebnick <k2ie@k2ie.net>
This commit is contained in:
committed by
George Sapkin
parent
6736b2d19d
commit
19249742cd
102
net/ampr-ripd/Makefile
Normal file
102
net/ampr-ripd/Makefile
Normal file
@@ -0,0 +1,102 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ampr-ripd
|
||||
PKG_VERSION:=2.4.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
|
||||
PKG_SOURCE_URL:=https://yo2loj.ro/hamprojects
|
||||
PKG_HASH:=e4635bd0f88c1f2b0777e948a00d0470aa97254ec4b0b8fd75c79d109995a350
|
||||
|
||||
PKG_MAINTAINER:=Dan Srebnick <k2ie@k2ie.net>
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/ampr-ripd
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Routing and Redirection
|
||||
DEPENDS:=+kmod-ipip +ip
|
||||
TITLE:=Routing daemon for the AMPR network
|
||||
URL:=https://www.yo2loj.ro/hamprojects
|
||||
endef
|
||||
|
||||
define Package/ampr-ripd/description
|
||||
Routing daemon written in C similar to Hessu's rip44d including optional resending of RIPv2 broadcasts for router injection.
|
||||
endef
|
||||
|
||||
CONFIGURE_VARS+= \
|
||||
CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)"
|
||||
COPT="$(TARGET_COPT)"
|
||||
|
||||
define Package/ampr-ripd/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ampr-ripd $(1)/usr/sbin
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/ampr-ripd-init $(1)/etc/init.d/ampr-ripd
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_DATA) ./files/99-ampr-ripd $(1)/etc/uci-defaults/99-ampr-ripd
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) ./files/ampr-ripd-config $(1)/etc/config/ampr-ripd
|
||||
endef
|
||||
|
||||
define Package/ampr-ripd/postrm
|
||||
#!/bin/sh
|
||||
[ "$${PKG_UPGRADE}" = 1 ] && exit 0
|
||||
[ -z "$${IPKG_INSTROOT}" ] || exit 0
|
||||
|
||||
echo "Removing firewall rules..."
|
||||
for i in $$(seq 99 -1 0); do
|
||||
if [ $$(uci -q get firewall.@rule[$$i]) ]; then
|
||||
name=$$(uci get firewall.@rule[$$i].name)
|
||||
if [ "$$name" = "Net 44 ICMP Echo Request" ] \
|
||||
|| [ "$$name" = "Net 44 Router ICMP" ] \
|
||||
|| [ "$$name" = "ipip" ]; then
|
||||
uci del firewall.@rule[$$i]
|
||||
fi
|
||||
fi
|
||||
done
|
||||
uci commit firewall
|
||||
|
||||
echo "Removing network rules..."
|
||||
for i in $$(seq 99 -1 0); do
|
||||
if [ $$(uci -q get network.@rule[$$i]) ]; then
|
||||
lookup=$$(uci get network.@rule[$$i].lookup)
|
||||
if [ "$$lookup" = "44" ]; then
|
||||
uci del network.@rule[$$i]
|
||||
fi
|
||||
fi
|
||||
done
|
||||
uci commit network
|
||||
|
||||
echo "Removing firewall zone forwarding rules..."
|
||||
for i in $$(seq 99 -1 0); do
|
||||
if [ $$(uci -q get firewall.@forwarding[$$i]) ]; then
|
||||
name=$$(uci get firewall.@forwarding[$$i].src)
|
||||
if [ "$$name" = "amprlan" ] || [ "$$name" = "amprwan" ]; then
|
||||
uci del firewall.@forwarding[$$i]
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Removing firewall zones..."
|
||||
for i in $$(seq 99 -1 0); do
|
||||
if [ $$(uci -q get firewall.@zone[$$i]) ]; then
|
||||
name=$$(uci get firewall.@zone[$$i].name)
|
||||
if [ "$$name" = "amprlan" ] || [ "$$name" = "amprwan" ]; then
|
||||
uci del firewall.@zone[$$i]
|
||||
fi
|
||||
fi
|
||||
done
|
||||
uci commit firewall
|
||||
|
||||
echo "Removing network interfaces..."
|
||||
uci del network.amprwan
|
||||
uci del network.amprlan
|
||||
uci commit network
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ampr-ripd))
|
||||
112
net/ampr-ripd/files/99-ampr-ripd
Normal file
112
net/ampr-ripd/files/99-ampr-ripd
Normal file
@@ -0,0 +1,112 @@
|
||||
##############################################################################
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# Copyright (C) 2025 Dan Srebnick (K2IE)
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Check to see if network.amprlan.ipaddr and network.amprwan.ipaddr exist.
|
||||
# If so, no need to apply defaults.
|
||||
|
||||
if [ -z "$(uci -q get network.amprlan.ipaddr)" ] && \
|
||||
[ -z "$(uci -q get network.amprwan.ipaddr)" ]; then
|
||||
|
||||
echo Installing default routing rules...
|
||||
r=$(uci add network rule)
|
||||
uci -q batch << EOI
|
||||
set network.$r.dest='44.0.0.0/9'
|
||||
set network.$r.lookup='44'
|
||||
set network.$r.priority='44'
|
||||
EOI
|
||||
r=$(uci add network rule)
|
||||
uci -q batch << EOI
|
||||
set network.$r.dest='44.128.0.0/10'
|
||||
set network.$r.lookup='44'
|
||||
set network.$r.priority='44'
|
||||
EOI
|
||||
r=$(uci add network rule)
|
||||
uci -q batch << EOI
|
||||
set network.$r.src='44.127.254.0/24'
|
||||
set network.$r.lookup='44'
|
||||
set network.$r.priority='45'
|
||||
EOI
|
||||
|
||||
echo Installing default network interfaces...
|
||||
uci -q batch << EOI
|
||||
set network.amprlan=interface
|
||||
set network.amprlan.proto='static'
|
||||
set network.amprlan.device='br-lan'
|
||||
set network.amprlan.force_link='0'
|
||||
set network.amprlan.ipaddr='44.127.254.254'
|
||||
set network.amprlan.netmask='255.255.255.0'
|
||||
set network.amprlan.defaultroute='0'
|
||||
set network.amprlan.ip4table='44'
|
||||
set network.amprlan.delegate='0'
|
||||
set network.amprwan=interface
|
||||
set network.amprwan.device='tunl0'
|
||||
set network.amprwan.proto='static'
|
||||
set network.amprwan.ipaddr='44.127.254.254'
|
||||
set network.amprwan.netmask='255.255.255.0'
|
||||
commit network
|
||||
EOI
|
||||
|
||||
echo Installing default firewall zones...
|
||||
z=$(uci add firewall zone)
|
||||
uci -q batch << EOI
|
||||
set firewall.$z.name='amprlan'
|
||||
set firewall.$z.network='amprlan'
|
||||
EOI
|
||||
z=$(uci add firewall zone)
|
||||
uci -q batch << EOI
|
||||
set firewall.$z.name='amprwan'
|
||||
set firewall.$z.network='amprwan'
|
||||
set firewall.$z.input='REJECT'
|
||||
EOI
|
||||
z=$(uci add firewall forwarding)
|
||||
uci -q batch << EOI
|
||||
set firewall.$z.src='amprlan'
|
||||
set firewall.$z.dest='amprwan'
|
||||
commit firewall
|
||||
EOI
|
||||
|
||||
echo Installing default firewall rules...
|
||||
f=$(uci add firewall rule)
|
||||
uci -q batch << EOI
|
||||
set firewall.$f.name='ipip'
|
||||
set firewall.$f.proto='ipencap'
|
||||
set firewall.$f.src='wan'
|
||||
set firewall.$f.target='ACCEPT'
|
||||
set firewall.$f.family='ipv4'
|
||||
set firewall.$f.icmp_type='echo-request'
|
||||
EOI
|
||||
f=$(uci add firewall rule)
|
||||
uci -q batch << EOI
|
||||
set firewall.$f.name='Net 44 ICMP Echo Request'
|
||||
set firewall.$f.proto='icmp'
|
||||
set firewall.$f.src='amprwan'
|
||||
set firewall.$f.dest='amprlan'
|
||||
set firewall.$f.target='ACCEPT'
|
||||
set firewall.$f.family='ipv4'
|
||||
set firewall.$f.icmp_type='echo-request'
|
||||
EOI
|
||||
f=$(uci add firewall rule)
|
||||
uci -q batch << EOI
|
||||
set firewall.$f.name='Net 44 Router ICMP'
|
||||
set firewall.$f.proto='icmp'
|
||||
set firewall.$f.src='amprwan'
|
||||
set firewall.$f.target='ACCEPT'
|
||||
set firewall.$f.family='ipv4'
|
||||
set firewall.$f.icmp_type='echo-request'
|
||||
commit firewall
|
||||
EOI
|
||||
|
||||
fi
|
||||
exit
|
||||
4
net/ampr-ripd/files/ampr-ripd-config
Normal file
4
net/ampr-ripd/files/ampr-ripd-config
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
config ampr-ripd 'network'
|
||||
option tunnet 44.127.254.0/255.255.255.0
|
||||
|
||||
87
net/ampr-ripd/files/ampr-ripd-init
Executable file
87
net/ampr-ripd/files/ampr-ripd-init
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=95
|
||||
STOP=10
|
||||
|
||||
EXTRA_COMMANDS="configure"
|
||||
EXTRA_HELP=" configure Configure service parameters"
|
||||
|
||||
start() {
|
||||
default_addr="44.127.254.254"
|
||||
if [ "$(uci get network.amprlan.ipaddr)" = "$default_addr" ] || \
|
||||
[ "$(uci get network.amprwan.ipaddr)" = "$default_addr" ]; then
|
||||
|
||||
cat <<-EOF
|
||||
ampr-ripd is not fully configured.
|
||||
You must run /etc/init.d/ampr-ripd configure.
|
||||
EOF
|
||||
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d /var/lib/ampr-ripd ]; then
|
||||
mkdir -p /var/lib/ampr-ripd
|
||||
fi
|
||||
ip tunnel change ttl 64 mode ipip tunl0
|
||||
ip link set dev tunl0 up
|
||||
ifconfig tunl0 mtu 1480
|
||||
tunnet=$(uci -q get ampr-ripd.network.tunnet)
|
||||
/usr/sbin/ampr-ripd -s -r -t 44 -i tunl0 -a "$tunnet"
|
||||
}
|
||||
|
||||
stop() {
|
||||
ifconfig tunl0 down
|
||||
killall ampr-ripd
|
||||
}
|
||||
|
||||
configure() {
|
||||
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
|
||||
cat <<-EOF
|
||||
|
||||
Usage: /etc/init.d/ampr-ripd configure [amprhost] [amprmask] [amprnet]
|
||||
|
||||
amprhost is the 44 net address assigned to your OpenWrt host
|
||||
amprmask is the full netmask of your AMPR assigned network
|
||||
amprnet is the network number of your AMPR assigned network
|
||||
|
||||
Eg. /etc/init.d/ampr-ripd configure 44.127.254.1 255.255.255.0 44.127.254.0
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
amprhost=$1
|
||||
amprmask=$2
|
||||
amprnet=$3
|
||||
|
||||
cat <<-EOF
|
||||
Configuring ampr-ripd with values:
|
||||
|
||||
amprhost=$amprhost
|
||||
amprmask=$amprmask
|
||||
amprnet=$amprnet
|
||||
EOF
|
||||
|
||||
tunnet=$amprnet/$amprmask
|
||||
uci set ampr-ripd.network.tunnet="$tunnet"
|
||||
uci commit ampr-ripd
|
||||
uci set network.amprlan.ipaddr="$amprhost"
|
||||
uci set network.amprlan.netmask="$amprmask"
|
||||
uci set network.amprwan.ipaddr="$amprhost"
|
||||
uci set network.amprwan.netmask="$amprmask"
|
||||
for i in $(seq 0 -1 -99); do
|
||||
if [ ! -z $(uci -q get network.@rule[$i].src) ] && \
|
||||
[ "$(uci get network.@rule[$i].lookup)" = "44" ] && \
|
||||
[ "$(uci get network.@rule[$i].priority)" = "45" ]; then
|
||||
uci set network.@rule[$i].src="$tunnet"
|
||||
break
|
||||
fi
|
||||
done
|
||||
uci commit network
|
||||
|
||||
cat <<-EOF
|
||||
|
||||
Now, do the following:
|
||||
/etc/init.d/ampr-ripd restart
|
||||
/etc/init.d/network restart
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
}
|
||||
Reference in New Issue
Block a user