static inline Session::Direction ipv6_direction()

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;
    }