Add IPv6 support, rewrite program to improve performance, and update README.

This commit is contained in:
gamemann
2020-12-18 01:42:58 +00:00
parent 5a42f995f5
commit 499a3e665a
4 changed files with 410 additions and 171 deletions

View File

@@ -24,6 +24,12 @@ void SetConfigDefaults(struct config_map *cfg)
cfg->filters[i].srcIP = 0;
cfg->filters[i].dstIP = 0;
for (uint8_t j = 0; j < 4; j++)
{
cfg->filters[i].srcIP6[j] = 0;
cfg->filters[i].dstIP6[j] = 0;
}
cfg->filters[i].do_min_len = 0;
cfg->filters[i].min_len = 0;
@@ -210,6 +216,36 @@ int ReadConfig(struct config_map *cfg)
cfg->filters[i].dstIP = inet_addr(dIP);
}
// Source IP (IPv6) (not required).
const char *sIP6;
if (config_setting_lookup_string(filter, "srcip6", &sIP6))
{
struct in6_addr in;
inet_pton(AF_INET6, sIP6, &in);
for (uint8_t j = 0; j < 4; j++)
{
cfg->filters[i].srcIP6[j] = in.__in6_u.__u6_addr32[j];
}
}
// Destination IP (IPv6) (not required).
const char *dIP6;
if (config_setting_lookup_string(filter, "dstip6", &dIP6))
{
struct in6_addr in;
inet_pton(AF_INET6, dIP6, &in);
for (uint8_t j = 0; j < 4; j++)
{
cfg->filters[i].dstIP6[j] = in.__in6_u.__u6_addr32[j];
}
}
// Minimum TTL (not required).
int min_ttl;