[Dnsmasq-discuss] DNS TTL && IPSET TIMEOUT
Geert Stappers
stappers at stappers.nl
Thu Sep 17 21:01:28 BST 2020
On Thu, Sep 17, 2020 at 07:06:22AM +0000, Roderick Groesbeek wrote:
> Hi List,
>
> Ipset supports a concept of 'aging' entries, like:
> ~~
> Examples from ipset(8):
> ipset create test hash:ip timeout 300
> ipset add test 192.168.0.1 timeout 60
> ipset -exist add test 192.168.0.1 timeout 600
> ~~
>
> Dnsmasq supports a concept of adding entries to ipset
> ~~
> ipset=/.wearetriple.com/p1_afkl_http_https_test
> ~~
>
>
> However the timeout functionality is not implemented in the current DNSMASQ implementation.
> Using the DNS TTL as an IPSET TIMEOUT would seem natural...
>
>
>
> Would this be right construct, to support that behavior?
Transform it into a unified patch, to make testing possible.
> ATTR_DATA followed by the IP or TIMEOUT value in the nested construct?
>
> ~~
> proto = IPSET_PROTOCOL;
> add_attr(nlh, IPSET_ATTR_PROTOCOL, sizeof(proto), &proto);
> add_attr(nlh, IPSET_ATTR_SETNAME, strlen(setname) + 1, setname);
>
> nested[0] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));
> nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));
> nested[0]->nla_type = NLA_F_NESTED | IPSET_ATTR_DATA;
>
> nested[1] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));
> nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));
> nested[1]->nla_type = NLA_F_NESTED | IPSET_ATTR_IP;
> add_attr(nlh,
> (af == AF_INET ? IPSET_ATTR_IPADDR_IPV4 : IPSET_ATTR_IPADDR_IPV6) | NLA_F_NET_BYTEORDER,
> addrsz, ipaddr);
>
> nested[2] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));
> nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));
> nested[2]->nla_type = NLA_F_NESTED | IPSET_ATTR_DATA;
>
> nested[3] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));
> nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));
> nested[3]->nla_type = NLA_F_NESTED | IPSET_ATTR_TIMEOUT;
> add_attr(nlh, IPSET_ATTR_TIMEOUT | NLA_F_NET_BYTEORDER, sizeof(attl), &attl);
>
> nested[3]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[3];
> nested[2]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[2];
> nested[1]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[1];
> nested[0]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[0];
>
> while (retry_send(sendto(ipset_sock, buffer, nlh->nlmsg_len, 0,
> (struct sockaddr *)&snl, sizeof(snl))));
> ~~
>
> sendto(3, {{len=88, type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_ADD, flags=NLM_F_REQUEST, seq=0, pid=0}, {nfgen_family=AF_INET, version=NFNETLINK_V0, res_id=htons(0), [{{nla_len=5, nla_type=NFNETLINK_V1}, "\x06"}, {{nla_len=28, nla_type=0x2}, "\x70\x31\x5f\x61\x66\x6b\x6c\x5f\x68\x74\x74\x70\x5f\x68\x74\x74\x70\x73\x5f\x74\x65\x73\x74\x00"}, {{nla_len=32, nla_type=NLA_F_NESTED|0x7}, "\x1c\x00\x01\x80\x08\x00\x01\x40\x5d\xbb\x0d\xc8\x10\x00\x06\x80\x0c\x00\x06\x40\x0e\x00\x00\x00\x00\x00\x00\x00"}]}, 88, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 88
>
>
> Met vriendelijke groet / Best regards,
>
> Roderick Groesbeek
Groeten
Geert Stappers
--
Silence is hard to parse
More information about the Dnsmasq-discuss
mailing list