Hi, comments inline.
> Add more options to dhcrelay UCI and init script: > > - enabled > - interfaces: Listen interfaces > - relay_mode: What to do about packets that already have a relay option > > Also mark /etc/config/dhcrelay as conffile > > Signed-off-by: Bruno Randolf <b...@einfach.org> > --- > net/isc-dhcp/Makefile | 8 +++++++ > net/isc-dhcp/files/dhcrelay4.init | 39 > ++++++++++++++++++++++++++++------ > net/isc-dhcp/files/etc/config/dhcrelay | 24 ++++++++++++++++----- > 3 files changed, 60 insertions(+), 11 deletions(-) > > diff --git a/net/isc-dhcp/Makefile b/net/isc-dhcp/Makefile > index aa27aca..5e5471f 100644 > --- a/net/isc-dhcp/Makefile > +++ b/net/isc-dhcp/Makefile > @@ -55,11 +55,19 @@ $(call Package/isc-dhcp-relay-ipv6/description) > This package is compiled with IPv4 support only. > endef > > +define Package/isc-dhcp-relay-ipv4/conffiles > +/etc/config/dhcrelay > +endef > + > define Package/isc-dhcp-relay-ipv6/description > $(call Package/isc-dhcp-relay/description) > This package is compiled with IPv4 and IPv6 support. > endef > > +define Package/isc-dhcp-relay-ipv6/conffiles > +/etc/config/dhcrelay > +endef > + > define Package/isc-dhcp-client-ipv4 > $(call Package/isc-dhcp/Default) > TITLE+= client (without IPv6) > diff --git a/net/isc-dhcp/files/dhcrelay4.init > b/net/isc-dhcp/files/dhcrelay4.init > index 70905cf..0f87b37 100644 > --- a/net/isc-dhcp/files/dhcrelay4.init > +++ b/net/isc-dhcp/files/dhcrelay4.init > @@ -8,15 +8,42 @@ SERVICE_PID_FILE="/var/run/dhcrelay4.pid" > SERVICE_USE_PID=1 > > start() { > - local relay_dhcpserver > + include /lib/network > + scan_interfaces This is deprecated, use /lib/functions/network.sh instead. > + config_load dhcrelay > > - config_load dhcrelay > - config_get relay_dhcpserver ipv4 dhcpserver > + local args="" > > - service_start /usr/sbin/dhcrelay -4 -q \ > - -pf $SERVICE_PID_FILE $relay_dhcpserver > + local enabled > + config_get_bool enabled ipv4 enabled 0 > + [ "$enabled" -eq 0 ] && return 0 > + > + # listen interfaces > + local interfaces > + config_get interfaces ipv4 interfaces > + if [ -n "$interfaces" ]; then > + for net in $interfaces; do > + local ifname > + config_get ifname "$net" ifname > + [ -n "$ifname" ] && append args "-i $ifname" As noted in Patch 6/6 it should be converted to "network_get_device". > + done > + fi > + > + # relay mode > + local relay_mode > + config_get relay_mode ipv4 relay_mode > + [ -n "$relay_mode" ] && append args "-m $relay_mode" > + > + # dhcp server address > + local server > + config_get server ipv4 dhcpserver > + [ -n "$server" ] || return 0 > + append args "$server" > + > + service_start /usr/sbin/dhcrelay -4 -q \ > + -pf $SERVICE_PID_FILE $args > } > > stop() { > - service_stop /usr/sbin/dhcrelay > + service_stop /usr/sbin/dhcrelay > } > diff --git a/net/isc-dhcp/files/etc/config/dhcrelay > b/net/isc-dhcp/files/etc/config/dhcrelay > index 5fde239..1b89782 100644 > --- a/net/isc-dhcp/files/etc/config/dhcrelay > +++ b/net/isc-dhcp/files/etc/config/dhcrelay > @@ -1,10 +1,24 @@ > > config dhcrelay ipv4 > - option dhcpserver '192.0.2.10' > + option 'enabled' '0' > + > + # IP address of the server > + option 'dhcpserver' '192.0.2.10' > + > + # network interfaces to listen on (e.g. lan or wan) > + option 'interfaces' '' > + > + # What to do about packets that already have a relay option: > + # 'append': Forward and append our own relay option > + # 'replace': Forward, but replace theirs with ours (default) > + # 'forward': Forward without changes > + # 'discard': Don't forward > + option 'relay_mode' '' > + > > config dhcrelay ipv6 > -# option dhcpserver '2001:db8:1::1' > - option upper 'eth1' > - list lower 'eth0.2' > - list lower 'eth0.3' > +# option dhcpserver '2001:db8:1::1' > + option upper 'eth1' > + list lower 'eth0.2' > + list lower 'eth0.3' > > ~ Jow
signature.asc
Description: OpenPGP digital signature
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel