<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.E-mailStijl17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi List,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ipset supports a concept of ‘aging’ entries, like:<o:p></o:p></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal" style="background:white;vertical-align:baseline"><span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">Examples from </span><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in">ipset(8)</span><span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">:<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0in">ipset create test hash:ip timeout 300</span><span style="font-size:10.0pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0in"><o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0in">ipset add test 192.168.0.1 timeout 60<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;border:none windowtext 1.0pt;padding:0in">ipset -exist add test 192.168.0.1 timeout 600</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Dnsmasq supports a concept of adding entries to ipset<o:p></o:p></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal">ipset=/.wearetriple.com/p1_afkl_http_https_test<o:p></o:p></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">However the timeout functionality is not implemented in the current DNSMASQ implementation.<o:p></o:p></p>
<p class="MsoNormal">Using the DNS TTL as an IPSET TIMEOUT would seem natural…<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Would this be right construct, to support that behavior?<o:p></o:p></p>
<p class="MsoNormal">ATTR_DATA followed by the IP or TIMEOUT value in the nested construct?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal">  proto = IPSET_PROTOCOL;<o:p></o:p></p>
<p class="MsoNormal">  add_attr(nlh, IPSET_ATTR_PROTOCOL, sizeof(proto), &proto);<o:p></o:p></p>
<p class="MsoNormal">  add_attr(nlh, IPSET_ATTR_SETNAME, strlen(setname) + 1, setname);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  nested[0] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));<o:p></o:p></p>
<p class="MsoNormal">  nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));<o:p></o:p></p>
<p class="MsoNormal">  nested[0]->nla_type = NLA_F_NESTED | IPSET_ATTR_DATA;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  nested[1] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));<o:p></o:p></p>
<p class="MsoNormal">  nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));<o:p></o:p></p>
<p class="MsoNormal">  nested[1]->nla_type = NLA_F_NESTED | IPSET_ATTR_IP;<o:p></o:p></p>
<p class="MsoNormal">  <span lang="NL">add_attr(nlh,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NL">           (af == AF_INET ? IPSET_ATTR_IPADDR_IPV4 : IPSET_ATTR_IPADDR_IPV6) | NLA_F_NET_BYTEORDER,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="NL">           </span>addrsz, ipaddr);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  nested[2] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));<o:p></o:p></p>
<p class="MsoNormal">  nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));<o:p></o:p></p>
<p class="MsoNormal">  nested[2]->nla_type = NLA_F_NESTED | IPSET_ATTR_DATA;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  nested[3] = (struct my_nlattr *)(buffer + NL_ALIGN(nlh->nlmsg_len));<o:p></o:p></p>
<p class="MsoNormal">  nlh->nlmsg_len += NL_ALIGN(sizeof(struct my_nlattr));<o:p></o:p></p>
<p class="MsoNormal">  nested[3]->nla_type = NLA_F_NESTED | IPSET_ATTR_TIMEOUT;<o:p></o:p></p>
<p class="MsoNormal">  add_attr(nlh, IPSET_ATTR_TIMEOUT | NLA_F_NET_BYTEORDER,  sizeof(attl), &attl);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  nested[3]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[3];<o:p></o:p></p>
<p class="MsoNormal">  nested[2]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[2];<o:p></o:p></p>
<p class="MsoNormal">  nested[1]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[1];<o:p></o:p></p>
<p class="MsoNormal">  nested[0]->nla_len = (void *)buffer + NL_ALIGN(nlh->nlmsg_len) - (void *)nested[0];<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  while (retry_send(sendto(ipset_sock, buffer, nlh->nlmsg_len, 0,<o:p></o:p></p>
<p class="MsoNormal">                           (struct sockaddr *)&snl, sizeof(snl))));<o:p></o:p></p>
<p class="MsoNormal">~~<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="line-height:9.0pt"><span lang="NL" style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">Met vriendelijke groet / Best regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:9.0pt"><span lang="NL" style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black"> <o:p></o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="400" style="width:300.0pt">
<tbody>
<tr>
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:20.0pt"><b><span style="font-family:"Arial",sans-serif;color:#E6A732">Roderick Groesbeek<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:11.0pt"><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">CTO<o:p></o:p></span></p>
</td>
</tr>
<tr style="height:9.0pt">
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in;height:9.0pt"></td>
</tr>
<tr style="height:3.0pt">
<td width="100" valign="top" style="width:75.0pt;background:#E6A732;padding:0in 0in 0in 0in;height:3.0pt">
</td>
<td width="100" valign="top" style="width:75.0pt;padding:0in 0in 0in 0in;height:3.0pt">
</td>
<td width="100" valign="top" style="width:75.0pt;padding:0in 0in 0in 0in;height:3.0pt">
</td>
<td width="100" valign="top" style="width:75.0pt;padding:0in 0in 0in 0in;height:3.0pt">
</td>
</tr>
<tr style="height:9.0pt">
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in;height:9.0pt"></td>
</tr>
<tr>
<td colspan="2" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:16.0pt"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">M:</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black"> +31 6250 67917</span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black"><o:p></o:p></span></p>
</td>
<td colspan="2" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:16.0pt"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">O:</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">
<a href="tel:+31725129516"><span style="color:black">+31 72 512 95 16</span></a><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td colspan="2" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:16.0pt"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">E:</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">
<a href="mailto:r.groesbeek@wearetriple.com"><span style="color:#0563C1">r.groesbeek@wearetriple.com</span></a><o:p></o:p></span></p>
</td>
<td colspan="2" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:16.0pt"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">W:</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">
<a href="http://www.wearetriple.com/"><span style="color:black">www.wearetriple.com</span></a><o:p></o:p></span></p>
</td>
</tr>
<tr style="height:9.0pt">
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in;height:9.0pt"></td>
</tr>
<tr>
<td colspan="4" valign="top" style="padding:0in 0in 0in 0in">
<p class="MsoNormal" style="line-height:10.0pt"><span style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#999999">Triple  |  Keesomstraat 10E  |  1821 BS  |  Alkmaar  |  The Netherlands</span><span style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#999999"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>