Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled

This commit is contained in:
domenico
2025-06-24 12:51:15 +02:00
commit 27c9d80f51
10493 changed files with 1885777 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:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
PKG_MIRROR_HASH:=f6e1c18551a00e01229fa12caa7b3fe33ad82785150fedcbe615fcc651ba2876
PKG_SOURCE_DATE:=2024-05-08
PKG_SOURCE_VERSION:=a29882318a4ccb3ae26f7cc0145e06ad4ead224b
PKG_MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_odhcpd_$(BUILD_VARIANT)_ext_cer_id
PKG_ASLR_PIE_REGULAR:=1
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/15_odhcpd
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
. /lib/functions/procd.sh
procd_send_signal dnsmasq

View File

@@ -0,0 +1,52 @@
#!/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 ..
ODHCPDONLY=0
V4MODE=disabled
V6MODE=disabled
[ -e /usr/sbin/dnsmasq ] || ODHCPDONLY=1
case "$protocol" in
# only enable server mode on statically addressed lan ports
"static")
V4MODE=server
[ -e /proc/sys/net/ipv6 ] && V6MODE=server
;;
esac
uci get dhcp.lan 1>/dev/null 2>/dev/null || {
uci batch <<EOF
set dhcp.lan=dhcp
set dhcp.lan.interface='lan'
set dhcp.lan.start='100'
set dhcp.lan.limit='150'
set dhcp.lan.leasetime='12h'
set dhcp.lan.domain='lan'
EOF
}
uci batch <<EOF
set dhcp.odhcpd=odhcpd
set dhcp.odhcpd.maindhcp=$ODHCPDONLY
set dhcp.odhcpd.leasefile=/tmp/hosts/odhcpd
set dhcp.odhcpd.leasetrigger=/usr/sbin/odhcpd-update
set dhcp.odhcpd.loglevel=4
set dhcp.lan.dhcpv4=$V4MODE
set dhcp.lan.dhcpv6=$V6MODE
set dhcp.lan.ra=$V6MODE
set dhcp.lan.ra_slaac=1
add_list dhcp.lan.ra_flags=managed-config
add_list dhcp.lan.ra_flags=other-config
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"
}