[PATCH] dnsmasq: 'ipset' config sections

Aleksandr Mezin mezin.alexander at gmail.com
Mon Nov 9 05:54:41 EST 2020


Is something wrong with this patch? Should I CC someone to get the
patch reviewed? I'm unable to figure out who is the maintainer of
dnsmasq package

On Fri, Oct 23, 2020 at 11:03 AM Aleksandr Mezin
<mezin.alexander at gmail.com> wrote:
>
> Allow configuring ipsets with dedicated config sections:
>
>     config ipset
>         list name 'ss_rules_dst_forward'
>         list name 'ss_rules6_dst_forward'
>         list domain 't.me'
>         list domain 'telegram.org'
>
> instead of current, rather inconvenient syntax:
>
>     config dnsmasq
>         ...
>         list ipset '/t.me/telegram.org/ss_rules_dst_forward,ss_rules6_dst_forward'
>
> Current syntax will still continue to work though.
>
> With this change, a LuCI GUI for DNS ipsets should be easy to implement.
>
> Signed-off-by: Aleksandr Mezin <mezin.alexander at gmail.com>
> ---
>  .../services/dnsmasq/files/dnsmasq.init       | 27 +++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index 0fa3074f92..fff8f8f793 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -769,6 +769,29 @@ dhcp_relay_add() {
>         fi
>  }
>
> +dnsmasq_ipset_add() {
> +       local cfg="$1"
> +       local ipsets domains
> +
> +       add_ipset() {
> +               ipsets="${ipsets:+$ipsets,}$1"
> +       }
> +
> +       add_domain() {
> +               # leading '/' is expected
> +               domains="$domains/$1"
> +       }
> +
> +       config_list_foreach "$cfg" "name" add_ipset
> +       config_list_foreach "$cfg" "domain" add_domain
> +
> +       if [ -z "$ipsets" ] || [ -z "$domains" ]; then
> +               return 0
> +       fi
> +
> +       xappend "--ipset=$domains/$ipsets"
> +}
> +
>  dnsmasq_start()
>  {
>         local cfg="$1"
> @@ -1056,6 +1079,10 @@ dnsmasq_start()
>         config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg"
>         echo >> $CONFIGFILE_TMP
>
> +       echo >> $CONFIGFILE_TMP
> +       config_foreach filter_dnsmasq ipset dnsmasq_ipset_add "$cfg"
> +       echo >> $CONFIGFILE_TMP
> +
>         echo >> $CONFIGFILE_TMP
>         mv -f $CONFIGFILE_TMP $CONFIGFILE
>         mv -f $HOSTFILE_TMP $HOSTFILE
> --
> 2.29.0
>



More information about the openwrt-devel mailing list