in src/filtration/sessions_hash.h [90:106]
static inline Session::Direction ipv6_direction(const Session& key)
{
if(key.port[0] < key.port[1])
return Session::Source;
else if(key.port[0] > key.port[1])
return Session::Destination;
// Ok, ports are equal, compare addresses
const uint32_t* s{key.ip.v6.addr_uint32[0]};
const uint32_t* d{key.ip.v6.addr_uint32[1]};
if(s[0] != d[0]) return (s[0] < d[0]) ? Session::Source : Session::Destination;
if(s[1] != d[1]) return (s[1] < d[1]) ? Session::Source : Session::Destination;
if(s[2] != d[2]) return (s[2] < d[2]) ? Session::Source : Session::Destination;
return (s[3] < d[3]) ? Session::Source : Session::Destination;
}