Initial commit

This commit is contained in:
domenico
2025-06-24 16:03:39 +02:00
commit f3256cdaf2
6949 changed files with 1441681 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
#
# Copyright (C) 2013-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=odhcpd
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
PKG_SOURCE_DATE:=2020-05-03
PKG_SOURCE_VERSION:=49e4949c6dee4a7e528e9bc51e9813228c3c16d8
PKG_MIRROR_HASH:=5e23b60211a171d17d7015ce604b5fa128f0fbe4d7e7ddd48063b40590e17d4c
PKG_MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_INSTALL:=1
PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_odhcpd_$(BUILD_VARIANT)_ext_cer_id
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/odhcpd/default
SECTION:=net
CATEGORY:=Network
TITLE:=OpenWrt DHCPv6(-PD)/RA Server & Relay
DEPENDS:=+libubox +libuci +libubus +libnl-tiny
endef
define Package/odhcpd/default/description
odhcpd is a daemon for serving and relaying IP management protocols to
configure clients and downstream routers. It tries to follow the RFC 6204
requirements for IPv6 home routers.
endef
define Package/odhcpd/default/config
menu "Configuration"
depends on PACKAGE_$(1)
config PACKAGE_odhcpd_$(2)_ext_cer_id
int
default 0
prompt "CER-ID Extension ID (0 = disabled)"
endmenu
endef
define Package/odhcpd
$(call Package/odhcpd/default)
TITLE += and DHCPv4 server
VARIANT:=full
endef
Package/odhcpd/config=$(call Package/odhcpd/default/config,odhcpd,full)
define Package/odhcpd/description
$(call Package/odhcpd/default/description)
This is a variant providing server services for DHCPv4, RA, stateless and
stateful DHCPv6, prefix delegation and can be used to relay RA, DHCPv6 and
NDP between routed (non-bridged) interfaces in case no delegated prefixes
are available.
endef
define Package/odhcpd-ipv6only
$(call Package/odhcpd/default)
VARIANT:=ipv6only
DEPENDS+= @IPV6
endef
Package/odhcpd-ipv6only/config=$(call Package/odhcpd/default/config,odhcpd-ipv6only,ipv6only)
define Package/odhcpd-ipv6only/description
$(call Package/odhcpd/default/description)
This is a variant providing server services for RA, stateless and stateful
DHCPv6, prefix delegation and can be used to relay RA, DHCPv6 and NDP between
routed (non-bridged) interfaces in case no delegated prefixes are available.
endef
CMAKE_OPTIONS += -DUBUS=1
ifeq ($(BUILD_VARIANT),full)
CMAKE_OPTIONS += -DDHCPV4_SUPPORT=1
endif
ifneq ($(CONFIG_PACKAGE_odhcpd_$(BUILD_VARIANT)_ext_cer_id),0)
CMAKE_OPTIONS += -DEXT_CER_ID=$(CONFIG_PACKAGE_odhcpd_$(BUILD_VARIANT)_ext_cer_id)
endif
define Package/odhcpd/install
$(INSTALL_DIR) $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/odhcpd $(1)/usr/sbin/
$(INSTALL_BIN) ./files/odhcpd-update $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/odhcpd.init $(1)/etc/init.d/odhcpd
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/odhcpd.defaults $(1)/etc/uci-defaults
endef
Package/odhcpd-ipv6only/install = $(Package/odhcpd/install)
$(eval $(call BuildPackage,odhcpd))
$(eval $(call BuildPackage,odhcpd-ipv6only))

View File

@@ -0,0 +1,6 @@
#!/bin/sh
# Make dnsmasq reread hostfile by sending SIGHUP signal
. $IPKG_INSTROOT/lib/functions/procd.sh
procd_send_signal dnsmasq

View File

@@ -0,0 +1,29 @@
#!/bin/sh
uci -q get dhcp.odhcpd && exit 0
touch /etc/config/dhcp
. /usr/share/libubox/jshn.sh
json_load "$(cat /etc/board.json)"
json_select network
json_select lan
json_get_vars protocol
json_select ..
json_select ..
case "$protocol" in
# only enable server mode on statically addressed lan ports
"static") [ -e /proc/sys/net/ipv6 ] && MODE=server || MODE=disabled ;;
*) MODE=disabled ;;
esac
uci batch <<EOF
set dhcp.odhcpd=odhcpd
set dhcp.odhcpd.maindhcp=0
set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
set dhcp.odhcpd.loglevel=4
set dhcp.lan.dhcpv6=$MODE
set dhcp.lan.ra=$MODE
commit dhcp
EOF

View File

@@ -0,0 +1,22 @@
#!/bin/sh /etc/rc.common
START=35
STOP=85
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/sbin/odhcpd
procd_set_param respawn
procd_close_instance
}
reload_service() {
procd_send_signal odhcpd
}
service_triggers()
{
procd_add_reload_trigger "dhcp"
}