Simple_fwd_vnf application

I have some questions regarding the simple_fwd_vnf sample application:

  1. in simple_fwd_ft.c → simple_fwd_ft_key_equal method, it compares two keys, a total of 24 bytes (keyp1[0],keyp1[1],keyp1[2]). when looking at the key struct - simple_fwd_ft_key - it seems that the size is 28 bytes
    struct simple_fwd_ft_key {
    doca_be32_t ipv4_1;
    doca_be32_t ipv4_2;
    doca_be16_t port_1;
    doca_be16_t port_2;
    doca_be32_t vni;
    uint8_t protocol;
    uint8_t tun_type;
    uint8_t pad[6];
    uint32_t rss_hash;
    meaning the compare is ignoring the last 4 bytes (rss_hash)
    Am I missing something?
  2. regarding the key itself (simple_fwd_ft_key_fill)

    key->ipv4_1 = simple_fwd_ft_key_get_ipv4_src(inner, pinfo);
    key->ipv4_2 = simple_fwd_ft_key_get_ipv4_dst(inner, pinfo);
    key->port_1 = simple_fwd_ft_key_get_src_port(inner, pinfo);
    key->port_2 = simple_fwd_ft_key_get_dst_port(inner, pinfo);

    what about the other side of the connection, it will get a different key
    meaning, IP1:Port1 → IP2:Port2 and IP2:Port2 → IP1:Port1 will get different flow keys and will not be in the same flow table entry
    is it correct?