vlog.c:ovs_list_insert:
  164|    170|{
  165|    170|    elem->prev = before->prev;
  166|    170|    elem->next = before;
  167|    170|    before->prev->next = elem;
  168|    170|    before->prev = elem;
  169|    170|}

flow.c:nsh_get_ver:
  286|     83|{
  287|     83|    return (ntohs(nsh->ver_flags_ttl_len) & NSH_VER_MASK) >> NSH_VER_SHIFT;
  ------------------
  |  |  226|     83|#define NSH_VER_MASK       0xc000
  ------------------
                  return (ntohs(nsh->ver_flags_ttl_len) & NSH_VER_MASK) >> NSH_VER_SHIFT;
  ------------------
  |  |  227|     83|#define NSH_VER_SHIFT      14
  ------------------
  288|     83|}
flow.c:nsh_get_flags:
  292|     83|{
  293|     83|    return (ntohs(nsh->ver_flags_ttl_len) & NSH_FLAGS_MASK) >> NSH_FLAGS_SHIFT;
  ------------------
  |  |  228|     83|#define NSH_FLAGS_MASK     0x3000
  ------------------
                  return (ntohs(nsh->ver_flags_ttl_len) & NSH_FLAGS_MASK) >> NSH_FLAGS_SHIFT;
  ------------------
  |  |  229|     83|#define NSH_FLAGS_SHIFT    12
  ------------------
  294|     83|}
flow.c:nsh_hdr_len:
  273|     83|{
  274|     83|    return ((ntohs(nsh->ver_flags_ttl_len) & NSH_LEN_MASK)
  ------------------
  |  |  232|     83|#define NSH_LEN_MASK       0x003f
  ------------------
  275|     83|            >> NSH_LEN_SHIFT) << 2;
  ------------------
  |  |  233|     83|#define NSH_LEN_SHIFT      0
  ------------------
  276|     83|}
flow.c:nsh_get_ttl:
  304|     83|{
  305|     83|    return (ntohs(nsh->ver_flags_ttl_len) & NSH_TTL_MASK) >> NSH_TTL_SHIFT;
  ------------------
  |  |  230|     83|#define NSH_TTL_MASK       0x0fc0
  ------------------
                  return (ntohs(nsh->ver_flags_ttl_len) & NSH_TTL_MASK) >> NSH_TTL_SHIFT;
  ------------------
  |  |  231|     83|#define NSH_TTL_SHIFT      6
  ------------------
  306|     83|}
flow.c:nsh_get_path_hdr:
  326|     47|{
  327|     47|    return nsh_16aligned_be32(&nsh->path_hdr);
  328|     47|}
flow.c:nsh_16aligned_be32:
  311|     47|{
  312|       |#ifdef WORDS_BIGENDIAN
  313|       |    return ((ovs_be32) x->hi << 16) | (ovs_be32) x->lo;
  314|       |#else
  315|     47|    return ((ovs_be32) x->lo << 16) | (ovs_be32) x->hi;
  316|     47|#endif
  317|     47|}

flow.c:init_this_module_flow:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev.c:init_this_module_netdev:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-port.c:init_this_module_ofp_port:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-protocol.c:init_this_module_ofp_protocol:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-queue.c:init_this_module_ofp_queue:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-table.c:init_this_module_ofp_table:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-util.c:init_this_module_ofp_util:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovs-rcu.c:init_this_module_ovs_rcu:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovs-router.c:init_this_module_ovs_router:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovs-thread.c:init_this_module_ovs_thread:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
poll-loop.c:init_this_module_poll_loop:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
socket-util.c:init_this_module_socket_util:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
timeval.c:init_this_module_timeval:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
unixctl.c:init_this_module_unixctl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
util.c:init_this_module_util:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
uuid.c:init_this_module_uuid:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
vlog.c:init_this_module_vlog:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
socket-util-unix.c:init_this_module_socket_util_unix:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev-linux.c:init_this_module_netdev_linux:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev-offload-tc.c:init_this_module_netdev_offload_tc:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netlink-socket.c:init_this_module_netlink_socket:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
route-table.c:init_this_module_route_table:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
tc.c:init_this_module_tc:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
coverage.c:init_this_module_coverage:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif.c:init_this_module_dpif:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
entropy.c:init_this_module_entropy:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
fatal-signal.c:init_this_module_fatal_signal:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
hmap.c:init_this_module_hmap:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
jsonrpc.c:init_this_module_jsonrpc:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
meta-flow.c:init_this_module_meta_flow:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev-offload.c:init_this_module_netdev_offload:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev-vport.c:init_this_module_netdev_vport:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netlink.c:init_this_module_netlink:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
nx-match.c:init_this_module_nx_match:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
odp-execute.c:init_this_module_odp_execute:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
odp-execute-private.c:init_this_module_odp_execute_impl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
odp-util.c:init_this_module_odp_util:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-actions.c:init_this_module_ofp_actions:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-bundle.c:init_this_module_ofp_bundle:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-connection.c:init_this_module_ofp_connection:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-errors.c:init_this_module_ofp_errors:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-flow.c:init_this_module_ofp_flow:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-group.c:init_this_module_ofp_group:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-match.c:init_this_module_ofp_match:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-meter.c:init_this_module_ofp_meter:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-monitor.c:init_this_module_ofp_monitor:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-msgs.c:init_this_module_ofp_msgs:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ofp-packet.c:init_this_module_ofp_packet:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovs-replay.c:init_this_module_ovs_replay:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ox-stat.c:init_this_module_ox_stat:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
reconnect.c:init_this_module_reconnect:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
sha1.c:init_this_module_sha1:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream.c:init_this_module_stream:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
svec.c:init_this_module_svec:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netdev-native-tnl.c:init_this_module_native_tnl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
userspace-tso.c:init_this_module_userspace_tso:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
signals.c:init_this_module_signals:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream-unix.c:init_this_module_stream_unix:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netlink.c:init_this_module_dpif_netlink:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netlink-rtnl.c:init_this_module_dpif_netlink_rtnl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netlink-conntrack.c:init_this_module_netlink_conntrack:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
netlink-notifier.c:init_this_module_netlink_notifier:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream-ssl.c:init_this_module_stream_ssl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
bundle.c:init_this_module_bundle:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
conntrack.c:init_this_module_conntrack:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ct-dpif.c:init_this_module_ct_dpif:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev.c:init_this_module_dpif_netdev:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-private-dpif.c:init_this_module_dpif_netdev_impl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-private-extract.c:init_this_module_dpif_netdev_extract:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-perf.c:init_this_module_pmd_perf:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ipf.c:init_this_module_ipf:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovs-numa.c:init_this_module_ovs_numa:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream-fd.c:init_this_module_stream_fd:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream-replay.c:init_this_module_stream_replay:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
stream-tcp.c:init_this_module_stream_tcp:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpdk-stub.c:init_this_module_dpdk:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
conntrack-tp.c:init_this_module_conntrack_tp:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-extract-study.c:init_this_module_dpif_mfex_extract_study:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-lookup.c:init_this_module_dpif_netdev_lookup:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-lookup-autovalidator.c:init_this_module_dpif_lookup_autovalidator:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
dpif-netdev-lookup-generic.c:init_this_module_dpif_lookup_generic:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovsdb-error.c:init_this_module_ovsdb_error:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovsdb-idl.c:init_this_module_ovsdb_idl:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
backtrace.c:init_this_module_backtrace:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \
ovsdb-cs.c:init_this_module_ovsdb_cs:
  190|      2|        OVS_CONSTRUCTOR(init_this_module_##MODULE) {                    \
  191|      2|            vlog_insert_module(&this_module.list);                      \
  192|      2|        }                                                               \

flow.c:bytes_to_be32:
  110|  1.14k|{
  111|       |#if WORDS_BIGENDIAN
  112|       |    uint32_t x = ((uint32_t) b0 << 24) | (b1 << 16) | (b2 << 8) | b3;
  113|       |#else
  114|  1.14k|    uint32_t x = ((uint32_t) b3 << 24) | (b2 << 16) | (b1 << 8) | b0;
  115|  1.14k|#endif
  116|  1.14k|    return (OVS_FORCE ovs_be32) x;
  117|  1.14k|}

miniflow_target.c:miniflow_hash_in_minimask:
  245|  1.95k|{
  246|  1.95k|    const uint64_t *mask_values = miniflow_get_values(&mask->masks);
  247|  1.95k|    const uint64_t *p = mask_values;
  248|  1.95k|    uint32_t hash = basis;
  249|  1.95k|    uint64_t value;
  250|       |
  251|  30.4k|    MINIFLOW_FOR_EACH_IN_FLOWMAP(value, flow, mask->masks.map) {
  ------------------
  |  |  662|  1.95k|    for (struct mf_for_each_in_map_aux aux__ =                      \
  |  |  663|  1.95k|        { 0, (FLOW)->map, (FLOWMAP), miniflow_get_values(FLOW) };   \
  |  |  664|  32.3k|         mf_get_next_in_map(&aux__, &(VALUE));)
  |  |  ------------------
  |  |  |  Branch (664:10): [True: 30.4k, False: 1.95k]
  |  |  ------------------
  ------------------
  252|  30.4k|        hash = hash_add64(hash, value & *p++);
  253|  30.4k|    }
  254|       |
  255|  1.95k|    return hash_finish(hash, (p - mask_values) * 8);
  256|  1.95k|}
miniflow_target.c:flow_hash_in_minimask:
  218|  1.95k|{
  219|  1.95k|    const uint64_t *mask_values = miniflow_get_values(&mask->masks);
  220|  1.95k|    const uint64_t *flow_u64 = (const uint64_t *)flow;
  221|  1.95k|    const uint64_t *p = mask_values;
  222|  1.95k|    uint32_t hash = basis;
  223|  1.95k|    map_t map;
  224|       |
  225|  3.90k|    FLOWMAP_FOR_EACH_MAP (map, mask->masks.map) {
  ------------------
  |  |  323|  1.95k|    for (size_t unit__ = 0;                                       \
  |  |  324|  5.85k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  279|  5.85k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  11.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (324:10): [True: 3.90k, False: 1.95k]
  |  |  |  Branch (324:36): [True: 3.90k, False: 0]
  |  |  ------------------
  |  |  325|  3.90k|         unit__++)
  ------------------
  226|  3.90k|        size_t idx;
  227|       |
  228|  30.4k|        MAP_FOR_EACH_INDEX (idx, map) {
  ------------------
  |  |  277|  3.90k|    ULLONG_FOR_EACH_1(IDX, MAP)
  |  |  ------------------
  |  |  |  |  285|  3.90k|    for (uint64_t map__ = (MAP);                    \
  |  |  |  |  286|  34.3k|         map__ && (((IDX) = raw_ctz(map__)), true); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (286:10): [True: 30.4k, False: 3.90k]
  |  |  |  |  |  Branch (286:19): [True: 30.4k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  287|  30.4k|         map__ = zero_rightmost_1bit(map__))
  |  |  ------------------
  ------------------
  229|  30.4k|            hash = hash_add64(hash, flow_u64[idx] & *p++);
  230|  30.4k|        }
  231|  3.90k|        flow_u64 += MAP_T_BITS;
  ------------------
  |  |  269|  3.90k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  232|  3.90k|    }
  233|       |
  234|  1.95k|    return hash_finish(hash, (p - mask_values) * 8);
  235|  1.95k|}
miniflow_target.c:minimask_hash:
  319|  1.95k|{
  320|  1.95k|    const uint64_t *p = miniflow_get_values(&mask->masks);
  321|  1.95k|    size_t n_values = miniflow_n_values(&mask->masks);
  322|  1.95k|    uint32_t hash = basis;
  323|       |
  324|  32.3k|    for (size_t i = 0; i < n_values; i++) {
  ------------------
  |  Branch (324:24): [True: 30.4k, False: 1.95k]
  ------------------
  325|  30.4k|        hash = hash_add64(hash, *p++);
  326|  30.4k|    }
  327|       |
  328|  1.95k|    map_t map;
  329|  3.90k|    FLOWMAP_FOR_EACH_MAP (map, mask->masks.map) {
  ------------------
  |  |  323|  1.95k|    for (size_t unit__ = 0;                                       \
  |  |  324|  5.85k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  279|  5.85k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  11.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (324:10): [True: 3.90k, False: 1.95k]
  |  |  |  Branch (324:36): [True: 3.90k, False: 0]
  |  |  ------------------
  |  |  325|  3.90k|         unit__++)
  ------------------
  330|  3.90k|        hash = hash_add64(hash, map);
  331|  3.90k|    }
  332|       |
  333|  1.95k|    return hash_finish(hash, n_values);
  334|  1.95k|}

coverage_counter_register:
   53|    198|{
   54|    198|    if (n_coverage_counters >= allocated_coverage_counters) {
  ------------------
  |  Branch (54:9): [True: 16, False: 182]
  ------------------
   55|     16|        coverage_counters = x2nrealloc(coverage_counters,
   56|     16|                                       &allocated_coverage_counters,
   57|     16|                                       sizeof(struct coverage_counter*));
   58|     16|    }
   59|    198|    coverage_counters[n_coverage_counters++] = counter;
   60|    198|}

flow.c:flow_extract_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv4_pkt_len_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv4_pkt_too_short_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv6_pkt_len_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_extract_ipv6_pkt_too_short_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:miniflow_malloc_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
flow.c:flow_extract_add:
   72|  1.95k|        {                                                               \
   73|  1.95k|            *counter_##COUNTER##_get() += n;                            \
   74|  1.95k|        }                                                               \
flow.c:miniflow_extract_ipv4_pkt_too_short_add:
   72|     13|        {                                                               \
   73|     13|            *counter_##COUNTER##_get() += n;                            \
   74|     13|        }                                                               \
flow.c:miniflow_extract_ipv4_pkt_len_error_add:
   72|     74|        {                                                               \
   73|     74|            *counter_##COUNTER##_get() += n;                            \
   74|     74|        }                                                               \
flow.c:miniflow_extract_ipv6_pkt_too_short_add:
   72|     12|        {                                                               \
   73|     12|            *counter_##COUNTER##_get() += n;                            \
   74|     12|        }                                                               \
flow.c:miniflow_extract_ipv6_pkt_len_error_add:
   72|     40|        {                                                               \
   73|     40|            *counter_##COUNTER##_get() += n;                            \
   74|     40|        }                                                               \
flow.c:miniflow_malloc_add:
   72|  19.4k|        {                                                               \
   73|  19.4k|            *counter_##COUNTER##_get() += n;                            \
   74|  19.4k|        }                                                               \
netdev.c:netdev_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_sent_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_add_router_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_get_stats_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_send_prepare_drops_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev.c:netdev_push_header_drops_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
poll-loop.c:poll_create_node_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
poll-loop.c:poll_zero_timeout_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
seq.c:seq_change_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
unixctl.c:unixctl_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
unixctl.c:unixctl_replied_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
util.c:util_xalloc_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
util.c:util_xalloc_add:
   72|  19.4k|        {                                                               \
   73|  19.4k|            *counter_##COUNTER##_get() += n;                            \
   74|  19.4k|        }                                                               \
netdev-linux.c:netdev_set_policing_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_arp_lookup_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_ifindex_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_hwaddr_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_set_hwaddr_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_get_ethtool_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netdev-linux.c:netdev_set_ethtool_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_overflow_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_received_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_recv_jumbo_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-socket.c:netlink_sent_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ccmap.c:ccmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ccmap.c:ccmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
cmap.c:cmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
cmap.c:cmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_destroy_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_port_add_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_port_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_flush_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_get_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_put_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_flow_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_execute_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_purge_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_execute_with_help_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_set_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_get_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif.c:dpif_meter_del_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_pathological_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hmap.c:hmap_reserve_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:datapath_drop_sample_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:datapath_drop_nsh_decap_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_of_pipeline_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_bridge_not_found_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_recursion_too_deep_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_too_many_resubmit_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_stack_too_deep_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_no_recirculation_context_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_recirculation_conflict_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_too_many_mpls_labels_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_invalid_tunnel_metadata_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_unsupported_packet_type_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_congestion_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
odp-execute.c:drop_action_forwarding_disabled_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
stream.c:pstream_open_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
stream.c:stream_open_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
netlink-notifier.c:nln_changed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_full_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l3csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_l4csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack.c:conntrack_lookup_natted_miss_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_meter_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_upcall_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_lock_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_userspace_action_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_tunnel_push_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_tunnel_pop_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_recirc_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_port_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_bond_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_invalid_tnl_port_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
dpif-netdev.c:datapath_drop_rx_invalid_packet_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_pathological_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_expand_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_shrink_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
hindex.c:hindex_reserve_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_stuck_frag_list_purged_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ipf.c:ipf_l3csum_err_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_tcp_seq_chk_bypass_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_tcp_seq_chk_failed_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
conntrack-tcp.c:conntrack_invalid_tcp_flags_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_uncommitted_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_unchanged_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_incomplete_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_aborted_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_success_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_try_again_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_not_locked_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }
ovsdb-idl.c:txn_error_init_coverage:
   78|      2|        OVS_CONSTRUCTOR(COUNTER##_init_coverage) {                      \
   79|      2|            coverage_counter_register(&counter_##COUNTER);              \
   80|      2|        }

dp_packet_use_const:
  108|  1.95k|{
  109|  1.95k|    dp_packet_use__(b, CONST_CAST(void *, data), size, DPBUF_STACK);
  ------------------
  |  |   81|  1.95k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|  1.95k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|  1.95k|     (TYPE) (POINTER))
  ------------------
  110|  1.95k|    dp_packet_set_size(b, size);
  111|  1.95k|}
dp-packet.c:dp_packet_use__:
   45|  1.95k|{
   46|  1.95k|    dp_packet_set_base(b, base);
   47|  1.95k|    dp_packet_set_data(b, base);
   48|  1.95k|    dp_packet_set_size(b, 0);
   49|       |
   50|  1.95k|    dp_packet_init__(b, allocated, source);
   51|  1.95k|}
dp-packet.c:dp_packet_init__:
   29|  1.95k|{
   30|  1.95k|    dp_packet_set_allocated(b, allocated);
   31|  1.95k|    b->source = source;
   32|  1.95k|    dp_packet_reset_offsets(b);
   33|  1.95k|    pkt_metadata_init(&b->md, 0);
   34|  1.95k|    dp_packet_reset_cutlen(b);
   35|  1.95k|    dp_packet_reset_offload(b);
   36|       |    /* Initialize implementation-specific fields of dp_packet. */
   37|  1.95k|    dp_packet_init_specific(b);
   38|       |    /* By default assume the packet type to be Ethernet. */
   39|  1.95k|    b->packet_type = htonl(PT_ETH);
   40|  1.95k|}

dp-packet.c:dp_packet_reset_offsets:
  388|  1.95k|{
  389|  1.95k|    b->l2_pad_size = 0;
  390|  1.95k|    b->l2_5_ofs = UINT16_MAX;
  391|  1.95k|    b->l3_ofs = UINT16_MAX;
  392|  1.95k|    b->l4_ofs = UINT16_MAX;
  393|  1.95k|}
dp-packet.c:dp_packet_reset_cutlen:
  700|  1.95k|{
  701|  1.95k|    b->cutlen = 0;
  702|  1.95k|}
dp-packet.c:dp_packet_reset_offload:
  945|  1.95k|{
  946|  1.95k|    *dp_packet_ol_flags_ptr(p) &= ~DP_PACKET_OL_SUPPORTED_MASK;
  ------------------
  |  |   89|  1.95k|#define DP_PACKET_OL_SUPPORTED_MASK (DP_PACKET_OL_RSS_HASH         | \
  |  |   90|  1.95k|                                     DP_PACKET_OL_FLOW_MARK        | \
  |  |   91|  1.95k|                                     DP_PACKET_OL_RX_L4_CKSUM_BAD  | \
  |  |   92|  1.95k|                                     DP_PACKET_OL_RX_IP_CKSUM_BAD  | \
  |  |   93|  1.95k|                                     DP_PACKET_OL_RX_L4_CKSUM_GOOD | \
  |  |   94|  1.95k|                                     DP_PACKET_OL_RX_IP_CKSUM_GOOD | \
  |  |   95|  1.95k|                                     DP_PACKET_OL_TX_TCP_SEG       | \
  |  |   96|  1.95k|                                     DP_PACKET_OL_TX_IPV4          | \
  |  |   97|  1.95k|                                     DP_PACKET_OL_TX_IPV6          | \
  |  |   98|  1.95k|                                     DP_PACKET_OL_TX_TCP_CKSUM     | \
  |  |   99|  1.95k|                                     DP_PACKET_OL_TX_UDP_CKSUM     | \
  |  |  100|  1.95k|                                     DP_PACKET_OL_TX_SCTP_CKSUM)
  ------------------
  947|  1.95k|}
dp-packet.c:dp_packet_init_specific:
  644|  1.95k|{
  645|       |    /* There are no implementation-specific fields for initialization. */
  646|  1.95k|}
dp-packet.c:dp_packet_set_size:
  668|  3.90k|{
  669|  3.90k|    b->size_ = v;
  670|  3.90k|}
dp-packet.c:dp_packet_base:
  650|  1.95k|{
  651|  1.95k|    return b->base_;
  652|  1.95k|}
dp-packet.c:dp_packet_ol_flags_ptr:
  552|  1.95k|{
  553|  1.95k|    return CONST_CAST(uint32_t *, &b->ol_flags);
  ------------------
  |  |   81|  1.95k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|  1.95k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|  1.95k|     (TYPE) (POINTER))
  ------------------
  554|  1.95k|}
dp-packet.c:dp_packet_set_allocated:
  692|  1.95k|{
  693|  1.95k|    b->allocated_ = s;
  694|  1.95k|}
dp-packet.c:dp_packet_set_base:
  656|  1.95k|{
  657|  1.95k|    b->base_ = d;
  658|  1.95k|}
dp-packet.c:dp_packet_set_data:
  741|  1.95k|{
  742|  1.95k|    if (data) {
  ------------------
  |  Branch (742:9): [True: 1.95k, False: 0]
  ------------------
  743|  1.95k|        __packet_set_data(b, (char *) data - (char *) dp_packet_base(b));
  744|  1.95k|    } else {
  745|      0|        __packet_set_data(b, UINT16_MAX);
  746|      0|    }
  747|  1.95k|}
dp-packet.c:__packet_set_data:
  680|  1.95k|{
  681|  1.95k|    b->data_ofs = v;
  682|  1.95k|}
flow.c:dp_packet_data:
  734|  2.52k|{
  735|  2.52k|    return __packet_data(b) != UINT16_MAX
  ------------------
  |  Branch (735:12): [True: 2.52k, False: 0]
  ------------------
  736|  2.52k|           ? (char *) dp_packet_base(b) + __packet_data(b) : NULL;
  737|  2.52k|}
flow.c:__packet_data:
  674|  5.05k|{
  675|  5.05k|    return b->data_ofs;
  676|  5.05k|}
flow.c:dp_packet_base:
  650|  2.52k|{
  651|  2.52k|    return b->base_;
  652|  2.52k|}
flow.c:dp_packet_size:
  662|  3.20k|{
  663|  3.20k|    return b->size_;
  664|  3.20k|}
flow.c:dp_packet_reset_offsets:
  388|  1.95k|{
  389|  1.95k|    b->l2_pad_size = 0;
  390|  1.95k|    b->l2_5_ofs = UINT16_MAX;
  391|  1.95k|    b->l3_ofs = UINT16_MAX;
  392|  1.95k|    b->l4_ofs = UINT16_MAX;
  393|  1.95k|}
flow.c:dp_packet_set_l2_pad_size:
  403|  1.25k|{
  404|  1.25k|    ovs_assert(pad_size <= dp_packet_size(b));
  ------------------
  |  |   58|  1.25k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  405|  1.25k|    b->l2_pad_size = pad_size;
  406|  1.25k|}
flow.c:dp_packet_update_rss_hash_ipv4_tcp_udp:
 1135|    215|{
 1136|    215|    if (dp_packet_rss_valid(packet)) {
  ------------------
  |  Branch (1136:9): [True: 0, False: 215]
  ------------------
 1137|      0|        return;
 1138|      0|    }
 1139|       |
 1140|    215|    const uint8_t *pkt = dp_packet_data(packet);
 1141|    215|    const void *l4_ports = &pkt[packet->l4_ofs];
 1142|    215|    const uint16_t l3_ofs = packet->l3_ofs;
 1143|    215|    uint32_t hash = 0;
 1144|    215|    uint32_t ports;
 1145|       |
 1146|       |    /* IPv4 Src, Dst and proto. */
 1147|    215|    hash = dp_packet_calc_hash_ipv4(pkt, l3_ofs, hash);
 1148|       |
 1149|       |    /* L4 ports. */
 1150|    215|    memcpy(&ports,  l4_ports, sizeof ports);
 1151|    215|    hash = hash_add(hash, ports);
 1152|       |
 1153|    215|    hash = hash_finish(hash, 42);
 1154|    215|    dp_packet_set_rss_hash(packet, hash);
 1155|    215|}
flow.c:dp_packet_rss_valid:
  939|    578|{
  940|    578|    return *dp_packet_ol_flags_ptr(p) & DP_PACKET_OL_RSS_HASH;
  941|    578|}
flow.c:dp_packet_ol_flags_ptr:
  552|  1.15k|{
  553|  1.15k|    return CONST_CAST(uint32_t *, &b->ol_flags);
  ------------------
  |  |   81|  1.15k|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|  1.15k|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|  1.15k|     (TYPE) (POINTER))
  ------------------
  554|  1.15k|}
flow.c:dp_packet_calc_hash_ipv4:
 1097|    215|{
 1098|    215|    const void *ipv4_src = &pkt[l3_ofs + offsetof(struct ip_header, ip_src)];
 1099|    215|    const void *ipv4_dst = &pkt[l3_ofs + offsetof(struct ip_header, ip_dst)];
 1100|    215|    uint32_t ip_src, ip_dst;
 1101|       |
 1102|    215|    memcpy(&ip_src, ipv4_src, sizeof ip_src);
 1103|    215|    memcpy(&ip_dst, ipv4_dst, sizeof ip_dst);
 1104|       |
 1105|       |    /* IPv4 Src and Dst. */
 1106|    215|    hash = hash_add(hash, ip_src);
 1107|    215|    hash = hash_add(hash, ip_dst);
 1108|       |
 1109|       |    /* IPv4 proto. */
 1110|    215|    hash = hash_add(hash, pkt[l3_ofs + offsetof(struct ip_header, ip_proto)]);
 1111|       |
 1112|    215|    return hash;
 1113|    215|}
flow.c:dp_packet_set_rss_hash:
  932|    578|{
  933|    578|    *dp_packet_rss_ptr(p) = hash;
  934|    578|    *dp_packet_ol_flags_ptr(p) |= DP_PACKET_OL_RSS_HASH;
  935|    578|}
flow.c:dp_packet_rss_ptr:
  558|    578|{
  559|    578|    return CONST_CAST(uint32_t *, &b->rss_hash);
  ------------------
  |  |   81|    578|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|    578|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|    578|     (TYPE) (POINTER))
  ------------------
  560|    578|}
flow.c:dp_packet_update_rss_hash_ipv6_tcp_udp:
 1159|    363|{
 1160|    363|    if (dp_packet_rss_valid(packet)) {
  ------------------
  |  Branch (1160:9): [True: 0, False: 363]
  ------------------
 1161|      0|        return;
 1162|      0|    }
 1163|       |
 1164|    363|    const uint8_t *pkt = dp_packet_data(packet);
 1165|    363|    const uint16_t l3_ofs = packet->l3_ofs;
 1166|    363|    uint32_t ipv6_src_off = offsetof(struct ovs_16aligned_ip6_hdr, ip6_src);
 1167|    363|    uint32_t ipv6_dst_off = offsetof(struct ovs_16aligned_ip6_hdr, ip6_dst);
 1168|    363|    uint32_t ipv6_proto_off = offsetof(struct ovs_16aligned_ip6_hdr,
 1169|    363|                                       ip6_ctlun.ip6_un1.ip6_un1_nxt);
 1170|    363|    const void *ipv6_src_l = &pkt[l3_ofs + ipv6_src_off];
 1171|    363|    const void *ipv6_src_h = &pkt[l3_ofs + ipv6_src_off + 8];
 1172|    363|    const void *ipv6_dst_l = &pkt[l3_ofs + ipv6_dst_off];
 1173|    363|    const void *ipv6_dst_h = &pkt[l3_ofs + ipv6_dst_off + 8];
 1174|    363|    const void *l4_ports = &pkt[packet->l4_ofs];
 1175|    363|    uint64_t ipv6_src_lo, ipv6_src_hi;
 1176|    363|    uint64_t ipv6_dst_lo, ipv6_dst_hi;
 1177|    363|    uint32_t ports;
 1178|    363|    uint32_t hash = 0;
 1179|       |
 1180|    363|    memcpy(&ipv6_src_lo, ipv6_src_l, sizeof ipv6_src_lo);
 1181|    363|    memcpy(&ipv6_src_hi, ipv6_src_h, sizeof ipv6_src_hi);
 1182|    363|    memcpy(&ipv6_dst_lo, ipv6_dst_l, sizeof ipv6_dst_lo);
 1183|    363|    memcpy(&ipv6_dst_hi, ipv6_dst_h, sizeof ipv6_dst_hi);
 1184|    363|    memcpy(&ports, l4_ports, sizeof ports);
 1185|       |
 1186|       |    /* IPv6 Src and Dst. */
 1187|    363|    hash = hash_add64(hash, ipv6_src_lo);
 1188|    363|    hash = hash_add64(hash, ipv6_src_hi);
 1189|    363|    hash = hash_add64(hash, ipv6_dst_lo);
 1190|    363|    hash = hash_add64(hash, ipv6_dst_hi);
 1191|       |    /* IPv6 proto. */
 1192|    363|    hash = hash_add(hash, pkt[l3_ofs + ipv6_proto_off]);
 1193|       |    /* L4 ports. */
 1194|    363|    hash = hash_add(hash, ports);
 1195|    363|    hash = hash_finish(hash, 42);
 1196|       |
 1197|    363|    dp_packet_set_rss_hash(packet, hash);
 1198|    363|}

get_entropy:
   38|      1|{
   39|      1|#ifndef _WIN32
   40|      1|    size_t bytes_read;
   41|      1|    int error;
   42|      1|    int fd;
   43|       |
   44|      1|    fd = open(urandom, O_RDONLY);
   45|      1|    if (fd < 0) {
  ------------------
  |  Branch (45:9): [True: 0, False: 1]
  ------------------
   46|      0|        VLOG_ERR("%s: open failed (%s)", urandom, ovs_strerror(errno));
  ------------------
  |  |  207|      0|#define VLOG_ERR(...) VLOG(VLL_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  279|      0|    do {                                                \
  |  |  |  |  280|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  281|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (281:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  282|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  283|      0|        }                                               \
  |  |  |  |  284|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (284:14): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   47|      0|        return errno ? errno : EINVAL;
   48|      0|    }
   49|       |
   50|      1|    error = read_fully(fd, buffer, n, &bytes_read);
   51|      1|    close(fd);
   52|       |
   53|      1|    if (error) {
  ------------------
  |  Branch (53:9): [True: 0, False: 1]
  ------------------
   54|      0|        VLOG_ERR("%s: read error (%s)", urandom, ovs_retval_to_string(error));
  ------------------
  |  |  207|      0|#define VLOG_ERR(...) VLOG(VLL_ERR, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  279|      0|    do {                                                \
  |  |  |  |  280|      0|        enum vlog_level level__ = LEVEL;                \
  |  |  |  |  281|      0|        if (this_module.min_level >= level__) {         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (281:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  282|      0|            vlog(&this_module, level__, __VA_ARGS__);   \
  |  |  |  |  283|      0|        }                                               \
  |  |  |  |  284|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (284:14): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   55|      0|    }
   56|       |#else
   57|       |    int error = 0;
   58|       |    HCRYPTPROV   crypt_prov = 0;
   59|       |
   60|       |    CryptAcquireContext(&crypt_prov, NULL, NULL,
   61|       |                        PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
   62|       |    if (!CryptGenRandom(crypt_prov, n, buffer)) {
   63|       |        VLOG_ERR("CryptGenRandom: read error (%s)", ovs_lasterror_to_string());
   64|       |        error = EINVAL;
   65|       |    }
   66|       |
   67|       |    CryptReleaseContext(crypt_prov, 0);
   68|       |#endif
   69|      1|    return error;
   70|      1|}
get_entropy_or_die:
   76|      1|{
   77|      1|    int error = get_entropy(buffer, n);
   78|      1|    if (error) {
  ------------------
  |  Branch (78:9): [True: 0, False: 1]
  ------------------
   79|      0|        VLOG_FATAL("%s: read error (%s)",
  ------------------
  |  |  204|      0|#define VLOG_FATAL(...) vlog_fatal(&this_module, __VA_ARGS__)
  ------------------
   80|      0|                   urandom, ovs_retval_to_string(error));
   81|      0|    }
   82|      1|}

parse_nsh:
  577|     89|{
  578|     89|    const struct nsh_hdr *nsh = (const struct nsh_hdr *) *datap;
  579|     89|    uint8_t version, length, flags, ttl;
  580|       |
  581|       |    /* Check if it is long enough for NSH header, doesn't support
  582|       |     * MD type 2 yet
  583|       |     */
  584|     89|    if (OVS_UNLIKELY(*sizep < NSH_BASE_HDR_LEN)) {
  ------------------
  |  |   46|     89|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 6, False: 83]
  |  |  ------------------
  ------------------
  585|      6|        return false;
  586|      6|    }
  587|       |
  588|     83|    version = nsh_get_ver(nsh);
  589|     83|    flags = nsh_get_flags(nsh);
  590|     83|    length = nsh_hdr_len(nsh);
  591|     83|    ttl = nsh_get_ttl(nsh);
  592|       |
  593|     83|    if (OVS_UNLIKELY(length > *sizep || version != 0)) {
  ------------------
  |  |   46|    159|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 36, False: 47]
  |  |  |  Branch (46:53): [True: 7, False: 76]
  |  |  |  Branch (46:53): [True: 29, False: 47]
  |  |  ------------------
  ------------------
  594|     36|        return false;
  595|     36|    }
  596|       |
  597|     47|    key->flags = flags;
  598|     47|    key->ttl = ttl;
  599|     47|    key->mdtype = nsh->md_type;
  600|     47|    key->np = nsh->next_proto;
  601|     47|    key->path_hdr = nsh_get_path_hdr(nsh);
  602|       |
  603|     47|    switch (key->mdtype) {
  604|     15|        case NSH_M_TYPE1:
  ------------------
  |  |  251|     15|#define NSH_M_TYPE1     0x01
  ------------------
  |  Branch (604:9): [True: 15, False: 32]
  ------------------
  605|     15|            if (length != NSH_M_TYPE1_LEN) {
  ------------------
  |  |  263|     15|#define NSH_M_TYPE1_LEN   24
  ------------------
  |  Branch (605:17): [True: 13, False: 2]
  ------------------
  606|     13|                return false;
  607|     13|            }
  608|     10|            for (size_t i = 0; i < 4; i++) {
  ------------------
  |  Branch (608:32): [True: 8, False: 2]
  ------------------
  609|      8|                key->context[i] = get_16aligned_be32(&nsh->md1.context[i]);
  610|      8|            }
  611|      2|            break;
  612|      8|        case NSH_M_TYPE2:
  ------------------
  |  |  252|      8|#define NSH_M_TYPE2     0x02
  ------------------
  |  Branch (612:9): [True: 8, False: 39]
  ------------------
  613|       |            /* Don't support MD type 2 metedata parsing yet */
  614|      8|            if (length < NSH_BASE_HDR_LEN) {
  ------------------
  |  |  260|      8|#define NSH_BASE_HDR_LEN  8
  ------------------
  |  Branch (614:17): [True: 2, False: 6]
  ------------------
  615|      2|                return false;
  616|      2|            }
  617|       |
  618|      6|            memset(key->context, 0, sizeof(key->context));
  619|      6|            break;
  620|     24|        default:
  ------------------
  |  Branch (620:9): [True: 24, False: 23]
  ------------------
  621|       |            /* We don't parse other context headers yet. */
  622|     24|            memset(key->context, 0, sizeof(key->context));
  623|     24|            break;
  624|     47|    }
  625|       |
  626|     32|    data_pull(datap, sizep, length);
  627|       |
  628|     32|    return true;
  629|     47|}
flow_extract:
  635|  1.95k|{
  636|  1.95k|    struct {
  637|  1.95k|        struct miniflow mf;
  638|  1.95k|        uint64_t buf[FLOW_U64S];
  639|  1.95k|    } m;
  640|       |
  641|  1.95k|    COVERAGE_INC(flow_extract);
  ------------------
  |  |   83|  1.95k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|  1.95k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  642|       |
  643|  1.95k|    miniflow_extract(packet, &m.mf);
  644|  1.95k|    miniflow_expand(&m.mf, flow);
  645|  1.95k|}
miniflow_extract:
  762|  1.95k|{
  763|       |    /* Add code to this function (or its callees) to extract new fields. */
  764|  1.95k|    BUILD_ASSERT_DECL(FLOW_WC_SEQ == 42);
  ------------------
  |  |  269|  1.95k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
  765|       |
  766|  1.95k|    const struct pkt_metadata *md = &packet->md;
  767|  1.95k|    const void *data = dp_packet_data(packet);
  768|  1.95k|    size_t size = dp_packet_size(packet);
  769|  1.95k|    ovs_be32 packet_type = packet->packet_type;
  770|  1.95k|    uint64_t *values = miniflow_values(dst);
  771|  1.95k|    struct mf_ctx mf = { FLOWMAP_EMPTY_INITIALIZER, values,
  ------------------
  |  |  285|  1.95k|#define FLOWMAP_EMPTY_INITIALIZER { { 0 } }
  ------------------
  772|  1.95k|                         values + FLOW_U64S };
  ------------------
  |  |  165|  1.95k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  773|  1.95k|    const char *frame;
  774|  1.95k|    ovs_be16 dl_type = OVS_BE16_MAX;
  ------------------
  |  |   42|  1.95k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
  775|  1.95k|    uint8_t nw_frag, nw_tos, nw_ttl, nw_proto;
  776|  1.95k|    uint8_t *ct_nw_proto_p = NULL;
  777|  1.95k|    ovs_be16 ct_tp_src = 0, ct_tp_dst = 0;
  778|       |
  779|       |    /* Metadata. */
  780|  1.95k|    if (flow_tnl_dst_is_set(&md->tunnel)) {
  ------------------
  |  Branch (780:9): [True: 0, False: 1.95k]
  ------------------
  781|      0|        miniflow_push_words(mf, tunnel, &md->tunnel,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  782|      0|                            offsetof(struct flow_tnl, metadata) /
  783|      0|                            sizeof(uint64_t));
  784|       |
  785|      0|        if (!(md->tunnel.flags & FLOW_TNL_F_UDPIF)) {
  ------------------
  |  |   45|      0|#define FLOW_TNL_F_UDPIF (1 << 4)
  ------------------
  |  Branch (785:13): [True: 0, False: 0]
  ------------------
  786|      0|            if (md->tunnel.metadata.present.map) {
  ------------------
  |  Branch (786:17): [True: 0, False: 0]
  ------------------
  787|      0|                miniflow_push_words(mf, tunnel.metadata, &md->tunnel.metadata,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  788|      0|                                    sizeof md->tunnel.metadata /
  789|      0|                                    sizeof(uint64_t));
  790|      0|            }
  791|      0|        } else {
  792|      0|            if (md->tunnel.metadata.present.len) {
  ------------------
  |  Branch (792:17): [True: 0, False: 0]
  ------------------
  793|      0|                miniflow_push_words(mf, tunnel.metadata.present,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  794|      0|                                    &md->tunnel.metadata.present, 1);
  795|      0|                miniflow_push_words(mf, tunnel.metadata.opts.gnv,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  796|      0|                                    md->tunnel.metadata.opts.gnv,
  797|      0|                                    DIV_ROUND_UP(md->tunnel.metadata.present.len,
  798|      0|                                                 sizeof(uint64_t)));
  799|      0|            }
  800|      0|        }
  801|      0|    }
  802|  1.95k|    if (md->skb_priority || md->pkt_mark) {
  ------------------
  |  Branch (802:9): [True: 0, False: 1.95k]
  |  Branch (802:29): [True: 0, False: 1.95k]
  ------------------
  803|      0|        miniflow_push_uint32(mf, skb_priority, md->skb_priority);
  ------------------
  |  |  297|      0|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|      0|                                                \
  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|      0|}
  |  |  ------------------
  ------------------
  804|      0|        miniflow_push_uint32(mf, pkt_mark, md->pkt_mark);
  ------------------
  |  |  297|      0|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|      0|                                                \
  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|      0|}
  |  |  ------------------
  ------------------
  805|      0|    }
  806|  1.95k|    miniflow_push_uint32(mf, dp_hash, md->dp_hash);
  ------------------
  |  |  297|  1.95k|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|  1.95k|    {                                           \
  |  |  |  |  180|  1.95k|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|  1.95k|                                                \
  |  |  |  |  182|  1.95k|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|  1.95k|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|  1.95k|    {                                        \
  |  |  |  |  |  |  160|  1.95k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|  1.95k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|  1.95k|{                                                                       \
  |  |  |  |  |  |  |  |  151|  1.95k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|  1.95k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|  3.90k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|  1.95k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|  3.90k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.90k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.95k, False: 1.95k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  1.95k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|  1.95k|    }                                                                   \
  |  |  |  |  |  |  |  |  156|  1.95k|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  1.95k|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|  1.95k|}
  |  |  |  |  ------------------
  |  |  |  |  184|  1.95k|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|  1.95k|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|  1.95k|}
  |  |  ------------------
  ------------------
  807|  1.95k|    miniflow_push_uint32(mf, in_port, odp_to_u32(md->in_port.odp_port));
  ------------------
  |  |  297|  1.95k|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|  1.95k|    {                                           \
  |  |  |  |  180|  1.95k|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|  1.95k|                                                \
  |  |  |  |  182|  1.95k|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|  1.95k|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|  1.95k|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  1.95k|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|  1.95k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|  1.95k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|  1.95k|{                                                                       \
  |  |  |  |  |  |  |  |  151|  1.95k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|  1.95k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|  3.90k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|  1.95k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|  3.90k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.90k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.95k, False: 1.95k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  1.95k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|  1.95k|    }                                                                   \
  |  |  |  |  |  |  |  |  156|  1.95k|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|  1.95k|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|  1.95k|        MF.data++;                              \
  |  |  |  |  189|  1.95k|    }                                           \
  |  |  |  |  190|  1.95k|}
  |  |  ------------------
  ------------------
  808|  1.95k|    if (md->ct_state) {
  ------------------
  |  Branch (808:9): [True: 0, False: 1.95k]
  ------------------
  809|      0|        miniflow_push_uint32(mf, recirc_id, md->recirc_id);
  ------------------
  |  |  297|      0|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|      0|                                                \
  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|      0|}
  |  |  ------------------
  ------------------
  810|      0|        miniflow_push_uint8(mf, ct_state, md->ct_state);
  ------------------
  |  |  309|      0|    miniflow_push_uint8_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  215|      0|#define miniflow_push_uint8_(MF, OFS, VALUE)            \
  |  |  |  |  216|      0|{                                                       \
  |  |  |  |  217|      0|    MINIFLOW_ASSERT(MF.data < MF.end);                  \
  |  |  |  |  218|      0|                                                        \
  |  |  |  |  219|      0|    if ((OFS) % 8 == 0) {                               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (219:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  220|      0|        miniflow_set_map(MF, OFS / 8);                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  221|      0|        *(uint8_t *)MF.data = VALUE;                    \
  |  |  |  |  222|      0|    } else if ((OFS) % 8 == 7) {                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (222:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  223|      0|        miniflow_assert_in_map(MF, OFS / 8);            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  224|      0|        *((uint8_t *)MF.data + 7) = VALUE;              \
  |  |  |  |  225|      0|        MF.data++;                                      \
  |  |  |  |  226|      0|    } else {                                            \
  |  |  |  |  227|      0|        miniflow_assert_in_map(MF, OFS / 8);            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  228|      0|        *((uint8_t *)MF.data + ((OFS) % 8)) = VALUE;    \
  |  |  |  |  229|      0|    }                                                   \
  |  |  |  |  230|      0|}
  |  |  ------------------
  ------------------
  811|      0|        ct_nw_proto_p = miniflow_pointer(mf, ct_nw_proto);
  ------------------
  |  |  329|      0|    (void *)((uint8_t *)MF.data + ((offsetof(struct flow, FIELD)) % 8))
  ------------------
  812|      0|        miniflow_push_uint8(mf, ct_nw_proto, 0);
  ------------------
  |  |  309|      0|    miniflow_push_uint8_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  215|      0|#define miniflow_push_uint8_(MF, OFS, VALUE)            \
  |  |  |  |  216|      0|{                                                       \
  |  |  |  |  217|      0|    MINIFLOW_ASSERT(MF.data < MF.end);                  \
  |  |  |  |  218|      0|                                                        \
  |  |  |  |  219|      0|    if ((OFS) % 8 == 0) {                               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (219:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  220|      0|        miniflow_set_map(MF, OFS / 8);                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  221|      0|        *(uint8_t *)MF.data = VALUE;                    \
  |  |  |  |  222|      0|    } else if ((OFS) % 8 == 7) {                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (222:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  223|      0|        miniflow_assert_in_map(MF, OFS / 8);            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  224|      0|        *((uint8_t *)MF.data + 7) = VALUE;              \
  |  |  |  |  225|      0|        MF.data++;                                      \
  |  |  |  |  226|      0|    } else {                                            \
  |  |  |  |  227|      0|        miniflow_assert_in_map(MF, OFS / 8);            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  228|      0|        *((uint8_t *)MF.data + ((OFS) % 8)) = VALUE;    \
  |  |  |  |  229|      0|    }                                                   \
  |  |  |  |  230|      0|}
  |  |  ------------------
  ------------------
  813|      0|        miniflow_push_uint16(mf, ct_zone, md->ct_zone);
  ------------------
  |  |  303|      0|    miniflow_push_uint16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  195|      0|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  196|      0|{                                               \
  |  |  |  |  197|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  198|      0|                                                \
  |  |  |  |  199|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  202|      0|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  213|      0|}
  |  |  ------------------
  ------------------
  814|      0|        miniflow_push_uint32(mf, ct_mark, md->ct_mark);
  ------------------
  |  |  297|      0|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|      0|                                                \
  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|      0|}
  |  |  ------------------
  ------------------
  815|      0|        miniflow_push_be32(mf, packet_type, packet_type);
  ------------------
  |  |  300|      0|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|      0|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|      0|                                                \
  |  |  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|      0|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  816|      0|        if (!ovs_u128_is_zero(md->ct_label)) {
  ------------------
  |  Branch (816:13): [True: 0, False: 0]
  ------------------
  817|      0|            miniflow_push_words(mf, ct_label, &md->ct_label,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  818|      0|                                sizeof md->ct_label / sizeof(uint64_t));
  819|      0|        }
  820|  1.95k|    } else {
  821|  1.95k|        if (md->recirc_id) {
  ------------------
  |  Branch (821:13): [True: 0, False: 1.95k]
  ------------------
  822|      0|            miniflow_push_uint32(mf, recirc_id, md->recirc_id);
  ------------------
  |  |  297|      0|    miniflow_push_uint32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  179|      0|    {                                           \
  |  |  |  |  180|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  181|      0|                                                \
  |  |  |  |  182|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  185|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  190|      0|}
  |  |  ------------------
  ------------------
  823|      0|            miniflow_pad_to_64(mf, recirc_id);
  ------------------
  |  |  312|      0|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|      0|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|      0|{                                                               \
  |  |  |  |  234|      0|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|      0|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|      0|                                                                \
  |  |  |  |  237|      0|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|      0|    MF.data++;                                                  \
  |  |  |  |  239|      0|}
  |  |  ------------------
  ------------------
  824|      0|        }
  825|  1.95k|        miniflow_pad_from_64(mf, packet_type);
  ------------------
  |  |  315|  1.95k|    miniflow_pad_from_64_(MF, offsetof(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  241|  1.95k|#define miniflow_pad_from_64_(MF, OFS)                          \
  |  |  |  |  242|  1.95k|{                                                               \
  |  |  |  |  243|  1.95k|    MINIFLOW_ASSERT(MF.data < MF.end);                          \
  |  |  |  |  244|  1.95k|                                                                \
  |  |  |  |  245|  1.95k|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  246|  1.95k|    miniflow_set_map(MF, OFS / 8);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|  1.95k|    {                                        \
  |  |  |  |  |  |  160|  1.95k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|  1.95k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|  1.95k|{                                                                       \
  |  |  |  |  |  |  |  |  151|  1.95k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|  1.95k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|  3.90k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|  1.95k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|  3.90k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.90k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.95k, False: 1.95k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  1.95k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|  1.95k|    }                                                                   \
  |  |  |  |  |  |  |  |  156|  1.95k|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  1.95k|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|  1.95k|}
  |  |  |  |  ------------------
  |  |  |  |  247|  1.95k|                                                                \
  |  |  |  |  248|  1.95k|    memset((uint8_t *)MF.data, 0, (OFS) % 8);                   \
  |  |  |  |  249|  1.95k|}
  |  |  ------------------
  ------------------
  826|  1.95k|        miniflow_push_be32(mf, packet_type, packet_type);
  ------------------
  |  |  300|  1.95k|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|  1.95k|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|  1.95k|    {                                           \
  |  |  |  |  |  |  180|  1.95k|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|  1.95k|                                                \
  |  |  |  |  |  |  182|  1.95k|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|  1.95k|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|  1.95k|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  1.95k|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|  1.95k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|  1.95k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|  1.95k|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|  1.95k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|  1.95k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|  3.90k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|  1.95k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|  3.90k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.90k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.95k, False: 1.95k]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|  1.95k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|  1.95k|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|  1.95k|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|  1.95k|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|  1.95k|        MF.data++;                              \
  |  |  |  |  |  |  189|  1.95k|    }                                           \
  |  |  |  |  |  |  190|  1.95k|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  827|  1.95k|    }
  828|       |
  829|       |    /* Initialize packet's layer pointer and offsets. */
  830|  1.95k|    frame = data;
  831|  1.95k|    dp_packet_reset_offsets(packet);
  832|       |
  833|  1.95k|    if (packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (833:9): [True: 1.95k, False: 0]
  ------------------
  834|       |        /* Must have full Ethernet header to proceed. */
  835|  1.95k|        if (OVS_UNLIKELY(size < sizeof(struct eth_header))) {
  ------------------
  |  |   46|  1.95k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 29, False: 1.92k]
  |  |  ------------------
  ------------------
  836|     29|            goto out;
  837|  1.92k|        } else {
  838|       |            /* Link layer. */
  839|  1.92k|            ASSERT_SEQUENTIAL(dl_dst, dl_src);
  ------------------
  |  |   71|  1.92k|    BUILD_ASSERT_DECL(offsetof(struct flow, f0)         \
  |  |  ------------------
  |  |  |  |  269|  1.92k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  |  |  ------------------
  |  |   72|  1.92k|                      + MEMBER_SIZEOF(struct flow, f0)  \
  |  |   73|  1.92k|                      == offsetof(struct flow, f1))
  ------------------
  840|  1.92k|            miniflow_push_macs(mf, dl_dst, data);
  ------------------
  |  |  324|  1.92k|    miniflow_push_macs_(MF, offsetof(struct flow, FIELD), VALUEP)
  |  |  ------------------
  |  |  |  |  289|  1.92k|#define miniflow_push_macs_(MF, OFS, VALUEP)                    \
  |  |  |  |  290|  1.92k|{                                                               \
  |  |  |  |  291|  1.92k|    miniflow_set_maps(MF, (OFS) / 8, 2);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|  1.92k|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|  1.92k|{                                                               \
  |  |  |  |  |  |  259|  1.92k|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|  1.92k|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|  1.92k|                                                                \
  |  |  |  |  |  |  262|  1.92k|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|  1.92k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|  1.92k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|  1.92k|{                                                                       \
  |  |  |  |  |  |  |  |  151|  1.92k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|  1.92k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|  3.84k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|  1.92k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|  3.84k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.84k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.92k, False: 1.92k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  1.92k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|  1.92k|    }                                                                   \
  |  |  |  |  |  |  |  |  156|  1.92k|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|  1.92k|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|  1.92k|}
  |  |  |  |  ------------------
  |  |  |  |  292|  1.92k|    memcpy(MF.data, (VALUEP), 2 * ETH_ADDR_LEN);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  1.92k|#define ETH_ADDR_LEN           6
  |  |  |  |  ------------------
  |  |  |  |  293|  1.92k|    MF.data += 1;                   /* First word only. */      \
  |  |  |  |  294|  1.92k|}
  |  |  ------------------
  ------------------
  841|       |
  842|       |            /* VLAN */
  843|  1.92k|            union flow_vlan_hdr vlans[FLOW_MAX_VLAN_HEADERS];
  844|  1.92k|            size_t num_vlans = parse_vlan(&data, &size, vlans);
  845|       |
  846|  1.92k|            dl_type = parse_ethertype(&data, &size);
  847|  1.92k|            miniflow_push_be16(mf, dl_type, dl_type);
  ------------------
  |  |  306|  1.92k|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|  1.92k|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|  1.92k|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|  1.92k|{                                               \
  |  |  |  |  |  |  197|  1.92k|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|  1.92k|                                                \
  |  |  |  |  |  |  199|  1.92k|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|  1.92k|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|  1.92k|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|  1.92k|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  1.92k|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|  1.92k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|  1.92k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|  1.92k|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|  1.92k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|  1.92k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|  3.84k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|  1.92k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|  3.84k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.84k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.92k, False: 1.92k]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|  1.92k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|  1.92k|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|  1.92k|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|  1.92k|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|  1.92k|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|  1.92k|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  848|  1.92k|            miniflow_pad_to_64(mf, dl_type);
  ------------------
  |  |  312|  1.92k|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|  1.92k|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|  1.92k|{                                                               \
  |  |  |  |  234|  1.92k|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|  1.92k|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  1.92k|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|  1.92k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|  1.92k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|  1.92k|{                                                                       \
  |  |  |  |  |  |  |  |  151|  1.92k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|  1.92k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|  3.84k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|  1.92k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|  3.84k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|  3.84k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 1.92k, False: 1.92k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  1.92k|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|  1.92k|    }                                                                   \
  |  |  |  |  |  |  |  |  156|  1.92k|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|  1.92k|                                                                \
  |  |  |  |  237|  1.92k|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|  1.92k|    MF.data++;                                                  \
  |  |  |  |  239|  1.92k|}
  |  |  ------------------
  ------------------
  849|  1.92k|            if (num_vlans > 0) {
  ------------------
  |  Branch (849:17): [True: 29, False: 1.89k]
  ------------------
  850|     29|                miniflow_push_words_32(mf, vlans, vlans, num_vlans);
  ------------------
  |  |  321|     29|    miniflow_push_words_32_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  277|     29|#define miniflow_push_words_32_(MF, OFS, VALUEP, N_WORDS)               \
  |  |  |  |  278|     29|{                                                                       \
  |  |  |  |  279|     29|    miniflow_set_maps(MF, (OFS) / 8, DIV_ROUND_UP(N_WORDS, 2));         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|     29|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|     29|{                                                               \
  |  |  |  |  |  |  259|     29|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|     29|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|     29|                                                                \
  |  |  |  |  |  |  262|     29|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|     29|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     29|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     29|{                                                                       \
  |  |  |  |  |  |  |  |  151|     29|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     29|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|     58|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     29|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|     58|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|     58|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 29, False: 29]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     29|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|     29|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     29|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|     29|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|     29|}
  |  |  |  |  ------------------
  |  |  |  |  280|     29|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof(uint32_t));            \
  |  |  |  |  281|     29|    MF.data += DIV_ROUND_UP(N_WORDS, 2);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|     29|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  |  |  282|     29|    if ((N_WORDS) & 1) {                                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:9): [True: 26, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  283|     26|        *((uint32_t *)MF.data - 1) = 0;                                 \
  |  |  |  |  284|     26|    }                                                                   \
  |  |  |  |  285|     29|}
  |  |  ------------------
  ------------------
  851|     29|            }
  852|       |
  853|  1.92k|        }
  854|  1.95k|    } else {
  855|       |        /* Take dl_type from packet_type. */
  856|      0|        dl_type = pt_ns_type_be(packet_type);
  857|      0|        miniflow_pad_from_64(mf, dl_type);
  ------------------
  |  |  315|      0|    miniflow_pad_from_64_(MF, offsetof(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  241|      0|#define miniflow_pad_from_64_(MF, OFS)                          \
  |  |  |  |  242|      0|{                                                               \
  |  |  |  |  243|      0|    MINIFLOW_ASSERT(MF.data < MF.end);                          \
  |  |  |  |  244|      0|                                                                \
  |  |  |  |  245|      0|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  246|      0|    miniflow_set_map(MF, OFS / 8);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  162|      0|}
  |  |  |  |  ------------------
  |  |  |  |  247|      0|                                                                \
  |  |  |  |  248|      0|    memset((uint8_t *)MF.data, 0, (OFS) % 8);                   \
  |  |  |  |  249|      0|}
  |  |  ------------------
  ------------------
  858|      0|        miniflow_push_be16(mf, dl_type, dl_type);
  ------------------
  |  |  306|      0|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|      0|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|      0|{                                               \
  |  |  |  |  |  |  197|      0|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|      0|                                                \
  |  |  |  |  |  |  199|      0|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|      0|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|      0|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  859|       |        /* Do not push vlan_tci, pad instead */
  860|      0|        miniflow_pad_to_64(mf, dl_type);
  ------------------
  |  |  312|      0|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|      0|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|      0|{                                                               \
  |  |  |  |  234|      0|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|      0|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|      0|                                                                \
  |  |  |  |  237|      0|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|      0|    MF.data++;                                                  \
  |  |  |  |  239|      0|}
  |  |  ------------------
  ------------------
  861|      0|    }
  862|       |
  863|       |    /* Parse mpls. */
  864|  1.92k|    if (OVS_UNLIKELY(eth_type_mpls(dl_type))) {
  ------------------
  |  |   46|  1.92k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 53, False: 1.86k]
  |  |  ------------------
  ------------------
  865|     53|        int count;
  866|     53|        const void *mpls = data;
  867|       |
  868|     53|        packet->l2_5_ofs = (char *)data - frame;
  869|     53|        count = parse_mpls(&data, &size);
  870|     53|        miniflow_push_words_32(mf, mpls_lse, mpls, count);
  ------------------
  |  |  321|     53|    miniflow_push_words_32_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  277|     53|#define miniflow_push_words_32_(MF, OFS, VALUEP, N_WORDS)               \
  |  |  |  |  278|     53|{                                                                       \
  |  |  |  |  279|     53|    miniflow_set_maps(MF, (OFS) / 8, DIV_ROUND_UP(N_WORDS, 2));         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|     53|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|     53|{                                                               \
  |  |  |  |  |  |  259|     53|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|     53|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|     53|                                                                \
  |  |  |  |  |  |  262|     53|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|     53|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     53|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     53|{                                                                       \
  |  |  |  |  |  |  |  |  151|     53|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     53|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    106|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     53|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    106|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    106|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 53, False: 53]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     53|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|     53|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     53|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|     53|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|     53|}
  |  |  |  |  ------------------
  |  |  |  |  280|     53|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof(uint32_t));            \
  |  |  |  |  281|     53|    MF.data += DIV_ROUND_UP(N_WORDS, 2);                                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|     53|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  |  |  282|     53|    if ((N_WORDS) & 1) {                                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (282:9): [True: 45, False: 8]
  |  |  |  |  ------------------
  |  |  |  |  283|     45|        *((uint32_t *)MF.data - 1) = 0;                                 \
  |  |  |  |  284|     45|    }                                                                   \
  |  |  |  |  285|     53|}
  |  |  ------------------
  ------------------
  871|     53|    }
  872|       |
  873|       |    /* Network layer. */
  874|  1.92k|    packet->l3_ofs = (char *)data - frame;
  875|       |
  876|  1.92k|    nw_frag = 0;
  877|  1.92k|    if (OVS_LIKELY(dl_type == htons(ETH_TYPE_IP))) {
  ------------------
  |  |   45|  1.92k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 714, False: 1.20k]
  |  |  ------------------
  ------------------
  878|    714|        const struct ip_header *nh = data;
  879|    714|        int ip_len;
  880|    714|        uint16_t tot_len;
  881|       |
  882|    714|        if (OVS_UNLIKELY(!ipv4_sanity_check(nh, size, &ip_len, &tot_len))) {
  ------------------
  |  |   46|    714|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 87, False: 627]
  |  |  ------------------
  ------------------
  883|     87|            if (OVS_UNLIKELY(VLOG_IS_DBG_ENABLED())) {
  ------------------
  |  |   46|     87|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 87]
  |  |  ------------------
  ------------------
  884|      0|                dump_invalid_packet(packet, "ipv4_sanity_check");
  885|      0|            }
  886|     87|            goto out;
  887|     87|        }
  888|    627|        dp_packet_set_l2_pad_size(packet, size - tot_len);
  889|    627|        size = tot_len;   /* Never pull padding. */
  890|       |
  891|       |        /* Push both source and destination address at once. */
  892|    627|        miniflow_push_words(mf, nw_src, &nh->ip_src, 1);
  ------------------
  |  |  318|    627|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|    627|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|    627|{                                                               \
  |  |  |  |  270|    627|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|    627|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|    627|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|    627|{                                                               \
  |  |  |  |  |  |  259|    627|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|    627|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|    627|                                                                \
  |  |  |  |  |  |  262|    627|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|    627|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    627|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    627|{                                                                       \
  |  |  |  |  |  |  |  |  151|    627|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    627|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    627|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    627|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    627|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    627|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 627]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    627|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|    627|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|    627|}
  |  |  |  |  ------------------
  |  |  |  |  272|    627|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|    627|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|    627|}
  |  |  ------------------
  ------------------
  893|    627|        if (ct_nw_proto_p && !md->ct_orig_tuple_ipv6) {
  ------------------
  |  Branch (893:13): [True: 0, False: 627]
  |  Branch (893:30): [True: 0, False: 0]
  ------------------
  894|      0|            *ct_nw_proto_p = md->ct_orig_tuple.ipv4.ipv4_proto;
  895|      0|            if (*ct_nw_proto_p) {
  ------------------
  |  Branch (895:17): [True: 0, False: 0]
  ------------------
  896|      0|                miniflow_push_words(mf, ct_nw_src,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  897|      0|                                    &md->ct_orig_tuple.ipv4.ipv4_src, 1);
  898|      0|                ct_tp_src = md->ct_orig_tuple.ipv4.src_port;
  899|      0|                ct_tp_dst = md->ct_orig_tuple.ipv4.dst_port;
  900|      0|            }
  901|      0|        }
  902|       |
  903|    627|        miniflow_push_be32(mf, ipv6_label, 0); /* Padding for IPv4. */
  ------------------
  |  |  300|    627|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|    627|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|    627|    {                                           \
  |  |  |  |  |  |  180|    627|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|    627|                                                \
  |  |  |  |  |  |  182|    627|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|    627|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    627|    {                                        \
  |  |  |  |  |  |  |  |  160|    627|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    627|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    627|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    627|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    627|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    627|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    627|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    627|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    627|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 627]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    627|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    627|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    627|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|    627|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|    627|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|    627|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|       |
  905|    627|        nw_tos = nh->ip_tos;
  906|    627|        nw_ttl = nh->ip_ttl;
  907|    627|        nw_proto = nh->ip_proto;
  908|    627|        nw_frag = ipv4_get_nw_frag(nh);
  909|    627|        data_pull(&data, &size, ip_len);
  910|  1.20k|    } else if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (910:16): [True: 683, False: 525]
  ------------------
  911|    683|        const struct ovs_16aligned_ip6_hdr *nh = data;
  912|    683|        ovs_be32 tc_flow;
  913|    683|        uint16_t plen;
  914|       |
  915|    683|        if (OVS_UNLIKELY(!ipv6_sanity_check(nh, size))) {
  ------------------
  |  |   46|    683|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 52, False: 631]
  |  |  ------------------
  ------------------
  916|     52|            if (OVS_UNLIKELY(VLOG_IS_DBG_ENABLED())) {
  ------------------
  |  |   46|     52|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 52]
  |  |  ------------------
  ------------------
  917|      0|                dump_invalid_packet(packet, "ipv6_sanity_check");
  918|      0|            }
  919|     52|            goto out;
  920|     52|        }
  921|    631|        data_pull(&data, &size, sizeof *nh);
  922|       |
  923|    631|        plen = ntohs(nh->ip6_plen);
  924|    631|        dp_packet_set_l2_pad_size(packet, size - plen);
  925|    631|        size = plen;   /* Never pull padding. */
  926|       |
  927|    631|        miniflow_push_words(mf, ipv6_src, &nh->ip6_src,
  ------------------
  |  |  318|    631|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|    631|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|    631|{                                                               \
  |  |  |  |  270|    631|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|    631|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|    631|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|    631|{                                                               \
  |  |  |  |  |  |  259|    631|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|    631|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|    631|                                                                \
  |  |  |  |  |  |  262|    631|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|    631|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    631|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    631|{                                                                       \
  |  |  |  |  |  |  |  |  151|    631|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    631|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    631|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    631|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    631|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    631|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 631]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    631|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|    631|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|    631|}
  |  |  |  |  ------------------
  |  |  |  |  272|    631|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|    631|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|    631|}
  |  |  ------------------
  ------------------
  928|    631|                            sizeof nh->ip6_src / 8);
  929|    631|        miniflow_push_words(mf, ipv6_dst, &nh->ip6_dst,
  ------------------
  |  |  318|    631|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|    631|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|    631|{                                                               \
  |  |  |  |  270|    631|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|    631|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|    631|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|    631|{                                                               \
  |  |  |  |  |  |  259|    631|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|    631|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|    631|                                                                \
  |  |  |  |  |  |  262|    631|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|    631|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    631|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    631|{                                                                       \
  |  |  |  |  |  |  |  |  151|    631|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    631|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    631|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    631|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    631|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    631|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 631]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    631|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|    631|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|    631|}
  |  |  |  |  ------------------
  |  |  |  |  272|    631|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|    631|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|    631|}
  |  |  ------------------
  ------------------
  930|    631|                            sizeof nh->ip6_dst / 8);
  931|    631|        if (ct_nw_proto_p && md->ct_orig_tuple_ipv6) {
  ------------------
  |  Branch (931:13): [True: 0, False: 631]
  |  Branch (931:30): [True: 0, False: 0]
  ------------------
  932|      0|            *ct_nw_proto_p = md->ct_orig_tuple.ipv6.ipv6_proto;
  933|      0|            if (*ct_nw_proto_p) {
  ------------------
  |  Branch (933:17): [True: 0, False: 0]
  ------------------
  934|      0|                miniflow_push_words(mf, ct_ipv6_src,
  ------------------
  |  |  318|      0|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|      0|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|      0|{                                                               \
  |  |  |  |  270|      0|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|      0|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      0|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      0|{                                                               \
  |  |  |  |  |  |  259|      0|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      0|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      0|                                                                \
  |  |  |  |  |  |  262|      0|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      0|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      0|}
  |  |  |  |  ------------------
  |  |  |  |  272|      0|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|      0|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|      0|}
  |  |  ------------------
  ------------------
  935|      0|                                    &md->ct_orig_tuple.ipv6.ipv6_src,
  936|      0|                                    2 *
  937|      0|                                    sizeof md->ct_orig_tuple.ipv6.ipv6_src / 8);
  938|      0|                ct_tp_src = md->ct_orig_tuple.ipv6.src_port;
  939|      0|                ct_tp_dst = md->ct_orig_tuple.ipv6.dst_port;
  940|      0|            }
  941|      0|        }
  942|       |
  943|    631|        tc_flow = get_16aligned_be32(&nh->ip6_flow);
  944|    631|        nw_tos = ntohl(tc_flow) >> 20;
  945|    631|        nw_ttl = nh->ip6_hlim;
  946|    631|        nw_proto = nh->ip6_nxt;
  947|       |
  948|    631|        const struct ovs_16aligned_ip6_frag *frag_hdr;
  949|    631|        if (!parse_ipv6_ext_hdrs__(&data, &size, &nw_proto, &nw_frag,
  ------------------
  |  Branch (949:13): [True: 115, False: 516]
  ------------------
  950|    631|                                   &frag_hdr)) {
  951|    115|            goto out;
  952|    115|        }
  953|       |
  954|       |        /* This needs to be after the parse_ipv6_ext_hdrs__() call because it
  955|       |         * leaves the nw_frag word uninitialized. */
  956|    516|        ASSERT_SEQUENTIAL(ipv6_label, nw_frag);
  ------------------
  |  |   71|    516|    BUILD_ASSERT_DECL(offsetof(struct flow, f0)         \
  |  |  ------------------
  |  |  |  |  269|    516|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  |  |  ------------------
  |  |   72|    516|                      + MEMBER_SIZEOF(struct flow, f0)  \
  |  |   73|    516|                      == offsetof(struct flow, f1))
  ------------------
  957|    516|        ovs_be32 label = tc_flow & htonl(IPV6_LABEL_MASK);
  958|    516|        miniflow_push_be32(mf, ipv6_label, label);
  ------------------
  |  |  300|    516|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|    516|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|    516|    {                                           \
  |  |  |  |  |  |  180|    516|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|    516|                                                \
  |  |  |  |  |  |  182|    516|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|    516|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    516|    {                                        \
  |  |  |  |  |  |  |  |  160|    516|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    516|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    516|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    516|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    516|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    516|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    516|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    516|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    516|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 516]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    516|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    516|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    516|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|    516|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|    516|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|    516|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  959|    525|    } else {
  960|    525|        if (dl_type == htons(ETH_TYPE_ARP) ||
  ------------------
  |  Branch (960:13): [True: 71, False: 454]
  ------------------
  961|    525|            dl_type == htons(ETH_TYPE_RARP)) {
  ------------------
  |  Branch (961:13): [True: 13, False: 441]
  ------------------
  962|     84|            struct eth_addr arp_buf[2];
  963|     84|            const struct arp_eth_header *arp = (const struct arp_eth_header *)
  964|     84|                data_try_pull(&data, &size, ARP_ETH_HEADER_LEN);
  ------------------
  |  |  940|     84|#define ARP_ETH_HEADER_LEN 28
  ------------------
  965|       |
  966|     84|            if (OVS_LIKELY(arp) && OVS_LIKELY(arp->ar_hrd == htons(1))
  ------------------
  |  |   45|    168|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 73, False: 11]
  |  |  ------------------
  ------------------
                          if (OVS_LIKELY(arp) && OVS_LIKELY(arp->ar_hrd == htons(1))
  ------------------
  |  |   45|    157|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 44, False: 29]
  |  |  ------------------
  ------------------
  967|     84|                && OVS_LIKELY(arp->ar_pro == htons(ETH_TYPE_IP))
  ------------------
  |  |   45|    128|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 28, False: 16]
  |  |  ------------------
  ------------------
  968|     84|                && OVS_LIKELY(arp->ar_hln == ETH_ADDR_LEN)
  ------------------
  |  |   45|    112|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 14, False: 14]
  |  |  ------------------
  ------------------
  969|     84|                && OVS_LIKELY(arp->ar_pln == 4)) {
  ------------------
  |  |   45|     14|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 9, False: 5]
  |  |  ------------------
  ------------------
  970|      9|                miniflow_push_be32(mf, nw_src,
  ------------------
  |  |  300|      9|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|      9|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      9|    {                                           \
  |  |  |  |  |  |  180|      9|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|      9|                                                \
  |  |  |  |  |  |  182|      9|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      9|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      9|    {                                        \
  |  |  |  |  |  |  |  |  160|      9|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      9|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      9|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      9|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      9|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      9|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      9|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      9|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      9|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      9|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      9|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      9|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      9|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|      9|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|      9|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  971|      9|                                   get_16aligned_be32(&arp->ar_spa));
  972|      9|                miniflow_push_be32(mf, nw_dst,
  ------------------
  |  |  300|      9|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|      9|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      9|    {                                           \
  |  |  |  |  |  |  180|      9|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|      9|                                                \
  |  |  |  |  |  |  182|      9|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|      9|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      9|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      9|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      9|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      9|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      9|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      9|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      9|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      9|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      9|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      9|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      9|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      9|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      9|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      9|        MF.data++;                              \
  |  |  |  |  |  |  189|      9|    }                                           \
  |  |  |  |  |  |  190|      9|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  973|      9|                                   get_16aligned_be32(&arp->ar_tpa));
  974|       |
  975|       |                /* We only match on the lower 8 bits of the opcode. */
  976|      9|                if (OVS_LIKELY(ntohs(arp->ar_op) <= 0xff)) {
  ------------------
  |  |   45|      9|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 1, False: 8]
  |  |  ------------------
  ------------------
  977|      1|                    miniflow_push_be32(mf, ipv6_label, 0); /* Pad with ARP. */
  ------------------
  |  |  300|      1|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|      1|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|    {                                           \
  |  |  |  |  |  |  180|      1|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|      1|                                                \
  |  |  |  |  |  |  182|      1|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      1|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      1|    {                                        \
  |  |  |  |  |  |  |  |  160|      1|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      1|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      1|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      1|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      1|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      1|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      1|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      1|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      1|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      1|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      1|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      1|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      1|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|      1|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|      1|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  978|      1|                    miniflow_push_be32(mf, nw_frag, htonl(ntohs(arp->ar_op)));
  ------------------
  |  |  300|      1|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|      1|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|    {                                           \
  |  |  |  |  |  |  180|      1|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|      1|                                                \
  |  |  |  |  |  |  182|      1|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|      1|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      1|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      1|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      1|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      1|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      1|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      1|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      1|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      1|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      1|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      1|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      1|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      1|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      1|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      1|        MF.data++;                              \
  |  |  |  |  |  |  189|      1|    }                                           \
  |  |  |  |  |  |  190|      1|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  979|      1|                }
  980|       |
  981|       |                /* Must be adjacent. */
  982|      9|                ASSERT_SEQUENTIAL(arp_sha, arp_tha);
  ------------------
  |  |   71|      9|    BUILD_ASSERT_DECL(offsetof(struct flow, f0)         \
  |  |  ------------------
  |  |  |  |  269|      9|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  |  |  ------------------
  |  |   72|      9|                      + MEMBER_SIZEOF(struct flow, f0)  \
  |  |   73|      9|                      == offsetof(struct flow, f1))
  ------------------
  983|       |
  984|      9|                arp_buf[0] = arp->ar_sha;
  985|      9|                arp_buf[1] = arp->ar_tha;
  986|      9|                miniflow_push_macs(mf, arp_sha, arp_buf);
  ------------------
  |  |  324|      9|    miniflow_push_macs_(MF, offsetof(struct flow, FIELD), VALUEP)
  |  |  ------------------
  |  |  |  |  289|      9|#define miniflow_push_macs_(MF, OFS, VALUEP)                    \
  |  |  |  |  290|      9|{                                                               \
  |  |  |  |  291|      9|    miniflow_set_maps(MF, (OFS) / 8, 2);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|      9|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|      9|{                                                               \
  |  |  |  |  |  |  259|      9|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|      9|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|      9|                                                                \
  |  |  |  |  |  |  262|      9|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|      9|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      9|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      9|{                                                                       \
  |  |  |  |  |  |  |  |  151|      9|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      9|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      9|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      9|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      9|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      9|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      9|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|      9|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|      9|}
  |  |  |  |  ------------------
  |  |  |  |  292|      9|    memcpy(MF.data, (VALUEP), 2 * ETH_ADDR_LEN);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|      9|#define ETH_ADDR_LEN           6
  |  |  |  |  ------------------
  |  |  |  |  293|      9|    MF.data += 1;                   /* First word only. */      \
  |  |  |  |  294|      9|}
  |  |  ------------------
  ------------------
  987|      9|                miniflow_pad_to_64(mf, arp_tha);
  ------------------
  |  |  312|      9|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|      9|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|      9|{                                                               \
  |  |  |  |  234|      9|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|      9|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      9|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|      9|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|      9|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|      9|{                                                                       \
  |  |  |  |  |  |  |  |  151|      9|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|      9|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|      9|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|      9|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|      9|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|      9|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|      9|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|      9|                                                                \
  |  |  |  |  237|      9|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|      9|    MF.data++;                                                  \
  |  |  |  |  239|      9|}
  |  |  ------------------
  ------------------
  988|      9|            }
  989|    441|        } else if (dl_type == htons(ETH_TYPE_NSH)) {
  ------------------
  |  Branch (989:20): [True: 89, False: 352]
  ------------------
  990|     89|            struct ovs_key_nsh nsh;
  991|       |
  992|     89|            if (OVS_LIKELY(parse_nsh(&data, &size, &nsh))) {
  ------------------
  |  |   45|     89|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 32, False: 57]
  |  |  ------------------
  ------------------
  993|     32|                miniflow_push_words(mf, nsh, &nsh,
  ------------------
  |  |  318|     32|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|     32|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|     32|{                                                               \
  |  |  |  |  270|     32|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|     32|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|     32|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|     32|{                                                               \
  |  |  |  |  |  |  259|     32|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|     32|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|     32|                                                                \
  |  |  |  |  |  |  262|     32|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|     32|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     32|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     32|{                                                                       \
  |  |  |  |  |  |  |  |  151|     32|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     32|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|     32|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     32|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|     32|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|     32|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 32]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     32|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|     32|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|     32|}
  |  |  |  |  ------------------
  |  |  |  |  272|     32|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|     32|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|     32|}
  |  |  ------------------
  ------------------
  994|     32|                                    sizeof(struct ovs_key_nsh) /
  995|     32|                                    sizeof(uint64_t));
  996|     32|            }
  997|     89|        }
  998|    525|        goto out;
  999|    525|    }
 1000|       |
 1001|  1.14k|    packet->l4_ofs = (char *)data - frame;
 1002|  1.14k|    miniflow_push_be32(mf, nw_frag,
  ------------------
  |  |  300|  1.14k|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|  1.14k|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|  1.14k|    {                                           \
  |  |  |  |  |  |  180|  1.14k|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|  1.14k|                                                \
  |  |  |  |  |  |  182|  1.14k|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|  1.14k|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|  1.14k|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  1.14k|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|  1.14k|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|  1.14k|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|  1.14k|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|  1.14k|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|  1.14k|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|  1.14k|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|  1.14k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|  1.14k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|  1.14k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 1.14k]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|  1.14k|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|  1.14k|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|  1.14k|        MF.data++;                              \
  |  |  |  |  |  |  189|  1.14k|    }                                           \
  |  |  |  |  |  |  190|  1.14k|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1003|  1.14k|                       bytes_to_be32(nw_frag, nw_tos, nw_ttl, nw_proto));
 1004|       |
 1005|  1.14k|    if (OVS_LIKELY(!(nw_frag & FLOW_NW_FRAG_LATER))) {
  ------------------
  |  |   45|  1.14k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 1.00k, False: 135]
  |  |  ------------------
  ------------------
 1006|  1.00k|        if (OVS_LIKELY(nw_proto == IPPROTO_TCP)) {
  ------------------
  |  |   45|  1.00k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 329, False: 679]
  |  |  ------------------
  ------------------
 1007|    329|            if (OVS_LIKELY(size >= TCP_HEADER_LEN)) {
  ------------------
  |  |   45|    329|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 313, False: 16]
  |  |  ------------------
  ------------------
 1008|    313|                const struct tcp_header *tcp = data;
 1009|    313|                size_t tcp_hdr_len = TCP_OFFSET(tcp->tcp_ctl) * 4;
  ------------------
  |  |  889|    313|#define TCP_OFFSET(tcp_ctl) (ntohs(tcp_ctl) >> 12)
  ------------------
 1010|       |
 1011|    313|                if (OVS_LIKELY(tcp_hdr_len >= TCP_HEADER_LEN)
  ------------------
  |  |   45|    626|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 307, False: 6]
  |  |  ------------------
  ------------------
 1012|    313|                    && OVS_LIKELY(size >= tcp_hdr_len)) {
  ------------------
  |  |   45|    307|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 300, False: 7]
  |  |  ------------------
  ------------------
 1013|    300|                    miniflow_push_be32(mf, arp_tha.ea[2], 0);
  ------------------
  |  |  300|    300|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|    300|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|    300|    {                                           \
  |  |  |  |  |  |  180|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|    300|                                                \
  |  |  |  |  |  |  182|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|    300|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    300|    {                                        \
  |  |  |  |  |  |  |  |  160|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    300|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    300|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|    300|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|    300|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1014|    300|                    miniflow_push_be32(mf, tcp_flags,
  ------------------
  |  |  300|    300|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|    300|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|    300|    {                                           \
  |  |  |  |  |  |  180|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|    300|                                                \
  |  |  |  |  |  |  182|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|      0|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|    300|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|    300|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    300|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|    300|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|    300|        MF.data++;                              \
  |  |  |  |  |  |  189|    300|    }                                           \
  |  |  |  |  |  |  190|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1015|    300|                                       TCP_FLAGS_BE32(tcp->tcp_ctl));
 1016|    300|                    miniflow_push_be16(mf, tp_src, tcp->tcp_src);
  ------------------
  |  |  306|    300|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    300|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    300|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    300|{                                               \
  |  |  |  |  |  |  197|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    300|                                                \
  |  |  |  |  |  |  199|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|    300|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    300|    {                                        \
  |  |  |  |  |  |  |  |  160|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    300|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    300|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|    300|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    300|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1017|    300|                    miniflow_push_be16(mf, tp_dst, tcp->tcp_dst);
  ------------------
  |  |  306|    300|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    300|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    300|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    300|{                                               \
  |  |  |  |  |  |  197|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    300|                                                \
  |  |  |  |  |  |  199|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    300|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|    300|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    300|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|    300|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    300|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1018|    300|                    miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|    300|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    300|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    300|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    300|{                                               \
  |  |  |  |  |  |  197|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    300|                                                \
  |  |  |  |  |  |  199|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    300|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    300|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    300|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    300|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|    300|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|    300|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1019|    300|                    miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|    300|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    300|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    300|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    300|{                                               \
  |  |  |  |  |  |  197|    300|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    300|                                                \
  |  |  |  |  |  |  199|    300|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    300|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    300|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|    300|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|    300|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    300|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    300|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    300|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    300|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    300|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    300|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    300|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    300|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    300|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    300|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 300]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    300|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    300|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|    300|        MF.data++;                              \
  |  |  |  |  |  |  212|    300|    }                                           \
  |  |  |  |  |  |  213|    300|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1020|    300|                    if (dl_type == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (1020:25): [True: 123, False: 177]
  ------------------
 1021|    123|                        dp_packet_update_rss_hash_ipv4_tcp_udp(packet);
 1022|    177|                    } else if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1022:32): [True: 177, False: 0]
  ------------------
 1023|    177|                        dp_packet_update_rss_hash_ipv6_tcp_udp(packet);
 1024|    177|                    }
 1025|    300|                }
 1026|    313|            }
 1027|    679|        } else if (OVS_LIKELY(nw_proto == IPPROTO_UDP)) {
  ------------------
  |  |   45|    679|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 289, False: 390]
  |  |  ------------------
  ------------------
 1028|    289|            if (OVS_LIKELY(size >= UDP_HEADER_LEN)) {
  ------------------
  |  |   45|    289|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 278, False: 11]
  |  |  ------------------
  ------------------
 1029|    278|                const struct udp_header *udp = data;
 1030|       |
 1031|    278|                miniflow_push_be16(mf, tp_src, udp->udp_src);
  ------------------
  |  |  306|    278|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    278|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    278|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    278|{                                               \
  |  |  |  |  |  |  197|    278|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    278|                                                \
  |  |  |  |  |  |  199|    278|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|    278|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    278|    {                                        \
  |  |  |  |  |  |  |  |  160|    278|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    278|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    278|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    278|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    278|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    278|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    278|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    278|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    278|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 278]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    278|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    278|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    278|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|    278|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    278|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    278|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|    278|                miniflow_push_be16(mf, tp_dst, udp->udp_dst);
  ------------------
  |  |  306|    278|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    278|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    278|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    278|{                                               \
  |  |  |  |  |  |  197|    278|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    278|                                                \
  |  |  |  |  |  |  199|    278|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    278|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|    278|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    278|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    278|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    278|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    278|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    278|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    278|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    278|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    278|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    278|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    278|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 278]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    278|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|    278|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    278|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    278|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1033|    278|                miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|    278|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    278|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    278|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    278|{                                               \
  |  |  |  |  |  |  197|    278|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    278|                                                \
  |  |  |  |  |  |  199|    278|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    278|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    278|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    278|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    278|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    278|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    278|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    278|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    278|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    278|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    278|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    278|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    278|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    278|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 278]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    278|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|    278|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|    278|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    278|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1034|    278|                miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|    278|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    278|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    278|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    278|{                                               \
  |  |  |  |  |  |  197|    278|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    278|                                                \
  |  |  |  |  |  |  199|    278|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    278|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    278|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|    278|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|    278|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    278|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    278|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    278|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    278|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    278|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    278|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    278|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    278|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    278|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    278|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 278]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    278|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    278|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|    278|        MF.data++;                              \
  |  |  |  |  |  |  212|    278|    }                                           \
  |  |  |  |  |  |  213|    278|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1035|    278|                if (dl_type == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (1035:21): [True: 92, False: 186]
  ------------------
 1036|     92|                    dp_packet_update_rss_hash_ipv4_tcp_udp(packet);
 1037|    186|                } else if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1037:28): [True: 186, False: 0]
  ------------------
 1038|    186|                    dp_packet_update_rss_hash_ipv6_tcp_udp(packet);
 1039|    186|                }
 1040|    278|            }
 1041|    390|        } else if (OVS_LIKELY(nw_proto == IPPROTO_SCTP)) {
  ------------------
  |  |   45|    390|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 18, False: 372]
  |  |  ------------------
  ------------------
 1042|     18|            if (OVS_LIKELY(size >= SCTP_HEADER_LEN)) {
  ------------------
  |  |   45|     18|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 14, False: 4]
  |  |  ------------------
  ------------------
 1043|     14|                const struct sctp_header *sctp = data;
 1044|       |
 1045|     14|                miniflow_push_be16(mf, tp_src, sctp->sctp_src);
  ------------------
  |  |  306|     14|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     14|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     14|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     14|{                                               \
  |  |  |  |  |  |  197|     14|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     14|                                                \
  |  |  |  |  |  |  199|     14|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|     14|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|     14|    {                                        \
  |  |  |  |  |  |  |  |  160|     14|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     14|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     14|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     14|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     14|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     14|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     14|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     14|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     14|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     14|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|     14|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|     14|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|     14|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     14|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     14|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1046|     14|                miniflow_push_be16(mf, tp_dst, sctp->sctp_dst);
  ------------------
  |  |  306|     14|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     14|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     14|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     14|{                                               \
  |  |  |  |  |  |  197|     14|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     14|                                                \
  |  |  |  |  |  |  199|     14|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     14|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|     14|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     14|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     14|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     14|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     14|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     14|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     14|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     14|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     14|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     14|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     14|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     14|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|     14|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     14|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     14|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1047|     14|                miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|     14|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     14|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     14|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     14|{                                               \
  |  |  |  |  |  |  197|     14|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     14|                                                \
  |  |  |  |  |  |  199|     14|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     14|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     14|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|     14|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     14|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     14|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     14|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     14|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     14|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     14|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     14|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     14|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     14|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     14|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     14|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     14|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     14|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     14|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1048|     14|                miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|     14|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     14|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     14|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     14|{                                               \
  |  |  |  |  |  |  197|     14|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     14|                                                \
  |  |  |  |  |  |  199|     14|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     14|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     14|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     14|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|     14|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     14|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     14|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     14|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     14|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     14|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     14|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     14|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     14|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     14|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     14|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     14|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     14|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|     14|        MF.data++;                              \
  |  |  |  |  |  |  212|     14|    }                                           \
  |  |  |  |  |  |  213|     14|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1049|     14|            }
 1050|    372|        } else if (OVS_LIKELY(nw_proto == IPPROTO_ICMP)) {
  ------------------
  |  |   45|    372|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 25, False: 347]
  |  |  ------------------
  ------------------
 1051|     25|            if (OVS_LIKELY(size >= ICMP_HEADER_LEN)) {
  ------------------
  |  |   45|     25|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 15, False: 10]
  |  |  ------------------
  ------------------
 1052|     15|                const struct icmp_header *icmp = data;
 1053|       |
 1054|     15|                miniflow_push_be16(mf, tp_src, htons(icmp->icmp_type));
  ------------------
  |  |  306|     15|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     15|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     15|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     15|{                                               \
  |  |  |  |  |  |  197|     15|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     15|                                                \
  |  |  |  |  |  |  199|     15|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|     15|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|     15|    {                                        \
  |  |  |  |  |  |  |  |  160|     15|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     15|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     15|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     15|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     15|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     15|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     15|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     15|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     15|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     15|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|     15|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|     15|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|     15|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     15|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     15|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1055|     15|                miniflow_push_be16(mf, tp_dst, htons(icmp->icmp_code));
  ------------------
  |  |  306|     15|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     15|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     15|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     15|{                                               \
  |  |  |  |  |  |  197|     15|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     15|                                                \
  |  |  |  |  |  |  199|     15|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     15|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|     15|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     15|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     15|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     15|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     15|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     15|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     15|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     15|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     15|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     15|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     15|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     15|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|     15|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     15|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     15|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1056|     15|                miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|     15|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     15|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     15|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     15|{                                               \
  |  |  |  |  |  |  197|     15|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     15|                                                \
  |  |  |  |  |  |  199|     15|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     15|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     15|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|     15|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     15|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     15|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     15|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     15|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     15|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     15|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     15|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     15|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     15|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     15|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     15|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     15|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     15|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     15|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1057|     15|                miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|     15|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     15|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     15|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     15|{                                               \
  |  |  |  |  |  |  197|     15|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     15|                                                \
  |  |  |  |  |  |  199|     15|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     15|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     15|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     15|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|     15|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     15|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     15|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     15|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     15|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     15|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     15|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     15|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     15|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     15|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     15|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     15|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     15|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|     15|        MF.data++;                              \
  |  |  |  |  |  |  212|     15|    }                                           \
  |  |  |  |  |  |  213|     15|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1058|     15|            }
 1059|    347|        } else if (OVS_LIKELY(nw_proto == IPPROTO_IGMP)) {
  ------------------
  |  |   45|    347|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 19, False: 328]
  |  |  ------------------
  ------------------
 1060|     19|            if (OVS_LIKELY(size >= IGMP_HEADER_LEN)) {
  ------------------
  |  |   45|     19|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 11, False: 8]
  |  |  ------------------
  ------------------
 1061|     11|                const struct igmp_header *igmp = data;
 1062|       |
 1063|     11|                miniflow_push_be16(mf, tp_src, htons(igmp->igmp_type));
  ------------------
  |  |  306|     11|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     11|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     11|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     11|{                                               \
  |  |  |  |  |  |  197|     11|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     11|                                                \
  |  |  |  |  |  |  199|     11|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|     11|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|     11|    {                                        \
  |  |  |  |  |  |  |  |  160|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|     11|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|     11|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|     11|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     11|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     11|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1064|     11|                miniflow_push_be16(mf, tp_dst, htons(igmp->igmp_code));
  ------------------
  |  |  306|     11|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     11|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     11|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     11|{                                               \
  |  |  |  |  |  |  197|     11|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     11|                                                \
  |  |  |  |  |  |  199|     11|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     11|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|     11|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     11|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|     11|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     11|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     11|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1065|     11|                miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|     11|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     11|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     11|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     11|{                                               \
  |  |  |  |  |  |  197|     11|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     11|                                                \
  |  |  |  |  |  |  199|     11|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     11|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     11|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|     11|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     11|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     11|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     11|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     11|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1066|     11|                miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|     11|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     11|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     11|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     11|{                                               \
  |  |  |  |  |  |  197|     11|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     11|                                                \
  |  |  |  |  |  |  199|     11|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     11|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     11|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     11|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|     11|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     11|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     11|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|     11|        MF.data++;                              \
  |  |  |  |  |  |  212|     11|    }                                           \
  |  |  |  |  |  |  213|     11|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1067|     11|                miniflow_push_be32(mf, igmp_group_ip4,
  ------------------
  |  |  300|     11|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|     11|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|     11|    {                                           \
  |  |  |  |  |  |  180|     11|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|     11|                                                \
  |  |  |  |  |  |  182|     11|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|     11|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|     11|    {                                        \
  |  |  |  |  |  |  |  |  160|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|     11|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|     11|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|     11|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|     11|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|     11|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1068|     11|                                   get_16aligned_be32(&igmp->group));
 1069|     11|                miniflow_pad_to_64(mf, igmp_group_ip4);
  ------------------
  |  |  312|     11|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|     11|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|     11|{                                                               \
  |  |  |  |  234|     11|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|     11|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|     11|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|     11|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     11|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     11|{                                                                       \
  |  |  |  |  |  |  |  |  151|     11|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     11|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|     11|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     11|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|     11|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|     11|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     11|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|     11|                                                                \
  |  |  |  |  237|     11|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|     11|    MF.data++;                                                  \
  |  |  |  |  239|     11|}
  |  |  ------------------
  ------------------
 1070|     11|            }
 1071|    328|        } else if (OVS_LIKELY(nw_proto == IPPROTO_ICMPV6)) {
  ------------------
  |  |   45|    328|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 217, False: 111]
  |  |  ------------------
  ------------------
 1072|    217|            if (OVS_LIKELY(size >= sizeof(struct icmp6_data_header))) {
  ------------------
  |  |   45|    217|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 209, False: 8]
  |  |  ------------------
  ------------------
 1073|    209|                const struct in6_addr *nd_target;
 1074|    209|                struct eth_addr arp_buf[2];
 1075|       |                /* This will populate whether we received Option 1
 1076|       |                 * or Option 2. */
 1077|    209|                uint8_t opt_type;
 1078|       |                /* This holds the ND Reserved field. */
 1079|    209|                ovs_be32 rso_flags;
 1080|    209|                const struct icmp6_data_header *icmp6;
 1081|       |
 1082|    209|                icmp6 = data_pull(&data, &size, sizeof *icmp6);
 1083|    209|                if (parse_icmpv6(&data, &size, icmp6,
  ------------------
  |  Branch (1083:21): [True: 165, False: 44]
  ------------------
 1084|    209|                                 &rso_flags, &nd_target, arp_buf, &opt_type)) {
 1085|    165|                    if (nd_target) {
  ------------------
  |  Branch (1085:25): [True: 122, False: 43]
  ------------------
 1086|    122|                        miniflow_push_words(mf, nd_target, nd_target,
  ------------------
  |  |  318|    122|    miniflow_push_words_(MF, offsetof(struct flow, FIELD), VALUEP, N_WORDS)
  |  |  ------------------
  |  |  |  |  268|    122|#define miniflow_push_words_(MF, OFS, VALUEP, N_WORDS)          \
  |  |  |  |  269|    122|{                                                               \
  |  |  |  |  270|    122|    MINIFLOW_ASSERT((OFS) % 8 == 0);                            \
  |  |  |  |  271|    122|    miniflow_set_maps(MF, (OFS) / 8, (N_WORDS));                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|    122|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|    122|{                                                               \
  |  |  |  |  |  |  259|    122|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|    122|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|    122|                                                                \
  |  |  |  |  |  |  262|    122|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|    122|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    122|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    122|{                                                                       \
  |  |  |  |  |  |  |  |  151|    122|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    122|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    122|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    122|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    122|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    122|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 122]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    122|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|    122|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|    122|}
  |  |  |  |  ------------------
  |  |  |  |  272|    122|    memcpy(MF.data, (VALUEP), (N_WORDS) * sizeof *MF.data);     \
  |  |  |  |  273|    122|    MF.data += (N_WORDS);                                       \
  |  |  |  |  274|    122|}
  |  |  ------------------
  ------------------
 1087|    122|                                            sizeof *nd_target / sizeof(uint64_t));
 1088|    122|                    }
 1089|    165|                    miniflow_push_macs(mf, arp_sha, arp_buf);
  ------------------
  |  |  324|    165|    miniflow_push_macs_(MF, offsetof(struct flow, FIELD), VALUEP)
  |  |  ------------------
  |  |  |  |  289|    165|#define miniflow_push_macs_(MF, OFS, VALUEP)                    \
  |  |  |  |  290|    165|{                                                               \
  |  |  |  |  291|    165|    miniflow_set_maps(MF, (OFS) / 8, 2);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  257|    165|#define miniflow_set_maps(MF, OFS, N_WORDS)                     \
  |  |  |  |  |  |  258|    165|{                                                               \
  |  |  |  |  |  |  259|    165|    size_t ofs = (OFS);                                         \
  |  |  |  |  |  |  260|    165|    size_t n_words = (N_WORDS);                                 \
  |  |  |  |  |  |  261|    165|                                                                \
  |  |  |  |  |  |  262|    165|    MINIFLOW_ASSERT(n_words && MF.data + n_words <= MF.end);    \
  |  |  |  |  |  |  263|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, ofs);                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  264|    165|    flowmap_set(&MF.map, ofs, n_words);                         \
  |  |  |  |  |  |  265|    165|}
  |  |  |  |  ------------------
  |  |  |  |  292|    165|    memcpy(MF.data, (VALUEP), 2 * ETH_ADDR_LEN);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|    165|#define ETH_ADDR_LEN           6
  |  |  |  |  ------------------
  |  |  |  |  293|    165|    MF.data += 1;                   /* First word only. */      \
  |  |  |  |  294|    165|}
  |  |  ------------------
  ------------------
 1090|       |                    /* Populate options field and set the padding
 1091|       |                     * accordingly. */
 1092|    165|                    if (opt_type != 0) {
  ------------------
  |  Branch (1092:25): [True: 71, False: 94]
  ------------------
 1093|     71|                        miniflow_push_be16(mf, tcp_flags, htons(opt_type));
  ------------------
  |  |  306|     71|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     71|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     71|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     71|{                                               \
  |  |  |  |  |  |  197|     71|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     71|                                                \
  |  |  |  |  |  |  199|     71|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     71|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     71|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|     71|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     71|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     71|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     71|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     71|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     71|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     71|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     71|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     71|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     71|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     71|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 71]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     71|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     71|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     71|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     71|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|       |                        /* Pad to align with 64 bits.
 1095|       |                         * This will zero out the pad3 field. */
 1096|     71|                        miniflow_pad_to_64(mf, tcp_flags);
  ------------------
  |  |  312|     71|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|     71|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|     71|{                                                               \
  |  |  |  |  234|     71|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|     71|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|     71|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|     71|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     71|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     71|{                                                                       \
  |  |  |  |  |  |  |  |  151|     71|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     71|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|     71|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     71|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|     71|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|     71|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 71]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     71|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|     71|                                                                \
  |  |  |  |  237|     71|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|     71|    MF.data++;                                                  \
  |  |  |  |  239|     71|}
  |  |  ------------------
  ------------------
 1097|     94|                    } else {
 1098|       |                        /* Pad to align with 64 bits.
 1099|       |                         * This will zero out the tcp_flags & pad3 field. */
 1100|     94|                        miniflow_pad_to_64(mf, arp_tha);
  ------------------
  |  |  312|     94|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|     94|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|     94|{                                                               \
  |  |  |  |  234|     94|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|     94|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|     94|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|     94|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|     94|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|     94|{                                                                       \
  |  |  |  |  |  |  |  |  151|     94|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|     94|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|     94|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|     94|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|     94|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|     94|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 94]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|     94|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|     94|                                                                \
  |  |  |  |  237|     94|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|     94|    MF.data++;                                                  \
  |  |  |  |  239|     94|}
  |  |  ------------------
  ------------------
 1101|     94|                    }
 1102|    165|                    miniflow_push_be16(mf, tp_src,
  ------------------
  |  |  306|    165|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    165|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    165|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    165|{                                               \
  |  |  |  |  |  |  197|    165|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    165|                                                \
  |  |  |  |  |  |  199|    165|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|    165|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    165|    {                                        \
  |  |  |  |  |  |  |  |  160|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    165|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    165|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|    165|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    165|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    165|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1103|    165|                                       htons(icmp6->icmp6_base.icmp6_type));
 1104|    165|                    miniflow_push_be16(mf, tp_dst,
  ------------------
  |  |  306|    165|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|    165|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|    165|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|    165|{                                               \
  |  |  |  |  |  |  197|    165|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|    165|                                                \
  |  |  |  |  |  |  199|    165|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|    165|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|    165|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|    165|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|    165|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|    165|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|    165|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1105|    165|                                       htons(icmp6->icmp6_base.icmp6_code));
 1106|    165|                    miniflow_pad_to_64(mf, tp_dst);
  ------------------
  |  |  312|    165|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|    165|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|    165|{                                                               \
  |  |  |  |  234|    165|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|    165|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|    165|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|    165|                                                                \
  |  |  |  |  237|    165|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|    165|    MF.data++;                                                  \
  |  |  |  |  239|    165|}
  |  |  ------------------
  ------------------
 1107|       |                    /* Fill ND reserved field. */
 1108|    165|                    miniflow_push_be32(mf, igmp_group_ip4, rso_flags);
  ------------------
  |  |  300|    165|    miniflow_push_be32_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  193|    165|    miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|    165|    {                                           \
  |  |  |  |  |  |  180|    165|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  181|    165|                                                \
  |  |  |  |  |  |  182|    165|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (182:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  183|    165|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|    165|    {                                        \
  |  |  |  |  |  |  |  |  160|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|    165|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|    165|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  184|    165|        *(uint32_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  185|    165|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (185:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  186|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|        *((uint32_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  188|      0|        MF.data++;                              \
  |  |  |  |  |  |  189|      0|    }                                           \
  |  |  |  |  |  |  190|    165|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|    165|                    miniflow_pad_to_64(mf, igmp_group_ip4);
  ------------------
  |  |  312|    165|    miniflow_pad_to_64_(MF, OFFSETOFEND(struct flow, FIELD))
  |  |  ------------------
  |  |  |  |  232|    165|#define miniflow_pad_to_64_(MF, OFS)                            \
  |  |  |  |  233|    165|{                                                               \
  |  |  |  |  234|    165|    MINIFLOW_ASSERT((OFS) % 8 != 0);                            \
  |  |  |  |  235|    165|    miniflow_assert_in_map(MF, OFS / 8);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|    165|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  166|    165|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  149|    165|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  150|    165|{                                                                       \
  |  |  |  |  |  |  |  |  151|    165|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  152|    165|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  153|    165|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  269|    165|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  279|    165|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  296|    165|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 165]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  156|    165|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  236|    165|                                                                \
  |  |  |  |  237|    165|    memset((uint8_t *)MF.data + (OFS) % 8, 0, 8 - (OFS) % 8);   \
  |  |  |  |  238|    165|    MF.data++;                                                  \
  |  |  |  |  239|    165|}
  |  |  ------------------
  ------------------
 1110|    165|                } else {
 1111|       |                    /* ICMPv6 but not ND. */
 1112|     44|                    miniflow_push_be16(mf, tp_src,
  ------------------
  |  |  306|     44|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     44|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     44|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     44|{                                               \
  |  |  |  |  |  |  197|     44|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     44|                                                \
  |  |  |  |  |  |  199|     44|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|     44|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|     44|    {                                        \
  |  |  |  |  |  |  |  |  160|     44|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     44|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     44|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     44|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     44|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     44|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     44|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     44|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     44|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     44|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|     44|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|     44|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|     44|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     44|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|      0|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     44|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1113|     44|                                       htons(icmp6->icmp6_base.icmp6_type));
 1114|     44|                    miniflow_push_be16(mf, tp_dst,
  ------------------
  |  |  306|     44|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     44|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     44|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     44|{                                               \
  |  |  |  |  |  |  197|     44|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     44|                                                \
  |  |  |  |  |  |  199|     44|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     44|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|     44|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     44|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     44|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     44|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     44|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     44|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     44|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     44|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     44|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     44|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     44|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     44|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|     44|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     44|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|      0|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     44|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1115|     44|                                       htons(icmp6->icmp6_base.icmp6_code));
 1116|     44|                    miniflow_push_be16(mf, ct_tp_src, ct_tp_src);
  ------------------
  |  |  306|     44|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     44|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     44|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     44|{                                               \
  |  |  |  |  |  |  197|     44|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     44|                                                \
  |  |  |  |  |  |  199|     44|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     44|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     44|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|     44|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     44|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     44|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     44|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     44|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     44|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     44|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     44|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     44|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     44|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     44|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     44|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     44|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     44|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      0|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|      0|        MF.data++;                              \
  |  |  |  |  |  |  212|      0|    }                                           \
  |  |  |  |  |  |  213|     44|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1117|     44|                    miniflow_push_be16(mf, ct_tp_dst, ct_tp_dst);
  ------------------
  |  |  306|     44|    miniflow_push_be16_(MF, offsetof(struct flow, FIELD), VALUE)
  |  |  ------------------
  |  |  |  |  252|     44|    miniflow_push_uint16_(MF, OFS, (OVS_FORCE uint16_t)VALUE);
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     44|#define miniflow_push_uint16_(MF, OFS, VALUE)   \
  |  |  |  |  |  |  196|     44|{                                               \
  |  |  |  |  |  |  197|     44|    MINIFLOW_ASSERT(MF.data < MF.end);          \
  |  |  |  |  |  |  198|     44|                                                \
  |  |  |  |  |  |  199|     44|    if ((OFS) % 8 == 0) {                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (199:9): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  200|      0|        miniflow_set_map(MF, OFS / 8);          \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  159|      0|    {                                        \
  |  |  |  |  |  |  |  |  160|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS));  \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  161|      0|    flowmap_set(&MF.map, (OFS), 1);          \
  |  |  |  |  |  |  |  |  162|      0|}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  201|      0|        *(uint16_t *)MF.data = VALUE;           \
  |  |  |  |  |  |  202|     44|    } else if ((OFS) % 8 == 2) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (202:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  203|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  204|      0|        *((uint16_t *)MF.data + 1) = VALUE;     \
  |  |  |  |  |  |  205|     44|    } else if ((OFS) % 8 == 4) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (205:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  206|      0|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|      0|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|      0|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|      0|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|      0|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|      0|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|      0|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|      0|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|      0|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|      0|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|      0|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|        *((uint16_t *)MF.data + 2) = VALUE;     \
  |  |  |  |  |  |  208|     44|    } else if ((OFS) % 8 == 6) {                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (208:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  209|     44|        miniflow_assert_in_map(MF, OFS / 8);    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|     44|    MINIFLOW_ASSERT(flowmap_is_set(&MF.map, (OFS))); \
  |  |  |  |  |  |  |  |  166|     44|    ASSERT_FLOWMAP_NOT_SET(&MF.map, (OFS) + 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  149|     44|#define ASSERT_FLOWMAP_NOT_SET(FM, IDX)                                 \
  |  |  |  |  |  |  |  |  |  |  150|     44|{                                                                       \
  |  |  |  |  |  |  |  |  |  |  151|     44|    MINIFLOW_ASSERT(!((FM)->bits[(IDX) / MAP_T_BITS] &                  \
  |  |  |  |  |  |  |  |  |  |  152|     44|                      (MAP_MAX << ((IDX) % MAP_T_BITS))));              \
  |  |  |  |  |  |  |  |  |  |  153|     44|    for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  269|     44|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |                   for (size_t i = (IDX) / MAP_T_BITS + 1; i < FLOWMAP_UNITS; i++) {   \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  279|     44|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  296|     44|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (153:45): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  154|      0|        MINIFLOW_ASSERT(!(FM)->bits[i]);                                \
  |  |  |  |  |  |  |  |  |  |  155|      0|    }                                                                   \
  |  |  |  |  |  |  |  |  |  |  156|     44|}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     44|        *((uint16_t *)MF.data + 3) = VALUE;     \
  |  |  |  |  |  |  211|     44|        MF.data++;                              \
  |  |  |  |  |  |  212|     44|    }                                           \
  |  |  |  |  |  |  213|     44|}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1118|     44|                }
 1119|    209|            }
 1120|    217|        }
 1121|  1.00k|    }
 1122|  1.95k| out:
 1123|  1.95k|    dst->map = mf.map;
 1124|  1.95k|}
flow_wildcards_init_catchall:
 1829|  3.90k|{
 1830|  3.90k|    memset(&wc->masks, 0, sizeof wc->masks);
 1831|  3.90k|}
flow_wildcards_init_for_packet:
 1840|  1.95k|{
 1841|  1.95k|    ovs_be16 dl_type = OVS_BE16_MAX;
  ------------------
  |  |   42|  1.95k|#define OVS_BE16_MAX ((OVS_FORCE ovs_be16) 0xffff)
  ------------------
 1842|       |
 1843|  1.95k|    memset(&wc->masks, 0x0, sizeof wc->masks);
 1844|       |
 1845|       |    /* Update this function whenever struct flow changes. */
 1846|  1.95k|    BUILD_ASSERT_DECL(FLOW_WC_SEQ == 42);
  ------------------
  |  |  269|  1.95k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
 1847|       |
 1848|  1.95k|    if (flow_tnl_dst_is_set(&flow->tunnel)) {
  ------------------
  |  Branch (1848:9): [True: 0, False: 1.95k]
  ------------------
 1849|      0|        if (flow->tunnel.flags & FLOW_TNL_F_KEY) {
  ------------------
  |  |   63|      0|#define FLOW_TNL_F_KEY (1 << 3)
  ------------------
  |  Branch (1849:13): [True: 0, False: 0]
  ------------------
 1850|      0|            WC_MASK_FIELD(wc, tunnel.tun_id);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1851|      0|        }
 1852|      0|        WC_MASK_FIELD(wc, tunnel.ip_src);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1853|      0|        WC_MASK_FIELD(wc, tunnel.ip_dst);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1854|      0|        WC_MASK_FIELD(wc, tunnel.ipv6_src);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1855|      0|        WC_MASK_FIELD(wc, tunnel.ipv6_dst);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1856|      0|        WC_MASK_FIELD(wc, tunnel.flags);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1857|      0|        WC_MASK_FIELD(wc, tunnel.ip_tos);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1858|      0|        WC_MASK_FIELD(wc, tunnel.ip_ttl);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1859|      0|        WC_MASK_FIELD(wc, tunnel.tp_src);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1860|      0|        WC_MASK_FIELD(wc, tunnel.tp_dst);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1861|      0|        WC_MASK_FIELD(wc, tunnel.gbp_id);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1862|      0|        WC_MASK_FIELD(wc, tunnel.gbp_flags);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1863|      0|        WC_MASK_FIELD(wc, tunnel.erspan_ver);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1864|      0|        WC_MASK_FIELD(wc, tunnel.erspan_idx);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1865|      0|        WC_MASK_FIELD(wc, tunnel.erspan_dir);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1866|      0|        WC_MASK_FIELD(wc, tunnel.erspan_hwid);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1867|      0|        WC_MASK_FIELD(wc, tunnel.gtpu_flags);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1868|      0|        WC_MASK_FIELD(wc, tunnel.gtpu_msgtype);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1869|       |
 1870|      0|        if (!(flow->tunnel.flags & FLOW_TNL_F_UDPIF)) {
  ------------------
  |  |   45|      0|#define FLOW_TNL_F_UDPIF (1 << 4)
  ------------------
  |  Branch (1870:13): [True: 0, False: 0]
  ------------------
 1871|      0|            if (flow->tunnel.metadata.present.map) {
  ------------------
  |  Branch (1871:17): [True: 0, False: 0]
  ------------------
 1872|      0|                wc->masks.tunnel.metadata.present.map =
 1873|      0|                                              flow->tunnel.metadata.present.map;
 1874|      0|                WC_MASK_FIELD(wc, tunnel.metadata.opts.u8);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1875|      0|                WC_MASK_FIELD(wc, tunnel.metadata.tab);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1876|      0|            }
 1877|      0|        } else {
 1878|      0|            WC_MASK_FIELD(wc, tunnel.metadata.present.len);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1879|      0|            memset(wc->masks.tunnel.metadata.opts.gnv, 0xff,
 1880|      0|                   flow->tunnel.metadata.present.len);
 1881|      0|        }
 1882|  1.95k|    } else if (flow->tunnel.tun_id) {
  ------------------
  |  Branch (1882:16): [True: 0, False: 1.95k]
  ------------------
 1883|      0|        WC_MASK_FIELD(wc, tunnel.tun_id);
  ------------------
  |  |  201|      0|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1884|      0|    }
 1885|       |
 1886|       |    /* metadata, regs, and conj_id wildcarded. */
 1887|       |
 1888|  1.95k|    WC_MASK_FIELD(wc, skb_priority);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1889|  1.95k|    WC_MASK_FIELD(wc, pkt_mark);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1890|  1.95k|    WC_MASK_FIELD(wc, ct_state);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1891|  1.95k|    WC_MASK_FIELD(wc, ct_zone);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1892|  1.95k|    WC_MASK_FIELD(wc, ct_mark);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1893|  1.95k|    WC_MASK_FIELD(wc, ct_label);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1894|  1.95k|    WC_MASK_FIELD(wc, recirc_id);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1895|  1.95k|    WC_MASK_FIELD(wc, dp_hash);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1896|  1.95k|    WC_MASK_FIELD(wc, in_port);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1897|       |
 1898|       |    /* actset_output wildcarded. */
 1899|       |
 1900|  1.95k|    WC_MASK_FIELD(wc, packet_type);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1901|  1.95k|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (1901:9): [True: 1.95k, False: 0]
  ------------------
 1902|  1.95k|        WC_MASK_FIELD(wc, dl_dst);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1903|  1.95k|        WC_MASK_FIELD(wc, dl_src);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1904|  1.95k|        WC_MASK_FIELD(wc, dl_type);
  ------------------
  |  |  201|  1.95k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1905|       |        /* No need to set mask of inner VLANs that don't exist. */
 1906|  1.98k|        for (int i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) {
  ------------------
  |  |   75|  1.98k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
  |  Branch (1906:25): [True: 1.98k, False: 3]
  ------------------
 1907|       |            /* Always show the first zero VLAN. */
 1908|  1.98k|            WC_MASK_FIELD(wc, vlans[i]);
  ------------------
  |  |  201|  1.98k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1909|  1.98k|            if (flow->vlans[i].tci == htons(0)) {
  ------------------
  |  Branch (1909:17): [True: 1.94k, False: 32]
  ------------------
 1910|  1.94k|                break;
 1911|  1.94k|            }
 1912|  1.98k|        }
 1913|  1.95k|        dl_type = flow->dl_type;
 1914|  1.95k|    } else {
 1915|      0|        dl_type = pt_ns_type_be(flow->packet_type);
 1916|      0|    }
 1917|       |
 1918|  1.95k|    if (dl_type == htons(ETH_TYPE_IP)) {
  ------------------
  |  Branch (1918:9): [True: 714, False: 1.23k]
  ------------------
 1919|    714|        WC_MASK_FIELD(wc, nw_src);
  ------------------
  |  |  201|    714|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1920|    714|        WC_MASK_FIELD(wc, nw_dst);
  ------------------
  |  |  201|    714|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1921|    714|        WC_MASK_FIELD(wc, ct_nw_src);
  ------------------
  |  |  201|    714|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1922|    714|        WC_MASK_FIELD(wc, ct_nw_dst);
  ------------------
  |  |  201|    714|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1923|  1.23k|    } else if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1923:16): [True: 683, False: 554]
  ------------------
 1924|    683|        WC_MASK_FIELD(wc, ipv6_src);
  ------------------
  |  |  201|    683|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1925|    683|        WC_MASK_FIELD(wc, ipv6_dst);
  ------------------
  |  |  201|    683|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1926|    683|        WC_MASK_FIELD(wc, ipv6_label);
  ------------------
  |  |  201|    683|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1927|    683|        if (is_nd(flow, wc)) {
  ------------------
  |  Branch (1927:13): [True: 9, False: 674]
  ------------------
 1928|      9|            WC_MASK_FIELD(wc, arp_sha);
  ------------------
  |  |  201|      9|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1929|      9|            WC_MASK_FIELD(wc, arp_tha);
  ------------------
  |  |  201|      9|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1930|      9|            WC_MASK_FIELD(wc, nd_target);
  ------------------
  |  |  201|      9|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1931|    674|        } else {
 1932|    674|            WC_MASK_FIELD(wc, ct_ipv6_src);
  ------------------
  |  |  201|    674|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1933|    674|            WC_MASK_FIELD(wc, ct_ipv6_dst);
  ------------------
  |  |  201|    674|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1934|    674|        }
 1935|    683|    } else if (dl_type == htons(ETH_TYPE_ARP) ||
  ------------------
  |  Branch (1935:16): [True: 71, False: 483]
  ------------------
 1936|    554|               dl_type == htons(ETH_TYPE_RARP)) {
  ------------------
  |  Branch (1936:16): [True: 13, False: 470]
  ------------------
 1937|     84|        WC_MASK_FIELD(wc, nw_src);
  ------------------
  |  |  201|     84|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1938|     84|        WC_MASK_FIELD(wc, nw_dst);
  ------------------
  |  |  201|     84|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1939|     84|        WC_MASK_FIELD(wc, nw_proto);
  ------------------
  |  |  201|     84|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1940|     84|        WC_MASK_FIELD(wc, arp_sha);
  ------------------
  |  |  201|     84|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1941|     84|        WC_MASK_FIELD(wc, arp_tha);
  ------------------
  |  |  201|     84|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1942|     84|        return;
 1943|    470|    } else if (eth_type_mpls(dl_type)) {
  ------------------
  |  Branch (1943:16): [True: 53, False: 417]
  ------------------
 1944|    183|        for (int i = 0; i < FLOW_MAX_MPLS_LABELS; i++) {
  ------------------
  |  |   66|    183|#define FLOW_MAX_MPLS_LABELS 3
  ------------------
  |  Branch (1944:25): [True: 144, False: 39]
  ------------------
 1945|    144|            WC_MASK_FIELD(wc, mpls_lse[i]);
  ------------------
  |  |  201|    144|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1946|    144|            if (flow->mpls_lse[i] & htonl(MPLS_BOS_MASK)) {
  ------------------
  |  Branch (1946:17): [True: 14, False: 130]
  ------------------
 1947|     14|                break;
 1948|     14|            }
 1949|    144|        }
 1950|     53|        return;
 1951|    417|    } else if (flow->dl_type == htons(ETH_TYPE_NSH)) {
  ------------------
  |  Branch (1951:16): [True: 89, False: 328]
  ------------------
 1952|     89|        WC_MASK_FIELD(wc, nsh.flags);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1953|     89|        WC_MASK_FIELD(wc, nsh.ttl);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1954|     89|        WC_MASK_FIELD(wc, nsh.mdtype);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1955|     89|        WC_MASK_FIELD(wc, nsh.np);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1956|     89|        WC_MASK_FIELD(wc, nsh.path_hdr);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1957|     89|        WC_MASK_FIELD(wc, nsh.context);
  ------------------
  |  |  201|     89|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1958|    328|    } else {
 1959|    328|        return; /* Unknown ethertype. */
 1960|    328|    }
 1961|       |
 1962|       |    /* IPv4 or IPv6. */
 1963|  1.48k|    WC_MASK_FIELD_MASK(wc, nw_frag, FLOW_NW_FRAG_MASK);
  ------------------
  |  |  203|  1.48k|    ((WC)->masks.FIELD |= (MASK))
  ------------------
 1964|  1.48k|    WC_MASK_FIELD(wc, nw_tos);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1965|  1.48k|    WC_MASK_FIELD(wc, nw_ttl);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1966|  1.48k|    WC_MASK_FIELD(wc, nw_proto);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1967|  1.48k|    WC_MASK_FIELD(wc, ct_nw_proto);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1968|  1.48k|    WC_MASK_FIELD(wc, ct_tp_src);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1969|  1.48k|    WC_MASK_FIELD(wc, ct_tp_dst);
  ------------------
  |  |  201|  1.48k|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1970|       |
 1971|       |    /* No transport layer header in later fragments. */
 1972|  1.48k|    if (!(flow->nw_frag & FLOW_NW_FRAG_LATER) &&
  ------------------
  |  |   55|  1.48k|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  |  Branch (1972:9): [True: 1.35k, False: 135]
  ------------------
 1973|  1.48k|        (flow->nw_proto == IPPROTO_ICMP ||
  ------------------
  |  Branch (1973:10): [True: 25, False: 1.32k]
  ------------------
 1974|  1.35k|         flow->nw_proto == IPPROTO_ICMPV6 ||
  ------------------
  |  Branch (1974:10): [True: 217, False: 1.10k]
  ------------------
 1975|  1.35k|         flow->nw_proto == IPPROTO_TCP ||
  ------------------
  |  Branch (1975:10): [True: 329, False: 780]
  ------------------
 1976|  1.35k|         flow->nw_proto == IPPROTO_UDP ||
  ------------------
  |  Branch (1976:10): [True: 289, False: 491]
  ------------------
 1977|  1.35k|         flow->nw_proto == IPPROTO_SCTP ||
  ------------------
  |  Branch (1977:10): [True: 18, False: 473]
  ------------------
 1978|  1.35k|         flow->nw_proto == IPPROTO_IGMP)) {
  ------------------
  |  Branch (1978:10): [True: 19, False: 454]
  ------------------
 1979|    897|        WC_MASK_FIELD(wc, tp_src);
  ------------------
  |  |  201|    897|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1980|    897|        WC_MASK_FIELD(wc, tp_dst);
  ------------------
  |  |  201|    897|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1981|       |
 1982|    897|        if (flow->nw_proto == IPPROTO_TCP) {
  ------------------
  |  Branch (1982:13): [True: 329, False: 568]
  ------------------
 1983|    329|            WC_MASK_FIELD(wc, tcp_flags);
  ------------------
  |  |  201|    329|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1984|    568|        } else if (flow->nw_proto == IPPROTO_IGMP) {
  ------------------
  |  Branch (1984:20): [True: 19, False: 549]
  ------------------
 1985|     19|            WC_MASK_FIELD(wc, igmp_group_ip4);
  ------------------
  |  |  201|     19|    memset(&(WC)->masks.FIELD, 0xff, sizeof (WC)->masks.FIELD)
  ------------------
 1986|     19|        }
 1987|    897|    }
 1988|  1.48k|}
flow_wildcards_is_catchall:
 2114|  1.95k|{
 2115|  1.95k|    const uint64_t *wc_u64 = (const uint64_t *) &wc->masks;
 2116|  1.95k|    size_t i;
 2117|       |
 2118|  1.95k|    for (i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|  1.95k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (2118:17): [True: 1.95k, False: 0]
  ------------------
 2119|  1.95k|        if (wc_u64[i]) {
  ------------------
  |  Branch (2119:13): [True: 1.95k, False: 0]
  ------------------
 2120|  1.95k|            return false;
 2121|  1.95k|        }
 2122|  1.95k|    }
 2123|      0|    return true;
 2124|  1.95k|}
flow_wildcards_and:
 2133|  1.95k|{
 2134|  1.95k|    uint64_t *dst_u64 = (uint64_t *) &dst->masks;
 2135|  1.95k|    const uint64_t *src1_u64 = (const uint64_t *) &src1->masks;
 2136|  1.95k|    const uint64_t *src2_u64 = (const uint64_t *) &src2->masks;
 2137|  1.95k|    size_t i;
 2138|       |
 2139|   165k|    for (i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|   165k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (2139:17): [True: 163k, False: 1.95k]
  ------------------
 2140|   163k|        dst_u64[i] = src1_u64[i] & src2_u64[i];
 2141|   163k|    }
 2142|  1.95k|}
flow_wildcards_equal:
 2174|  1.95k|{
 2175|  1.95k|    return flow_equal(&a->masks, &b->masks);
 2176|  1.95k|}
miniflow_hash_5tuple:
 2245|  1.95k|{
 2246|  1.95k|    BUILD_ASSERT_DECL(FLOW_WC_SEQ == 42);
  ------------------
  |  |  269|  1.95k|#define BUILD_ASSERT_DECL(EXPR) _Static_assert(EXPR, #EXPR)
  ------------------
 2247|  1.95k|    uint32_t hash = basis;
 2248|       |
 2249|  1.95k|    if (flow) {
  ------------------
  |  Branch (2249:9): [True: 1.95k, False: 0]
  ------------------
 2250|  1.95k|        ovs_be16 dl_type = MINIFLOW_GET_BE16(flow, dl_type);
  ------------------
  |  |  718|  1.95k|    MINIFLOW_GET_TYPE(FLOW, ovs_be16, FIELD)
  |  |  ------------------
  |  |  |  |  693|  1.95k|    (BUILD_ASSERT(sizeof(TYPE) == sizeof(((struct flow *)0)->FIELD)),   \
  |  |  |  |  ------------------
  |  |  |  |  |  |  270|  1.95k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  ------------------
  |  |  |  |  694|  1.95k|     BUILD_ASSERT_GCCONLY(__builtin_types_compatible_p(TYPE, typeof(((struct flow *)0)->FIELD))), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  280|  1.95k|#define BUILD_ASSERT_GCCONLY(EXPR) BUILD_ASSERT(EXPR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  270|  1.95k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  695|  1.95k|     MINIFLOW_GET_TYPE__(MF, TYPE, FIELD))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|  1.95k|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  688|  1.95k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (688:34): [True: 1.92k, False: 29]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  702|  1.95k|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.92k|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  703|  1.92k|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   64|  1.92k|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  1.95k|     : 0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2251|  1.95k|        uint8_t nw_proto;
 2252|       |
 2253|  1.95k|        if (dl_type == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (2253:13): [True: 683, False: 1.26k]
  ------------------
 2254|    683|            struct flowmap map = FLOWMAP_EMPTY_INITIALIZER;
  ------------------
  |  |  285|    683|#define FLOWMAP_EMPTY_INITIALIZER { { 0 } }
  ------------------
 2255|    683|            uint64_t value;
 2256|       |
 2257|    683|            FLOWMAP_SET(&map, ipv6_src);
  ------------------
  |  |  305|    683|    flowmap_set(FM, FLOW_U64_OFFSET(FIELD), FLOW_U64_SIZE(FIELD))
  |  |  ------------------
  |  |  |  |   62|    683|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  ------------------
  |  |                   flowmap_set(FM, FLOW_U64_OFFSET(FIELD), FLOW_U64_SIZE(FIELD))
  |  |  ------------------
  |  |  |  |   68|    683|    DIV_ROUND_UP(FLOW_U64_OFFREM(FIELD) + MEMBER_SIZEOF(struct flow, FIELD), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|    683|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  |  |   69|    683|                 sizeof(uint64_t))
  |  |  ------------------
  ------------------
 2258|    683|            FLOWMAP_SET(&map, ipv6_dst);
  ------------------
  |  |  305|    683|    flowmap_set(FM, FLOW_U64_OFFSET(FIELD), FLOW_U64_SIZE(FIELD))
  |  |  ------------------
  |  |  |  |   62|    683|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  ------------------
  |  |                   flowmap_set(FM, FLOW_U64_OFFSET(FIELD), FLOW_U64_SIZE(FIELD))
  |  |  ------------------
  |  |  |  |   68|    683|    DIV_ROUND_UP(FLOW_U64_OFFREM(FIELD) + MEMBER_SIZEOF(struct flow, FIELD), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|    683|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  |  |   69|    683|                 sizeof(uint64_t))
  |  |  ------------------
  ------------------
 2259|       |
 2260|  2.73k|            MINIFLOW_FOR_EACH_IN_FLOWMAP(value, flow, map) {
  ------------------
  |  |  662|    683|    for (struct mf_for_each_in_map_aux aux__ =                      \
  |  |  663|    683|        { 0, (FLOW)->map, (FLOWMAP), miniflow_get_values(FLOW) };   \
  |  |  664|  3.41k|         mf_get_next_in_map(&aux__, &(VALUE));)
  |  |  ------------------
  |  |  |  Branch (664:10): [True: 2.73k, False: 683]
  |  |  ------------------
  ------------------
 2261|  2.73k|                hash = hash_add64(hash, value);
 2262|  2.73k|            }
 2263|  1.26k|        } else if (dl_type == htons(ETH_TYPE_IP)
  ------------------
  |  Branch (2263:20): [True: 714, False: 554]
  ------------------
 2264|  1.26k|                   || dl_type == htons(ETH_TYPE_ARP)) {
  ------------------
  |  Branch (2264:23): [True: 71, False: 483]
  ------------------
 2265|    785|            hash = hash_add(hash, MINIFLOW_GET_U32(flow, nw_src));
  ------------------
  |  |  720|    785|    MINIFLOW_GET_TYPE(FLOW, uint32_t, FIELD)
  |  |  ------------------
  |  |  |  |  693|    785|    (BUILD_ASSERT(sizeof(TYPE) == sizeof(((struct flow *)0)->FIELD)),   \
  |  |  |  |  ------------------
  |  |  |  |  |  |  270|    785|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  ------------------
  |  |  |  |  694|    785|     BUILD_ASSERT_GCCONLY(__builtin_types_compatible_p(TYPE, typeof(((struct flow *)0)->FIELD))), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  280|    785|#define BUILD_ASSERT_GCCONLY(EXPR) BUILD_ASSERT(EXPR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  270|    785|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  695|    785|     MINIFLOW_GET_TYPE__(MF, TYPE, FIELD))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|    785|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  688|    785|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (688:34): [True: 632, False: 153]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  702|    785|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    632|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  703|    632|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   64|    632|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    785|     : 0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2266|    785|            hash = hash_add(hash, MINIFLOW_GET_U32(flow, nw_dst));
  ------------------
  |  |  720|    785|    MINIFLOW_GET_TYPE(FLOW, uint32_t, FIELD)
  |  |  ------------------
  |  |  |  |  693|    785|    (BUILD_ASSERT(sizeof(TYPE) == sizeof(((struct flow *)0)->FIELD)),   \
  |  |  |  |  ------------------
  |  |  |  |  |  |  270|    785|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  ------------------
  |  |  |  |  694|    785|     BUILD_ASSERT_GCCONLY(__builtin_types_compatible_p(TYPE, typeof(((struct flow *)0)->FIELD))), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  280|    785|#define BUILD_ASSERT_GCCONLY(EXPR) BUILD_ASSERT(EXPR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  270|    785|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  695|    785|     MINIFLOW_GET_TYPE__(MF, TYPE, FIELD))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|    785|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  688|    785|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (688:34): [True: 632, False: 153]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  702|    785|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    632|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  703|    632|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   64|    632|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    785|     : 0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2267|    785|        } else {
 2268|    483|            goto out;
 2269|    483|        }
 2270|       |
 2271|  1.46k|        nw_proto = MINIFLOW_GET_U8(flow, nw_proto);
  ------------------
  |  |  714|  1.46k|    MINIFLOW_GET_TYPE(FLOW, uint8_t, FIELD)
  |  |  ------------------
  |  |  |  |  693|  1.46k|    (BUILD_ASSERT(sizeof(TYPE) == sizeof(((struct flow *)0)->FIELD)),   \
  |  |  |  |  ------------------
  |  |  |  |  |  |  270|  1.46k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  ------------------
  |  |  |  |  694|  1.46k|     BUILD_ASSERT_GCCONLY(__builtin_types_compatible_p(TYPE, typeof(((struct flow *)0)->FIELD))), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  280|  1.46k|#define BUILD_ASSERT_GCCONLY(EXPR) BUILD_ASSERT(EXPR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  270|  1.46k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  695|  1.46k|     MINIFLOW_GET_TYPE__(MF, TYPE, FIELD))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|  1.46k|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  688|  1.46k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (688:34): [True: 1.14k, False: 324]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  702|  1.46k|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.14k|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  703|  1.14k|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   64|  1.14k|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  1.46k|     : 0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2272|  1.46k|        hash = hash_add(hash, nw_proto);
 2273|  1.46k|        if (nw_proto != IPPROTO_TCP && nw_proto != IPPROTO_UDP
  ------------------
  |  Branch (2273:13): [True: 1.13k, False: 331]
  |  Branch (2273:40): [True: 847, False: 290]
  ------------------
 2274|  1.46k|            && nw_proto != IPPROTO_SCTP && nw_proto != IPPROTO_ICMP
  ------------------
  |  Branch (2274:16): [True: 829, False: 18]
  |  Branch (2274:44): [True: 803, False: 26]
  ------------------
 2275|  1.46k|            && nw_proto != IPPROTO_ICMPV6) {
  ------------------
  |  Branch (2275:16): [True: 586, False: 217]
  ------------------
 2276|    586|            goto out;
 2277|    586|        }
 2278|       |
 2279|       |        /* Add both ports at once. */
 2280|    882|        hash = hash_add(hash, (OVS_FORCE uint32_t) miniflow_get_ports(flow));
 2281|    882|    }
 2282|  1.95k|out:
 2283|  1.95k|    return hash_finish(hash, 42);
 2284|  1.95k|}
miniflow_init:
 3386|  17.5k|{
 3387|  17.5k|    uint64_t *dst_u64 = miniflow_values(dst);
 3388|  17.5k|    size_t idx;
 3389|       |
 3390|   100k|    FLOWMAP_FOR_EACH_INDEX(idx, dst->map) {
  ------------------
  |  |  336|  17.5k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  17.5k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|   117k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 100k, False: 17.5k]
  |  |  ------------------
  ------------------
 3391|   100k|        *dst_u64++ = flow_u64_value(src, idx);
 3392|   100k|    }
 3393|  17.5k|}
miniflow_map_init:
 3398|  17.5k|{
 3399|       |    /* Initialize map, counting the number of nonzero elements. */
 3400|  17.5k|    flowmap_init(&flow->map);
 3401|  1.49M|    for (size_t i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|  1.49M|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (3401:24): [True: 1.47M, False: 17.5k]
  ------------------
 3402|  1.47M|        if (flow_u64_value(src, i)) {
  ------------------
  |  Branch (3402:13): [True: 100k, False: 1.37M]
  ------------------
 3403|   100k|            flowmap_set(&flow->map, i, 1);
 3404|   100k|        }
 3405|  1.47M|    }
 3406|  17.5k|}
miniflow_alloc:
 3413|  19.4k|{
 3414|  19.4k|    size_t n_values = miniflow_n_values(src);
 3415|  19.4k|    size_t data_size = MINIFLOW_VALUES_SIZE(n_values);
  ------------------
  |  |  526|  19.4k|#define MINIFLOW_VALUES_SIZE(COUNT) ((COUNT) * sizeof(uint64_t))
  ------------------
 3416|  19.4k|    struct miniflow *dst = xmalloc(n * (sizeof *src + data_size));
 3417|  19.4k|    size_t i;
 3418|       |
 3419|  19.4k|    COVERAGE_INC(miniflow_malloc);
  ------------------
  |  |   83|  19.4k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|  19.4k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
 3420|       |
 3421|  38.9k|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3421:17): [True: 19.4k, False: 19.4k]
  ------------------
 3422|  19.4k|        *dst = *src;   /* Copy maps. */
 3423|  19.4k|        dsts[i] = dst;
 3424|  19.4k|        dst += 1;      /* Just past the maps. */
 3425|  19.4k|        dst = (struct miniflow *)((uint64_t *)dst + n_values); /* Skip data. */
 3426|  19.4k|    }
 3427|  19.4k|    return data_size;
 3428|  19.4k|}
miniflow_create:
 3434|  17.5k|{
 3435|  17.5k|    struct miniflow tmp;
 3436|  17.5k|    struct miniflow *dst;
 3437|       |
 3438|  17.5k|    miniflow_map_init(&tmp, src);
 3439|       |
 3440|  17.5k|    miniflow_alloc(&dst, 1, &tmp);
 3441|  17.5k|    miniflow_init(dst, src);
 3442|  17.5k|    return dst;
 3443|  17.5k|}
miniflow_clone:
 3450|  1.95k|{
 3451|  1.95k|    *dst = *src;   /* Copy maps. */
 3452|  1.95k|    memcpy(miniflow_values(dst), miniflow_get_values(src),
 3453|  1.95k|           MINIFLOW_VALUES_SIZE(n_values));
  ------------------
  |  |  526|  1.95k|#define MINIFLOW_VALUES_SIZE(COUNT) ((COUNT) * sizeof(uint64_t))
  ------------------
 3454|  1.95k|}
miniflow_expand:
 3459|  7.80k|{
 3460|  7.80k|    memset(dst, 0, sizeof *dst);
 3461|  7.80k|    flow_union_with_miniflow(dst, src);
 3462|  7.80k|}
miniflow_equal:
 3467|  3.90k|{
 3468|  3.90k|    const uint64_t *ap = miniflow_get_values(a);
 3469|  3.90k|    const uint64_t *bp = miniflow_get_values(b);
 3470|       |
 3471|       |    /* This is mostly called after a matching hash, so it is highly likely that
 3472|       |     * the maps are equal as well. */
 3473|  3.90k|    if (OVS_LIKELY(flowmap_equal(a->map, b->map))) {
  ------------------
  |  |   45|  3.90k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 3.90k, False: 0]
  |  |  ------------------
  ------------------
 3474|  3.90k|        return !memcmp(ap, bp, miniflow_n_values(a) * sizeof *ap);
 3475|  3.90k|    } else {
 3476|      0|        size_t idx;
 3477|       |
 3478|      0|        FLOWMAP_FOR_EACH_INDEX (idx, flowmap_or(a->map, b->map)) {
  ------------------
  |  |  336|      0|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|      0|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|      0|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3479|      0|            if ((flowmap_is_set(&a->map, idx) ? *ap++ : 0)
  ------------------
  |  Branch (3479:17): [True: 0, False: 0]
  |  Branch (3479:18): [True: 0, False: 0]
  ------------------
 3480|      0|                != (flowmap_is_set(&b->map, idx) ? *bp++ : 0)) {
  ------------------
  |  Branch (3480:21): [True: 0, False: 0]
  ------------------
 3481|      0|                return false;
 3482|      0|            }
 3483|      0|        }
 3484|      0|    }
 3485|       |
 3486|      0|    return true;
 3487|  3.90k|}
miniflow_equal_in_minimask:
 3494|  3.90k|{
 3495|  3.90k|    const uint64_t *p = miniflow_get_values(&mask->masks);
 3496|  3.90k|    size_t idx;
 3497|       |
 3498|  32.3k|    FLOWMAP_FOR_EACH_INDEX(idx, mask->masks.map) {
  ------------------
  |  |  336|  3.90k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  3.90k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|  34.3k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 32.3k, False: 1.95k]
  |  |  ------------------
  ------------------
 3499|  32.3k|        if ((miniflow_get(a, idx) ^ miniflow_get(b, idx)) & *p++) {
  ------------------
  |  Branch (3499:13): [True: 1.95k, False: 30.4k]
  ------------------
 3500|  1.95k|            return false;
 3501|  1.95k|        }
 3502|  32.3k|    }
 3503|       |
 3504|  1.95k|    return true;
 3505|  3.90k|}
miniflow_equal_flow_in_minimask:
 3512|  3.90k|{
 3513|  3.90k|    const uint64_t *p = miniflow_get_values(&mask->masks);
 3514|  3.90k|    size_t idx;
 3515|       |
 3516|  32.3k|    FLOWMAP_FOR_EACH_INDEX(idx, mask->masks.map) {
  ------------------
  |  |  336|  3.90k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  3.90k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|  34.3k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 32.3k, False: 1.95k]
  |  |  ------------------
  ------------------
 3517|  32.3k|        if ((miniflow_get(a, idx) ^ flow_u64_value(b, idx)) & *p++) {
  ------------------
  |  Branch (3517:13): [True: 1.95k, False: 30.4k]
  ------------------
 3518|  1.95k|            return false;
 3519|  1.95k|        }
 3520|  32.3k|    }
 3521|       |
 3522|  1.95k|    return true;
 3523|  3.90k|}
minimask_create:
 3536|  13.6k|{
 3537|  13.6k|    return (struct minimask *)miniflow_create(&wc->masks);
 3538|  13.6k|}
minimask_combine:
 3549|  3.90k|{
 3550|  3.90k|    struct miniflow *dst = &dst_->masks;
 3551|  3.90k|    uint64_t *dst_values = storage;
 3552|  3.90k|    const struct miniflow *a = &a_->masks;
 3553|  3.90k|    const struct miniflow *b = &b_->masks;
 3554|  3.90k|    size_t idx;
 3555|       |
 3556|  3.90k|    flowmap_init(&dst->map);
 3557|       |
 3558|  3.90k|    FLOWMAP_FOR_EACH_INDEX(idx, flowmap_and(a->map, b->map)) {
  ------------------
  |  |  336|  3.90k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  3.90k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|  3.90k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 0, False: 3.90k]
  |  |  ------------------
  ------------------
 3559|       |        /* Both 'a' and 'b' have non-zero data at 'idx'. */
 3560|      0|        uint64_t mask = *miniflow_get__(a, idx) & *miniflow_get__(b, idx);
 3561|       |
 3562|      0|        if (mask) {
  ------------------
  |  Branch (3562:13): [True: 0, False: 0]
  ------------------
 3563|      0|            flowmap_set(&dst->map, idx, 1);
 3564|      0|            *dst_values++ = mask;
 3565|      0|        }
 3566|      0|    }
 3567|  3.90k|}
minimask_expand:
 3572|  1.95k|{
 3573|  1.95k|    miniflow_expand(&mask->masks, &wc->masks);
 3574|  1.95k|}
minimask_has_extra:
 3603|  7.74k|{
 3604|  7.74k|    const uint64_t *bp = miniflow_get_values(&b->masks);
 3605|  7.74k|    size_t idx;
 3606|       |
 3607|  23.3k|    FLOWMAP_FOR_EACH_INDEX(idx, b->masks.map) {
  ------------------
  |  |  336|  7.74k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  7.74k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|  27.2k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 23.3k, False: 3.90k]
  |  |  ------------------
  ------------------
 3608|  23.3k|        uint64_t b_u64 = *bp++;
 3609|       |
 3610|       |        /* 'b_u64' is non-zero, check if the data in 'a' is either zero
 3611|       |         * or misses some of the bits in 'b_u64'. */
 3612|  23.3k|        if (!MINIFLOW_IN_MAP(&a->masks, idx)
  ------------------
  |  |  688|  46.6k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  ------------------
  |  Branch (3612:13): [True: 1.93k, False: 21.3k]
  ------------------
 3613|  23.3k|            || ((*miniflow_get__(&a->masks, idx) & b_u64) != b_u64)) {
  ------------------
  |  Branch (3613:16): [True: 1.90k, False: 19.4k]
  ------------------
 3614|  3.84k|            return true; /* 'a' wildcards some bits 'b' doesn't. */
 3615|  3.84k|        }
 3616|  23.3k|    }
 3617|       |
 3618|  3.90k|    return false;
 3619|  7.74k|}
flow.c:parse_ipv6_ext_hdrs__:
  483|    631|{
  484|    631|    *frag_hdr = NULL;
  485|  3.23k|    while (1) {
  ------------------
  |  Branch (485:12): [Folded - Ignored]
  ------------------
  486|  3.23k|        if (OVS_LIKELY((*nw_proto != IPPROTO_HOPOPTS)
  ------------------
  |  |   45|  18.8k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 495, False: 2.74k]
  |  |  |  Branch (45:51): [True: 1.89k, False: 1.34k]
  |  |  |  Branch (45:51): [True: 1.61k, False: 286]
  |  |  |  Branch (45:51): [True: 1.34k, False: 268]
  |  |  |  Branch (45:51): [True: 1.04k, False: 294]
  |  |  |  Branch (45:51): [True: 495, False: 553]
  |  |  ------------------
  ------------------
  487|  3.23k|                       && (*nw_proto != IPPROTO_ROUTING)
  488|  3.23k|                       && (*nw_proto != IPPROTO_DSTOPTS)
  489|  3.23k|                       && (*nw_proto != IPPROTO_AH)
  490|  3.23k|                       && (*nw_proto != IPPROTO_FRAGMENT))) {
  491|       |            /* It's either a terminal header (e.g., TCP, UDP) or one we
  492|       |             * don't understand.  In either case, we're done with the
  493|       |             * packet, so use it to fill in 'nw_proto'. */
  494|    495|            return true;
  495|    495|        }
  496|       |
  497|       |        /* We only verify that at least 8 bytes of the next header are
  498|       |         * available, but many of these headers are longer.  Ensure that
  499|       |         * accesses within the extension header are within those first 8
  500|       |         * bytes. All extension headers are required to be at least 8
  501|       |         * bytes. */
  502|  2.74k|        if (OVS_UNLIKELY(*sizep < 8)) {
  ------------------
  |  |   46|  2.74k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 83, False: 2.66k]
  |  |  ------------------
  ------------------
  503|     83|            return false;
  504|     83|        }
  505|       |
  506|  2.66k|        if ((*nw_proto == IPPROTO_HOPOPTS)
  ------------------
  |  Branch (506:13): [True: 1.29k, False: 1.36k]
  ------------------
  507|  2.66k|            || (*nw_proto == IPPROTO_ROUTING)
  ------------------
  |  Branch (507:16): [True: 277, False: 1.08k]
  ------------------
  508|  2.66k|            || (*nw_proto == IPPROTO_DSTOPTS)) {
  ------------------
  |  Branch (508:16): [True: 260, False: 826]
  ------------------
  509|       |            /* These headers, while different, have the fields we care
  510|       |             * about in the same location and with the same
  511|       |             * interpretation. */
  512|  1.83k|            const struct ip6_ext *ext_hdr = *datap;
  513|  1.83k|            *nw_proto = ext_hdr->ip6e_nxt;
  514|  1.83k|            if (OVS_UNLIKELY(!data_try_pull(datap, sizep,
  ------------------
  |  |   46|  1.83k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 21, False: 1.81k]
  |  |  ------------------
  ------------------
  515|  1.83k|                                            (ext_hdr->ip6e_len + 1) * 8))) {
  516|     21|                return false;
  517|     21|            }
  518|  1.83k|        } else if (*nw_proto == IPPROTO_AH) {
  ------------------
  |  Branch (518:20): [True: 284, False: 542]
  ------------------
  519|       |            /* A standard AH definition isn't available, but the fields
  520|       |             * we care about are in the same location as the generic
  521|       |             * option header--only the header length is calculated
  522|       |             * differently. */
  523|    284|            const struct ip6_ext *ext_hdr = *datap;
  524|    284|            *nw_proto = ext_hdr->ip6e_nxt;
  525|    284|            if (OVS_UNLIKELY(!data_try_pull(datap, sizep,
  ------------------
  |  |   46|    284|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 11, False: 273]
  |  |  ------------------
  ------------------
  526|    284|                                            (ext_hdr->ip6e_len + 2) * 4))) {
  527|     11|                return false;
  528|     11|            }
  529|    542|        } else if (*nw_proto == IPPROTO_FRAGMENT) {
  ------------------
  |  Branch (529:20): [True: 542, False: 0]
  ------------------
  530|    542|            *frag_hdr = *datap;
  531|       |
  532|    542|            *nw_proto = (*frag_hdr)->ip6f_nxt;
  533|    542|            if (!data_try_pull(datap, sizep, sizeof **frag_hdr)) {
  ------------------
  |  Branch (533:17): [True: 0, False: 542]
  ------------------
  534|      0|                return false;
  535|      0|            }
  536|       |
  537|       |            /* We only process the first fragment. */
  538|    542|            if ((*frag_hdr)->ip6f_offlg != htons(0)) {
  ------------------
  |  Branch (538:17): [True: 316, False: 226]
  ------------------
  539|    316|                *nw_frag = FLOW_NW_FRAG_ANY;
  ------------------
  |  |   54|    316|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  ------------------
  540|    316|                if (((*frag_hdr)->ip6f_offlg & IP6F_OFF_MASK) != htons(0)) {
  ------------------
  |  Branch (540:21): [True: 21, False: 295]
  ------------------
  541|     21|                    *nw_frag |= FLOW_NW_FRAG_LATER;
  ------------------
  |  |   55|     21|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  542|     21|                    *nw_proto = IPPROTO_FRAGMENT;
  543|     21|                    return true;
  544|     21|                }
  545|    316|            }
  546|    542|        }
  547|  2.66k|    }
  548|    631|}
flow.c:data_pull:
  110|   618k|{
  111|   618k|    const char *data = *datap;
  112|   618k|    *datap = data + size;
  113|   618k|    *sizep -= size;
  114|   618k|    return data;
  115|   618k|}
flow.c:parse_vlan:
  350|  1.92k|{
  351|  1.92k|    const ovs_be16 *eth_type;
  352|       |
  353|  1.92k|    data_pull(datap, sizep, ETH_ADDR_LEN * 2);
  ------------------
  |  |  205|  1.92k|#define ETH_ADDR_LEN           6
  ------------------
  354|       |
  355|  1.92k|    eth_type = *datap;
  356|       |
  357|  1.92k|    size_t n;
  358|  1.95k|    for (n = 0; eth_type_vlan(*eth_type) && n < flow_vlan_limit; n++) {
  ------------------
  |  Branch (358:17): [True: 37, False: 1.91k]
  |  Branch (358:45): [True: 36, False: 1]
  ------------------
  359|     36|        if (OVS_UNLIKELY(*sizep < sizeof(ovs_be32) + sizeof(ovs_be16))) {
  ------------------
  |  |   46|     36|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 4, False: 32]
  |  |  ------------------
  ------------------
  360|      4|            break;
  361|      4|        }
  362|       |
  363|     32|        memset(vlan_hdrs + n, 0, sizeof(union flow_vlan_hdr));
  364|     32|        const ovs_16aligned_be32 *qp = data_pull(datap, sizep, sizeof *qp);
  365|     32|        vlan_hdrs[n].qtag = get_16aligned_be32(qp);
  366|     32|        vlan_hdrs[n].tci |= htons(VLAN_CFI);
  367|     32|        eth_type = *datap;
  368|     32|    }
  369|  1.92k|    return n;
  370|  1.92k|}
flow.c:parse_ethertype:
  374|  1.92k|{
  375|  1.92k|    const struct llc_snap_header *llc;
  376|  1.92k|    ovs_be16 proto;
  377|       |
  378|  1.92k|    proto = *(ovs_be16 *) data_pull(datap, sizep, sizeof proto);
  379|  1.92k|    if (OVS_LIKELY(ntohs(proto) >= ETH_TYPE_MIN)) {
  ------------------
  |  |   45|  1.92k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 1.79k, False: 128]
  |  |  ------------------
  ------------------
  380|  1.79k|        return proto;
  381|  1.79k|    }
  382|       |
  383|    128|    if (OVS_UNLIKELY(*sizep < sizeof *llc)) {
  ------------------
  |  |   46|    128|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 27, False: 101]
  |  |  ------------------
  ------------------
  384|     27|        return htons(FLOW_DL_TYPE_NONE);
  385|     27|    }
  386|       |
  387|    101|    llc = *datap;
  388|    101|    if (OVS_UNLIKELY(llc->llc.llc_dsap != LLC_DSAP_SNAP
  ------------------
  |  |   46|    478|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 91, False: 10]
  |  |  |  Branch (46:53): [True: 30, False: 71]
  |  |  |  Branch (46:53): [True: 14, False: 57]
  |  |  |  Branch (46:53): [True: 10, False: 47]
  |  |  |  Branch (46:53): [True: 37, False: 10]
  |  |  ------------------
  ------------------
  389|    101|                     || llc->llc.llc_ssap != LLC_SSAP_SNAP
  390|    101|                     || llc->llc.llc_cntl != LLC_CNTL_SNAP
  391|    101|                     || memcmp(llc->snap.snap_org, SNAP_ORG_ETHERNET,
  392|    101|                               sizeof llc->snap.snap_org))) {
  393|     91|        return htons(FLOW_DL_TYPE_NONE);
  394|     91|    }
  395|       |
  396|     10|    data_pull(datap, sizep, sizeof *llc);
  397|       |
  398|     10|    if (OVS_LIKELY(ntohs(llc->snap.snap_type) >= ETH_TYPE_MIN)) {
  ------------------
  |  |   45|     10|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 6, False: 4]
  |  |  ------------------
  ------------------
  399|      6|        return llc->snap.snap_type;
  400|      6|    }
  401|       |
  402|      4|    return htons(FLOW_DL_TYPE_NONE);
  403|     10|}
flow.c:parse_mpls:
  334|     53|{
  335|     53|    const struct mpls_hdr *mh;
  336|     53|    int count = 0;
  337|       |
  338|   608k|    while ((mh = data_try_pull(datap, sizep, sizeof *mh))) {
  ------------------
  |  Branch (338:12): [True: 608k, False: 28]
  ------------------
  339|   608k|        count++;
  340|   608k|        if (mh->mpls_lse.lo & htons(1 << MPLS_BOS_SHIFT)) {
  ------------------
  |  Branch (340:13): [True: 25, False: 608k]
  ------------------
  341|     25|            break;
  342|     25|        }
  343|   608k|    }
  344|     53|    return MIN(count, FLOW_MAX_MPLS_LABELS);
  ------------------
  |  |   96|     53|#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
  |  |  ------------------
  |  |  |  Branch (96:20): [True: 17, False: 36]
  |  |  ------------------
  ------------------
  345|     53|}
flow.c:ipv4_sanity_check:
  650|    714|{
  651|    714|    int ip_len;
  652|    714|    uint16_t tot_len;
  653|       |
  654|    714|    if (OVS_UNLIKELY(size < IP_HEADER_LEN)) {
  ------------------
  |  |   46|    714|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 13, False: 701]
  |  |  ------------------
  ------------------
  655|     13|        COVERAGE_INC(miniflow_extract_ipv4_pkt_too_short);
  ------------------
  |  |   83|     13|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     13|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  656|     13|        return false;
  657|     13|    }
  658|    701|    ip_len = IP_IHL(nh->ip_ihl_ver) * 4;
  ------------------
  |  |  694|    701|#define IP_IHL(ip_ihl_ver) ((ip_ihl_ver) & 15)
  ------------------
  659|       |
  660|    701|    if (OVS_UNLIKELY(ip_len < IP_HEADER_LEN || size < ip_len)) {
  ------------------
  |  |   46|  1.39k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 11, False: 690]
  |  |  |  Branch (46:53): [True: 5, False: 696]
  |  |  |  Branch (46:53): [True: 6, False: 690]
  |  |  ------------------
  ------------------
  661|     11|        COVERAGE_INC(miniflow_extract_ipv4_pkt_len_error);
  ------------------
  |  |   83|     11|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     11|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  662|     11|        return false;
  663|     11|    }
  664|       |
  665|    690|    tot_len = ntohs(nh->ip_tot_len);
  666|    690|    if (OVS_UNLIKELY(tot_len > size || ip_len > tot_len ||
  ------------------
  |  |   46|  2.69k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 63, False: 627]
  |  |  |  Branch (46:53): [True: 18, False: 672]
  |  |  |  Branch (46:53): [True: 26, False: 646]
  |  |  |  Branch (46:53): [True: 19, False: 627]
  |  |  ------------------
  ------------------
  667|    690|                size - tot_len > UINT16_MAX)) {
  668|     63|        COVERAGE_INC(miniflow_extract_ipv4_pkt_len_error);
  ------------------
  |  |   83|     63|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     63|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  669|     63|        return false;
  670|     63|    }
  671|       |
  672|    627|    *ip_lenp = ip_len;
  673|    627|    *tot_lenp = tot_len;
  674|       |
  675|    627|    return true;
  676|    690|}
flow.c:ipv4_get_nw_frag:
  680|    627|{
  681|    627|    uint8_t nw_frag = 0;
  682|       |
  683|    627|    if (OVS_UNLIKELY(IP_IS_FRAGMENT(nh->ip_frag_off))) {
  ------------------
  |  |   46|    627|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 249, False: 378]
  |  |  ------------------
  ------------------
  684|    249|        nw_frag = FLOW_NW_FRAG_ANY;
  ------------------
  |  |   54|    249|#define FLOW_NW_FRAG_ANY   (1 << 0) /* Set for any IP frag. */
  ------------------
  685|    249|        if (nh->ip_frag_off & htons(IP_FRAG_OFF_MASK)) {
  ------------------
  |  Branch (685:13): [True: 114, False: 135]
  ------------------
  686|    114|            nw_frag |= FLOW_NW_FRAG_LATER;
  ------------------
  |  |   55|    114|#define FLOW_NW_FRAG_LATER (1 << 1) /* Set for IP frag with nonzero offset. */
  ------------------
  687|    114|        }
  688|    249|    }
  689|       |
  690|    627|    return nw_frag;
  691|    627|}
flow.c:ipv6_sanity_check:
  695|    683|{
  696|    683|    uint16_t plen;
  697|       |
  698|    683|    if (OVS_UNLIKELY(size < sizeof *nh)) {
  ------------------
  |  |   46|    683|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 12, False: 671]
  |  |  ------------------
  ------------------
  699|     12|        COVERAGE_INC(miniflow_extract_ipv6_pkt_too_short);
  ------------------
  |  |   83|     12|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     12|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  700|     12|        return false;
  701|     12|    }
  702|       |
  703|    671|    plen = ntohs(nh->ip6_plen);
  704|    671|    if (OVS_UNLIKELY(plen + IPV6_HEADER_LEN > size)) {
  ------------------
  |  |   46|    671|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 29, False: 642]
  |  |  ------------------
  ------------------
  705|     29|        COVERAGE_INC(miniflow_extract_ipv6_pkt_len_error);
  ------------------
  |  |   83|     29|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     29|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  706|     29|        return false;
  707|     29|    }
  708|       |
  709|    642|    if (OVS_UNLIKELY(size - (plen + IPV6_HEADER_LEN) > UINT16_MAX)) {
  ------------------
  |  |   46|    642|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 11, False: 631]
  |  |  ------------------
  ------------------
  710|     11|        COVERAGE_INC(miniflow_extract_ipv6_pkt_len_error);
  ------------------
  |  |   83|     11|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     11|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  711|     11|        return false;
  712|     11|    }
  713|       |
  714|    631|    return true;
  715|    642|}
flow.c:data_try_pull:
  122|   613k|{
  123|   613k|    return OVS_LIKELY(*sizep >= size) ? data_pull(datap, sizep, size) : NULL;
  ------------------
  |  |   45|   613k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 613k, False: 76]
  |  |  ------------------
  ------------------
  124|   613k|}
flow.c:parse_icmpv6:
  413|    209|{
  414|    209|    if (icmp6->icmp6_base.icmp6_code != 0 ||
  ------------------
  |  Branch (414:9): [True: 20, False: 189]
  ------------------
  415|    209|        (icmp6->icmp6_base.icmp6_type != ND_NEIGHBOR_SOLICIT &&
  ------------------
  |  Branch (415:10): [True: 122, False: 67]
  ------------------
  416|    189|         icmp6->icmp6_base.icmp6_type != ND_NEIGHBOR_ADVERT)) {
  ------------------
  |  Branch (416:10): [True: 24, False: 98]
  ------------------
  417|     44|        return false;
  418|     44|    }
  419|       |
  420|    165|    arp_buf[0] = eth_addr_zero;
  421|    165|    arp_buf[1] = eth_addr_zero;
  422|    165|    *opt_type = 0;
  423|       |
  424|    165|    *rso_flags = get_16aligned_be32(icmp6->icmp6_data.be32);
  425|       |
  426|    165|    *nd_target = data_try_pull(datap, sizep, sizeof **nd_target);
  427|    165|    if (OVS_UNLIKELY(!*nd_target)) {
  ------------------
  |  |   46|    165|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 5, False: 160]
  |  |  ------------------
  ------------------
  428|      5|        return true;
  429|      5|    }
  430|       |
  431|  1.55k|    while (*sizep >= 8) {
  ------------------
  |  Branch (431:12): [True: 1.47k, False: 77]
  ------------------
  432|       |        /* The minimum size of an option is 8 bytes, which also is
  433|       |         * the size of Ethernet link-layer options. */
  434|  1.47k|        const struct ovs_nd_lla_opt *lla_opt = *datap;
  435|  1.47k|        int opt_len = lla_opt->len * ND_LLA_OPT_LEN;
  ------------------
  |  | 1016|  1.47k|#define ND_LLA_OPT_LEN 8
  ------------------
  436|       |
  437|  1.47k|        if (!opt_len || opt_len > *sizep) {
  ------------------
  |  Branch (437:13): [True: 20, False: 1.45k]
  |  Branch (437:25): [True: 25, False: 1.43k]
  ------------------
  438|     45|            return true;
  439|     45|        }
  440|       |
  441|       |        /* Store the link layer address if the appropriate option is
  442|       |         * provided.  It is considered an error if the same link
  443|       |         * layer option is specified twice. */
  444|  1.43k|        if (lla_opt->type == ND_OPT_SOURCE_LINKADDR && opt_len == 8) {
  ------------------
  |  Branch (444:13): [True: 567, False: 866]
  |  Branch (444:56): [True: 350, False: 217]
  ------------------
  445|    350|            if (OVS_LIKELY(eth_addr_is_zero(arp_buf[0]))) {
  ------------------
  |  |   45|    350|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 332, False: 18]
  |  |  ------------------
  ------------------
  446|    332|                arp_buf[0] = lla_opt->mac;
  447|       |                /* We use only first option type present in ND packet. */
  448|    332|                if (*opt_type == 0) {
  ------------------
  |  Branch (448:21): [True: 38, False: 294]
  ------------------
  449|     38|                    *opt_type = lla_opt->type;
  450|     38|                }
  451|    332|            } else {
  452|     18|                goto invalid;
  453|     18|            }
  454|  1.08k|        } else if (lla_opt->type == ND_OPT_TARGET_LINKADDR && opt_len == 8) {
  ------------------
  |  Branch (454:20): [True: 518, False: 565]
  |  Branch (454:63): [True: 291, False: 227]
  ------------------
  455|    291|            if (OVS_LIKELY(eth_addr_is_zero(arp_buf[1]))) {
  ------------------
  |  |   45|    291|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 271, False: 20]
  |  |  ------------------
  ------------------
  456|    271|                arp_buf[1] = lla_opt->mac;
  457|       |                /* We use only first option type present in ND packet. */
  458|    271|                if (*opt_type == 0) {
  ------------------
  |  Branch (458:21): [True: 33, False: 238]
  ------------------
  459|     33|                    *opt_type = lla_opt->type;
  460|     33|                }
  461|    271|            } else {
  462|     20|                goto invalid;
  463|     20|            }
  464|    291|        }
  465|       |
  466|  1.39k|        if (OVS_UNLIKELY(!data_try_pull(datap, sizep, opt_len))) {
  ------------------
  |  |   46|  1.39k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 1.39k]
  |  |  ------------------
  ------------------
  467|      0|            return true;
  468|      0|        }
  469|  1.39k|    }
  470|     77|    return true;
  471|       |
  472|     38|invalid:
  473|     38|    *nd_target = NULL;
  474|     38|    arp_buf[0] = eth_addr_zero;
  475|     38|    arp_buf[1] = eth_addr_zero;
  476|     38|    return true;
  477|    160|}

miniflow_target.c:miniflow_get_vid:
  825|  3.90k|{
  826|  3.90k|    if (n < FLOW_MAX_VLAN_HEADERS) {
  ------------------
  |  |   75|  3.90k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
  |  Branch (826:9): [True: 3.90k, False: 0]
  ------------------
  827|  3.90k|        union flow_vlan_hdr hdr = {
  828|  3.90k|            .qtag = MINIFLOW_GET_BE32(flow, vlans[n].qtag)
  ------------------
  |  |  722|  3.90k|    MINIFLOW_GET_TYPE(FLOW, ovs_be32, FIELD)
  |  |  ------------------
  |  |  |  |  693|  3.90k|    (BUILD_ASSERT(sizeof(TYPE) == sizeof(((struct flow *)0)->FIELD)),   \
  |  |  |  |  ------------------
  |  |  |  |  |  |  270|  3.90k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  ------------------
  |  |  |  |  694|  3.90k|     BUILD_ASSERT_GCCONLY(__builtin_types_compatible_p(TYPE, typeof(((struct flow *)0)->FIELD))), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  280|  3.90k|#define BUILD_ASSERT_GCCONLY(EXPR) BUILD_ASSERT(EXPR)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  270|  3.90k|#define BUILD_ASSERT(EXPR) (void) ({ _Static_assert(EXPR, #EXPR); })
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  695|  3.90k|     MINIFLOW_GET_TYPE__(MF, TYPE, FIELD))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|  3.90k|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  688|  3.90k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (688:34): [True: 58, False: 3.84k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  702|  3.90k|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     58|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  703|     58|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   64|     58|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  3.90k|     : 0)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  829|  3.90k|        };
  830|  3.90k|        return vlan_tci_to_vid(hdr.tci);
  831|  3.90k|    }
  832|      0|    return 0;
  833|  3.90k|}
miniflow_target.c:flowmap_is_set:
  354|   167k|{
  355|   167k|    return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  269|   167k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
                  return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  270|   167k|#define MAP_1 (map_t)1
  ------------------
                  return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  269|   167k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  356|   167k|}
miniflow_target.c:miniflow_get__:
  677|  9.87k|{
  678|  9.87k|    const uint64_t *values = miniflow_get_values(mf);
  679|  9.87k|    const map_t *map = mf->map.bits;
  680|       |
  681|  15.7k|    while (idx >= MAP_T_BITS) {
  ------------------
  |  |  269|  15.7k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  |  Branch (681:12): [True: 5.88k, False: 9.87k]
  ------------------
  682|  5.88k|        idx -= MAP_T_BITS;
  ------------------
  |  |  269|  5.88k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  683|  5.88k|        values += count_1bits(*map++);
  684|  5.88k|    }
  685|  9.87k|    return miniflow_values_get__(values, *map, idx);
  686|  9.87k|}
miniflow_target.c:miniflow_get_values:
  534|  23.5k|{
  535|  23.5k|    return (const uint64_t *)(mf + 1);
  536|  23.5k|}
miniflow_target.c:miniflow_values_get__:
  669|  9.87k|{
  670|  9.87k|    return values + count_1bits(map & ((MAP_1 << idx) - 1));
  ------------------
  |  |  270|  9.87k|#define MAP_1 (map_t)1
  ------------------
  671|  9.87k|}
miniflow_target.c:miniflow_get:
  799|   163k|{
  800|   163k|    return MINIFLOW_IN_MAP(flow, u64_ofs) ? *miniflow_get__(flow, u64_ofs) : 0;
  ------------------
  |  |  688|   163k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  ------------------
  |  |  |  Branch (688:34): [True: 9.81k, False: 154k]
  |  |  ------------------
  ------------------
  801|   163k|}
miniflow_target.c:flow_equal:
  183|  3.90k|{
  184|  3.90k|    return !flow_compare_3way(a, b);
  185|  3.90k|}
miniflow_target.c:flow_compare_3way:
  177|  3.90k|{
  178|  3.90k|    return memcmp(a, b, sizeof *a);
  179|  3.90k|}
miniflow_target.c:miniflow_n_values:
  567|  7.80k|{
  568|  7.80k|    return flowmap_n_1bits(flow->map);
  569|  7.80k|}
miniflow_target.c:flowmap_n_1bits:
  461|  7.80k|{
  462|  7.80k|    unsigned int n_1bits = 0;
  463|  7.80k|    size_t unit;
  464|       |
  465|  15.6k|    FLOWMAP_FOR_EACH_UNIT (unit) {
  ------------------
  |  |  319|  23.4k|    for ((UNIT) = 0; (UNIT) < FLOWMAP_UNITS; (UNIT)++)
  |  |  ------------------
  |  |  |  |  279|  23.4k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  23.4k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (319:22): [True: 15.6k, False: 7.80k]
  |  |  ------------------
  ------------------
  466|  15.6k|        n_1bits += count_1bits(fm.bits[unit]);
  467|  15.6k|    }
  468|  7.80k|    return n_1bits;
  469|  7.80k|}
miniflow_target.c:flowmap_next_index:
  478|  55.9k|{
  479|  61.7k|    for (;;) {
  480|  61.7k|        map_t *map = &aux->map.bits[aux->unit];
  481|  61.7k|        if (*map) {
  ------------------
  |  Branch (481:13): [True: 50.0k, False: 11.7k]
  ------------------
  482|  50.0k|            *idx = aux->unit * MAP_T_BITS + raw_ctz(*map);
  ------------------
  |  |  269|  50.0k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  483|  50.0k|            *map = zero_rightmost_1bit(*map);
  484|  50.0k|            return true;
  485|  50.0k|        }
  486|  11.7k|        if (++aux->unit >= FLOWMAP_UNITS) {
  ------------------
  |  |  279|  11.7k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|  11.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  |  Branch (486:13): [True: 5.85k, False: 5.85k]
  ------------------
  487|  5.85k|            return false;
  488|  5.85k|        }
  489|  11.7k|    }
  490|  55.9k|}
miniflow_target.c:flowmap_set:
  384|  50.0k|{
  385|  50.0k|    map_t n_bits_mask = (MAP_1 << n_bits) - 1;
  ------------------
  |  |  270|  50.0k|#define MAP_1 (map_t)1
  ------------------
  386|  50.0k|    size_t unit = idx / MAP_T_BITS;
  ------------------
  |  |  269|  50.0k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  387|       |
  388|  50.0k|    idx %= MAP_T_BITS;
  ------------------
  |  |  269|  50.0k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  389|       |
  390|  50.0k|    fm->bits[unit] |= n_bits_mask << idx;
  391|       |    /* The seemingly unnecessary bounds check on 'unit' is a workaround for a
  392|       |     * false-positive array out of bounds error by GCC 4.9. */
  393|  50.0k|    if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  279|  50.0k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|   100k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
                  if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  269|  27.4k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  |  Branch (393:9): [True: 27.4k, False: 22.5k]
  |  Branch (393:37): [True: 0, False: 27.4k]
  ------------------
  394|       |        /* 'MAP_T_BITS - idx' bits were set on 'unit', set the remaining
  395|       |         * bits from the next unit. */
  396|      0|        fm->bits[unit + 1] |= n_bits_mask >> (MAP_T_BITS - idx);
  ------------------
  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  397|      0|    }
  398|  50.0k|}
miniflow_target.c:minimask_is_catchall:
  788|  11.7k|{
  789|       |    /* For every 1-bit in mask's map, the corresponding value is non-zero,
  790|       |     * so the only way the mask can not fix any bits or fields is for the
  791|       |     * map the be zero. */
  792|  11.7k|    return flowmap_is_empty(mask->masks.map);
  793|  11.7k|}
miniflow_target.c:flowmap_is_empty:
  448|  11.7k|{
  449|  11.7k|    map_t map;
  450|       |
  451|  17.6k|    FLOWMAP_FOR_EACH_MAP (map, fm) {
  ------------------
  |  |  323|  11.7k|    for (size_t unit__ = 0;                                       \
  |  |  324|  23.5k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  279|  23.5k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  47.0k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (324:10): [True: 17.6k, False: 5.91k]
  |  |  |  Branch (324:36): [True: 17.6k, False: 0]
  |  |  ------------------
  |  |  325|  11.8k|         unit__++)
  ------------------
  452|  17.6k|        if (map) {
  ------------------
  |  Branch (452:13): [True: 5.79k, False: 11.8k]
  ------------------
  453|  5.79k|            return false;
  454|  5.79k|        }
  455|  17.6k|    }
  456|  5.91k|    return true;
  457|  11.7k|}
miniflow_target.c:mf_get_next_in_map:
  620|  32.3k|{
  621|  32.3k|    map_t *map, *fmap;
  622|  32.3k|    map_t rm1bit;
  623|       |
  624|       |    /* Skip empty map units. */
  625|  34.3k|    while (OVS_UNLIKELY(!*(map = &aux->map.bits[aux->unit]))) {
  ------------------
  |  |   46|  34.3k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 3.90k, False: 30.4k]
  |  |  ------------------
  ------------------
  626|       |        /* Skip remaining data in the current unit before advancing
  627|       |         * to the next. */
  628|  3.90k|        aux->values += count_1bits(aux->fmap.bits[aux->unit]);
  629|  3.90k|        if (++aux->unit == FLOWMAP_UNITS) {
  ------------------
  |  |  279|  3.90k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|  3.90k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  |  Branch (629:13): [True: 1.95k, False: 1.95k]
  ------------------
  630|  1.95k|            return false;
  631|  1.95k|        }
  632|  3.90k|    }
  633|       |
  634|  30.4k|    rm1bit = rightmost_1bit(*map);
  635|  30.4k|    *map -= rm1bit;
  636|  30.4k|    fmap = &aux->fmap.bits[aux->unit];
  637|       |
  638|       |    /* If the rightmost 1-bit found from the current unit in 'aux->map'
  639|       |     * ('rm1bit') is also present in 'aux->fmap', store the corresponding
  640|       |     * value from 'aux->values' to '*value', otherwise store 0. */
  641|  30.4k|    if (OVS_LIKELY(*fmap & rm1bit)) {
  ------------------
  |  |   45|  30.4k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 9.34k, False: 21.0k]
  |  |  ------------------
  ------------------
  642|       |        /* Skip all 64-bit words in 'values' preceding the one corresponding
  643|       |         * to 'rm1bit'. */
  644|  9.34k|        map_t trash = *fmap & (rm1bit - 1);
  645|       |
  646|       |        /* Avoid resetting 'fmap' and calling count_1bits() when trash is
  647|       |         * zero. */
  648|  9.34k|        if (trash) {
  ------------------
  |  Branch (648:13): [True: 6.12k, False: 3.22k]
  ------------------
  649|  6.12k|            *fmap -= trash;
  650|  6.12k|            aux->values += count_1bits(trash);
  651|  6.12k|        }
  652|       |
  653|  9.34k|        *value = *aux->values;
  654|  21.0k|    } else {
  655|  21.0k|        *value = 0;
  656|  21.0k|    }
  657|  30.4k|    return true;
  658|  32.3k|}
flow.c:miniflow_values:
  529|  21.4k|{
  530|  21.4k|    return (uint64_t *)(mf + 1);
  531|  21.4k|}
flow.c:flowmap_set:
  384|   112k|{
  385|   112k|    map_t n_bits_mask = (MAP_1 << n_bits) - 1;
  ------------------
  |  |  270|   112k|#define MAP_1 (map_t)1
  ------------------
  386|   112k|    size_t unit = idx / MAP_T_BITS;
  ------------------
  |  |  269|   112k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  387|       |
  388|   112k|    idx %= MAP_T_BITS;
  ------------------
  |  |  269|   112k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  389|       |
  390|   112k|    fm->bits[unit] |= n_bits_mask << idx;
  391|       |    /* The seemingly unnecessary bounds check on 'unit' is a workaround for a
  392|       |     * false-positive array out of bounds error by GCC 4.9. */
  393|   112k|    if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  279|   112k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|   224k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
                  if (unit + 1 < FLOWMAP_UNITS && idx + n_bits > MAP_T_BITS) {
  ------------------
  |  |  269|  60.8k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  |  Branch (393:9): [True: 60.8k, False: 51.5k]
  |  Branch (393:37): [True: 0, False: 60.8k]
  ------------------
  394|       |        /* 'MAP_T_BITS - idx' bits were set on 'unit', set the remaining
  395|       |         * bits from the next unit. */
  396|      0|        fm->bits[unit + 1] |= n_bits_mask >> (MAP_T_BITS - idx);
  ------------------
  |  |  269|      0|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  397|      0|    }
  398|   112k|}
flow.c:odp_to_u32:
  201|  1.95k|{
  202|  1.95k|    return (OVS_FORCE uint32_t) odp_port;
  203|  1.95k|}
flow.c:is_nd:
 1109|    683|{
 1110|    683|    if (is_icmpv6(flow, wc)) {
  ------------------
  |  Branch (1110:9): [True: 32, False: 651]
  ------------------
 1111|     32|        if (wc) {
  ------------------
  |  Branch (1111:13): [True: 32, False: 0]
  ------------------
 1112|     32|            memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst);
 1113|     32|        }
 1114|     32|        if (flow->tp_dst != htons(0)) {
  ------------------
  |  Branch (1114:13): [True: 9, False: 23]
  ------------------
 1115|      9|            return false;
 1116|      9|        }
 1117|       |
 1118|     23|        if (wc) {
  ------------------
  |  Branch (1118:13): [True: 23, False: 0]
  ------------------
 1119|     23|            memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src);
 1120|     23|        }
 1121|     23|        return (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT) ||
  ------------------
  |  Branch (1121:17): [True: 5, False: 18]
  ------------------
 1122|     23|                flow->tp_src == htons(ND_NEIGHBOR_ADVERT));
  ------------------
  |  Branch (1122:17): [True: 4, False: 14]
  ------------------
 1123|     32|    }
 1124|    651|    return false;
 1125|    683|}
flow.c:is_icmpv6:
 1097|    683|{
 1098|    683|    if (get_dl_type(flow) == htons(ETH_TYPE_IPV6)) {
  ------------------
  |  Branch (1098:9): [True: 683, False: 0]
  ------------------
 1099|    683|        if (wc) {
  ------------------
  |  Branch (1099:13): [True: 683, False: 0]
  ------------------
 1100|    683|            memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto);
 1101|    683|        }
 1102|    683|        return flow->nw_proto == IPPROTO_ICMPV6;
 1103|    683|    }
 1104|      0|    return false;
 1105|    683|}
flow.c:get_dl_type:
 1026|    683|{
 1027|    683|    if (flow->packet_type == htonl(PT_ETH)) {
  ------------------
  |  Branch (1027:9): [True: 683, False: 0]
  ------------------
 1028|    683|        return flow->dl_type;
 1029|    683|    } else if (pt_ns(flow->packet_type) == OFPHTN_ETHERTYPE) {
  ------------------
  |  Branch (1029:16): [True: 0, False: 0]
  ------------------
 1030|      0|        return pt_ns_type_be(flow->packet_type);
 1031|      0|    } else {
 1032|      0|        return htons(FLOW_DL_TYPE_NONE);
 1033|      0|    }
 1034|    683|}
flow.c:flowmap_init:
  342|  21.4k|{
  343|  21.4k|    memset(fm, 0, sizeof *fm);
  344|  21.4k|}
flow.c:flow_equal:
  183|  1.95k|{
  184|  1.95k|    return !flow_compare_3way(a, b);
  185|  1.95k|}
flow.c:flow_compare_3way:
  177|  1.95k|{
  178|  1.95k|    return memcmp(a, b, sizeof *a);
  179|  1.95k|}
flow.c:flowmap_is_set:
  354|   126k|{
  355|   126k|    return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  269|   126k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
                  return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  270|   126k|#define MAP_1 (map_t)1
  ------------------
                  return (fm->bits[idx / MAP_T_BITS] & (MAP_1 << (idx % MAP_T_BITS))) != 0;
  ------------------
  |  |  269|   126k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  356|   126k|}
flow.c:miniflow_get__:
  677|  56.4k|{
  678|  56.4k|    const uint64_t *values = miniflow_get_values(mf);
  679|  56.4k|    const map_t *map = mf->map.bits;
  680|       |
  681|  87.5k|    while (idx >= MAP_T_BITS) {
  ------------------
  |  |  269|  87.5k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  |  Branch (681:12): [True: 31.0k, False: 56.4k]
  ------------------
  682|  31.0k|        idx -= MAP_T_BITS;
  ------------------
  |  |  269|  31.0k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  683|  31.0k|        values += count_1bits(*map++);
  684|  31.0k|    }
  685|  56.4k|    return miniflow_values_get__(values, *map, idx);
  686|  56.4k|}
flow.c:miniflow_values_get__:
  669|  56.4k|{
  670|  56.4k|    return values + count_1bits(map & ((MAP_1 << idx) - 1));
  ------------------
  |  |  270|  56.4k|#define MAP_1 (map_t)1
  ------------------
  671|  56.4k|}
flow.c:miniflow_get_values:
  534|  90.2k|{
  535|  90.2k|    return (const uint64_t *)(mf + 1);
  536|  90.2k|}
flow.c:mf_get_next_in_map:
  620|  3.41k|{
  621|  3.41k|    map_t *map, *fmap;
  622|  3.41k|    map_t rm1bit;
  623|       |
  624|       |    /* Skip empty map units. */
  625|  4.09k|    while (OVS_UNLIKELY(!*(map = &aux->map.bits[aux->unit]))) {
  ------------------
  |  |   46|  4.09k|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 1.36k, False: 2.73k]
  |  |  ------------------
  ------------------
  626|       |        /* Skip remaining data in the current unit before advancing
  627|       |         * to the next. */
  628|  1.36k|        aux->values += count_1bits(aux->fmap.bits[aux->unit]);
  629|  1.36k|        if (++aux->unit == FLOWMAP_UNITS) {
  ------------------
  |  |  279|  1.36k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|  1.36k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  |  Branch (629:13): [True: 683, False: 683]
  ------------------
  630|    683|            return false;
  631|    683|        }
  632|  1.36k|    }
  633|       |
  634|  2.73k|    rm1bit = rightmost_1bit(*map);
  635|  2.73k|    *map -= rm1bit;
  636|  2.73k|    fmap = &aux->fmap.bits[aux->unit];
  637|       |
  638|       |    /* If the rightmost 1-bit found from the current unit in 'aux->map'
  639|       |     * ('rm1bit') is also present in 'aux->fmap', store the corresponding
  640|       |     * value from 'aux->values' to '*value', otherwise store 0. */
  641|  2.73k|    if (OVS_LIKELY(*fmap & rm1bit)) {
  ------------------
  |  |   45|  2.73k|#define OVS_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1)
  |  |  ------------------
  |  |  |  Branch (45:31): [True: 2.45k, False: 273]
  |  |  ------------------
  ------------------
  642|       |        /* Skip all 64-bit words in 'values' preceding the one corresponding
  643|       |         * to 'rm1bit'. */
  644|  2.45k|        map_t trash = *fmap & (rm1bit - 1);
  645|       |
  646|       |        /* Avoid resetting 'fmap' and calling count_1bits() when trash is
  647|       |         * zero. */
  648|  2.45k|        if (trash) {
  ------------------
  |  Branch (648:13): [True: 1.82k, False: 630]
  ------------------
  649|  1.82k|            *fmap -= trash;
  650|  1.82k|            aux->values += count_1bits(trash);
  651|  1.82k|        }
  652|       |
  653|  2.45k|        *value = *aux->values;
  654|  2.45k|    } else {
  655|    273|        *value = 0;
  656|    273|    }
  657|  2.73k|    return true;
  658|  3.41k|}
flow.c:miniflow_get_ports:
  896|    882|{
  897|    882|    return MINIFLOW_GET_TYPE__(flow, ovs_be32, tp_src);
  ------------------
  |  |  701|    882|    (MINIFLOW_IN_MAP(MF, FLOW_U64_OFFSET(FIELD))                        \
  |  |  ------------------
  |  |  |  |  688|    882|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (688:34): [True: 789, False: 93]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  702|    882|     ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, FLOW_U64_OFFSET(FIELD))) \
  |  |  ------------------
  |  |  |  |   62|    789|    (offsetof(struct flow, FIELD) / sizeof(uint64_t))
  |  |  ------------------
  |  |  703|    789|     [FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)]                            \
  |  |  ------------------
  |  |  |  |   64|    789|    (offsetof(struct flow, FIELD) % sizeof(uint64_t))
  |  |  ------------------
  |  |  704|    882|     : 0)
  ------------------
  898|    882|}
flow.c:flowmap_next_index:
  478|   217k|{
  479|   246k|    for (;;) {
  480|   246k|        map_t *map = &aux->map.bits[aux->unit];
  481|   246k|        if (*map) {
  ------------------
  |  Branch (481:13): [True: 188k, False: 58.4k]
  ------------------
  482|   188k|            *idx = aux->unit * MAP_T_BITS + raw_ctz(*map);
  ------------------
  |  |  269|   188k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  483|   188k|            *map = zero_rightmost_1bit(*map);
  484|   188k|            return true;
  485|   188k|        }
  486|  58.4k|        if (++aux->unit >= FLOWMAP_UNITS) {
  ------------------
  |  |  279|  58.4k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  ------------------
  |  |  |  |  296|  58.4k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  ------------------
  ------------------
  |  Branch (486:13): [True: 29.2k, False: 29.2k]
  ------------------
  487|  29.2k|            return false;
  488|  29.2k|        }
  489|  58.4k|    }
  490|   217k|}
flow.c:flow_u64_value:
  556|  1.60M|{
  557|  1.60M|    return ((uint64_t *)flow)[index];
  558|  1.60M|}
flow.c:miniflow_n_values:
  567|  23.3k|{
  568|  23.3k|    return flowmap_n_1bits(flow->map);
  569|  23.3k|}
flow.c:flowmap_n_1bits:
  461|  23.3k|{
  462|  23.3k|    unsigned int n_1bits = 0;
  463|  23.3k|    size_t unit;
  464|       |
  465|  46.7k|    FLOWMAP_FOR_EACH_UNIT (unit) {
  ------------------
  |  |  319|  70.1k|    for ((UNIT) = 0; (UNIT) < FLOWMAP_UNITS; (UNIT)++)
  |  |  ------------------
  |  |  |  |  279|  70.1k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  70.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (319:22): [True: 46.7k, False: 23.3k]
  |  |  ------------------
  ------------------
  466|  46.7k|        n_1bits += count_1bits(fm.bits[unit]);
  467|  46.7k|    }
  468|  23.3k|    return n_1bits;
  469|  23.3k|}
flow.c:flow_union_with_miniflow:
  937|  7.80k|{
  938|  7.80k|    flow_union_with_miniflow_subset(dst, src, src->map);
  939|  7.80k|}
flow.c:flow_union_with_miniflow_subset:
  918|  7.80k|{
  919|  7.80k|    uint64_t *dst_u64 = (uint64_t *) dst;
  920|  7.80k|    const uint64_t *p = miniflow_get_values(src);
  921|  7.80k|    map_t map;
  922|       |
  923|  15.6k|    FLOWMAP_FOR_EACH_MAP (map, subset) {
  ------------------
  |  |  323|  7.80k|    for (size_t unit__ = 0;                                       \
  |  |  324|  23.4k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  279|  23.4k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  46.8k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (324:10): [True: 15.6k, False: 7.80k]
  |  |  |  Branch (324:36): [True: 15.6k, False: 0]
  |  |  ------------------
  |  |  325|  15.6k|         unit__++)
  ------------------
  924|  15.6k|        size_t idx;
  925|       |
  926|  33.7k|        MAP_FOR_EACH_INDEX(idx, map) {
  ------------------
  |  |  277|  15.6k|    ULLONG_FOR_EACH_1(IDX, MAP)
  |  |  ------------------
  |  |  |  |  285|  15.6k|    for (uint64_t map__ = (MAP);                    \
  |  |  |  |  286|  49.3k|         map__ && (((IDX) = raw_ctz(map__)), true); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (286:10): [True: 33.7k, False: 15.6k]
  |  |  |  |  |  Branch (286:19): [True: 33.7k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  287|  33.7k|         map__ = zero_rightmost_1bit(map__))
  |  |  ------------------
  ------------------
  927|  33.7k|            dst_u64[idx] |= *p++;
  928|  33.7k|        }
  929|  15.6k|        dst_u64 += MAP_T_BITS;
  ------------------
  |  |  269|  15.6k|#define MAP_T_BITS (sizeof(map_t) * CHAR_BIT)
  ------------------
  930|  15.6k|    }
  931|  7.80k|}
flow.c:flowmap_equal:
  348|  3.90k|{
  349|  3.90k|    return !memcmp(&a, &b, sizeof a);
  350|  3.90k|}
flow.c:miniflow_get:
  799|  97.1k|{
  800|  97.1k|    return MINIFLOW_IN_MAP(flow, u64_ofs) ? *miniflow_get__(flow, u64_ofs) : 0;
  ------------------
  |  |  688|  97.1k|#define MINIFLOW_IN_MAP(MF, IDX) flowmap_is_set(&(MF)->map, IDX)
  |  |  ------------------
  |  |  |  Branch (688:34): [True: 29.9k, False: 67.1k]
  |  |  ------------------
  ------------------
  801|  97.1k|}
flow.c:flowmap_and:
  436|  3.90k|{
  437|  3.90k|    struct flowmap map;
  438|  3.90k|    size_t unit;
  439|       |
  440|  7.80k|    FLOWMAP_FOR_EACH_UNIT (unit) {
  ------------------
  |  |  319|  11.7k|    for ((UNIT) = 0; (UNIT) < FLOWMAP_UNITS; (UNIT)++)
  |  |  ------------------
  |  |  |  |  279|  11.7k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  11.7k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (319:22): [True: 7.80k, False: 3.90k]
  |  |  ------------------
  ------------------
  441|  7.80k|        map.bits[unit] = a.bits[unit] & b.bits[unit];
  442|  7.80k|    }
  443|  3.90k|    return map;
  444|  3.90k|}

hash_bytes:
   31|      1|{
   32|      1|    const uint32_t *p = p_;
   33|      1|    size_t orig_n = n;
   34|      1|    uint32_t hash;
   35|       |
   36|      1|    hash = basis;
   37|      3|    while (n >= 4) {
  ------------------
  |  Branch (37:12): [True: 2, False: 1]
  ------------------
   38|      2|        hash = hash_add(hash, get_unaligned_u32(p));
   39|      2|        n -= 4;
   40|      2|        p += 1;
   41|      2|    }
   42|       |
   43|      1|    if (n) {
  ------------------
  |  Branch (43:9): [True: 0, False: 1]
  ------------------
   44|      0|        uint32_t tmp = 0;
   45|       |
   46|      0|        memcpy(&tmp, p, n);
   47|      0|        hash = hash_add(hash, tmp);
   48|      0|    }
   49|       |
   50|      1|    return hash_finish(hash, orig_n);
   51|      1|}

miniflow_target.c:hash_add64:
  113|   156k|{
  114|   156k|    return hash_add(hash_add(hash, data), data >> 32);
  115|   156k|}
miniflow_target.c:hash_add:
  108|   313k|{
  109|   313k|    return mhash_add(hash, data);
  110|   313k|}
miniflow_target.c:mhash_add:
   77|   313k|{
   78|   313k|    hash = mhash_add__(hash, data);
   79|   313k|    hash = hash_rot(hash, 13);
   80|   313k|    return hash * 5 + 0xe6546b64;
   81|   313k|}
miniflow_target.c:mhash_add__:
   64|   313k|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|   313k|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 119k, False: 194k]
  ------------------
   67|   119k|        return hash;
   68|   119k|    }
   69|       |
   70|   194k|    data *= 0xcc9e2d51;
   71|   194k|    data = hash_rot(data, 15);
   72|   194k|    data *= 0x1b873593;
   73|   194k|    return hash ^ data;
   74|   313k|}
miniflow_target.c:hash_rot:
   31|   508k|{
   32|   508k|    return (x << k) | (x >> (32 - k));
   33|   508k|}
miniflow_target.c:hash_finish:
  118|  11.7k|{
  119|  11.7k|    return mhash_finish(hash ^ final);
  120|  11.7k|}
miniflow_target.c:mhash_finish:
   84|  11.7k|{
   85|  11.7k|    hash ^= hash >> 16;
   86|  11.7k|    hash *= 0x85ebca6b;
   87|  11.7k|    hash ^= hash >> 13;
   88|  11.7k|    hash *= 0xc2b2ae35;
   89|  11.7k|    hash ^= hash >> 16;
   90|  11.7k|    return hash;
   91|  11.7k|}
flow.c:hash_add64:
  113|  4.18k|{
  114|  4.18k|    return hash_add(hash_add(hash, data), data >> 32);
  115|  4.18k|}
flow.c:hash_add:
  108|  13.8k|{
  109|  13.8k|    return mhash_add(hash, data);
  110|  13.8k|}
flow.c:mhash_add:
   77|  13.8k|{
   78|  13.8k|    hash = mhash_add__(hash, data);
   79|  13.8k|    hash = hash_rot(hash, 13);
   80|  13.8k|    return hash * 5 + 0xe6546b64;
   81|  13.8k|}
flow.c:mhash_add__:
   64|  13.8k|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|  13.8k|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 1.76k, False: 12.1k]
  ------------------
   67|  1.76k|        return hash;
   68|  1.76k|    }
   69|       |
   70|  12.1k|    data *= 0xcc9e2d51;
   71|  12.1k|    data = hash_rot(data, 15);
   72|  12.1k|    data *= 0x1b873593;
   73|  12.1k|    return hash ^ data;
   74|  13.8k|}
flow.c:hash_rot:
   31|  25.9k|{
   32|  25.9k|    return (x << k) | (x >> (32 - k));
   33|  25.9k|}
flow.c:hash_finish:
  118|  2.52k|{
  119|  2.52k|    return mhash_finish(hash ^ final);
  120|  2.52k|}
flow.c:mhash_finish:
   84|  2.52k|{
   85|  2.52k|    hash ^= hash >> 16;
   86|  2.52k|    hash *= 0x85ebca6b;
   87|  2.52k|    hash ^= hash >> 13;
   88|  2.52k|    hash *= 0xc2b2ae35;
   89|  2.52k|    hash ^= hash >> 16;
   90|  2.52k|    return hash;
   91|  2.52k|}
hash.c:hash_finish:
  118|      1|{
  119|      1|    return mhash_finish(hash ^ final);
  120|      1|}
hash.c:mhash_finish:
   84|      1|{
   85|      1|    hash ^= hash >> 16;
   86|      1|    hash *= 0x85ebca6b;
   87|      1|    hash ^= hash >> 13;
   88|      1|    hash *= 0xc2b2ae35;
   89|      1|    hash ^= hash >> 16;
   90|      1|    return hash;
   91|      1|}
hash.c:hash_add:
  108|      2|{
  109|      2|    return mhash_add(hash, data);
  110|      2|}
hash.c:mhash_add:
   77|      2|{
   78|      2|    hash = mhash_add__(hash, data);
   79|      2|    hash = hash_rot(hash, 13);
   80|      2|    return hash * 5 + 0xe6546b64;
   81|      2|}
hash.c:mhash_add__:
   64|      2|{
   65|       |    /* zero-valued 'data' will not change the 'hash' value */
   66|      2|    if (!data) {
  ------------------
  |  Branch (66:9): [True: 0, False: 2]
  ------------------
   67|      0|        return hash;
   68|      0|    }
   69|       |
   70|      2|    data *= 0xcc9e2d51;
   71|      2|    data = hash_rot(data, 15);
   72|      2|    data *= 0x1b873593;
   73|      2|    return hash ^ data;
   74|      2|}
hash.c:hash_rot:
   31|      4|{
   32|      4|    return (x << k) | (x >> (32 - k));
   33|      4|}

ovs_mutex_lock_at:
   60|    170|    { \
   61|    170|        struct ovs_##TYPE *l = CONST_CAST(struct ovs_##TYPE *, l_); \
  ------------------
  |  |   81|    170|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|    170|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|    170|     (TYPE) (POINTER))
  ------------------
   62|    170|        int error; \
   63|    170| \
   64|    170|        /* Verify that 'l' was initialized. */ \
   65|    170|        if (OVS_UNLIKELY(!l->where)) { \
  ------------------
  |  |   46|    170|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 170]
  |  |  ------------------
  ------------------
   66|      0|            ovs_abort(0, "%s: %s() passed uninitialized ovs_"#TYPE, \
   67|      0|                      where, __func__); \
   68|      0|        } \
   69|    170| \
   70|    170|        error = pthread_##TYPE##_##FUN(&l->lock); \
   71|    170|        if (OVS_UNLIKELY(error)) { \
  ------------------
  |  |   46|    170|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 170]
  |  |  ------------------
  ------------------
   72|      0|            ovs_abort(error, "%s: pthread_%s_%s failed", where, #TYPE, #FUN); \
   73|      0|        } \
   74|    170|        l->where = where; \
   75|    170| }
ovs_mutex_unlock:
  118|    170|    { \
  119|    170|        struct ovs_##TYPE *l = CONST_CAST(struct ovs_##TYPE *, l_); \
  ------------------
  |  |   81|    170|    (BUILD_ASSERT_TYPE(POINTER, TYPE),                          \
  |  |  ------------------
  |  |  |  |   76|    170|    ((void) sizeof ((int) ((POINTER) == (TYPE) (POINTER))))
  |  |  ------------------
  |  |   82|    170|     (TYPE) (POINTER))
  ------------------
  120|    170|        int error; \
  121|    170| \
  122|    170|        /* Verify that 'l' was initialized. */ \
  123|    170|        ovs_assert(l->where); \
  ------------------
  |  |   58|    170|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  124|    170| \
  125|    170|        l->where = WHERE; \
  126|    170|        error = pthread_##TYPE##_##FUN(&l->lock); \
  127|    170|        if (OVS_UNLIKELY(error)) { \
  ------------------
  |  |   46|    170|#define OVS_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0)
  |  |  ------------------
  |  |  |  Branch (46:33): [True: 0, False: 170]
  |  |  ------------------
  ------------------
  128|      0|            ovs_abort(error, "pthread_%s_%s failed", #TYPE, #FUN); \
  129|      0|        } \
  130|    170|    }

flow.c:counter_flow_extract_get:
  248|  1.95k|    {                                                                   \
  249|  1.95k|        return NAME##_get_unsafe();                                     \
  250|  1.95k|    }
flow.c:counter_flow_extract_get_unsafe:
  241|  1.95k|    {                                                                   \
  242|  1.95k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|  1.95k|        return &var;                                                    \
  244|  1.95k|    }                                                                   \
flow.c:counter_miniflow_extract_ipv4_pkt_len_error_get:
  248|     74|    {                                                                   \
  249|     74|        return NAME##_get_unsafe();                                     \
  250|     74|    }
flow.c:counter_miniflow_extract_ipv4_pkt_len_error_get_unsafe:
  241|     74|    {                                                                   \
  242|     74|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|     74|        return &var;                                                    \
  244|     74|    }                                                                   \
flow.c:counter_miniflow_extract_ipv4_pkt_too_short_get:
  248|     13|    {                                                                   \
  249|     13|        return NAME##_get_unsafe();                                     \
  250|     13|    }
flow.c:counter_miniflow_extract_ipv4_pkt_too_short_get_unsafe:
  241|     13|    {                                                                   \
  242|     13|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|     13|        return &var;                                                    \
  244|     13|    }                                                                   \
flow.c:counter_miniflow_extract_ipv6_pkt_len_error_get:
  248|     40|    {                                                                   \
  249|     40|        return NAME##_get_unsafe();                                     \
  250|     40|    }
flow.c:counter_miniflow_extract_ipv6_pkt_len_error_get_unsafe:
  241|     40|    {                                                                   \
  242|     40|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|     40|        return &var;                                                    \
  244|     40|    }                                                                   \
flow.c:counter_miniflow_extract_ipv6_pkt_too_short_get:
  248|     12|    {                                                                   \
  249|     12|        return NAME##_get_unsafe();                                     \
  250|     12|    }
flow.c:counter_miniflow_extract_ipv6_pkt_too_short_get_unsafe:
  241|     12|    {                                                                   \
  242|     12|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|     12|        return &var;                                                    \
  244|     12|    }                                                                   \
flow.c:counter_miniflow_malloc_get:
  248|  19.4k|    {                                                                   \
  249|  19.4k|        return NAME##_get_unsafe();                                     \
  250|  19.4k|    }
flow.c:counter_miniflow_malloc_get_unsafe:
  241|  19.4k|    {                                                                   \
  242|  19.4k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|  19.4k|        return &var;                                                    \
  244|  19.4k|    }                                                                   \
random.c:seed_get:
  248|   206k|    {                                                                   \
  249|   206k|        return NAME##_get_unsafe();                                     \
  250|   206k|    }
random.c:seed_get_unsafe:
  241|   413k|    {                                                                   \
  242|   413k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|   413k|        return &var;                                                    \
  244|   413k|    }                                                                   \
util.c:counter_util_xalloc_get:
  248|  19.4k|    {                                                                   \
  249|  19.4k|        return NAME##_get_unsafe();                                     \
  250|  19.4k|    }
util.c:counter_util_xalloc_get_unsafe:
  241|  19.4k|    {                                                                   \
  242|  19.4k|        static thread_local NAME##_type var = __VA_ARGS__;              \
  243|  19.4k|        return &var;                                                    \
  244|  19.4k|    }                                                                   \

miniflow_target.c:vlan_tci_to_vid:
  507|  7.80k|{
  508|  7.80k|    return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  494|  7.80k|#define VLAN_VID_MASK 0x0fff
  ------------------
                  return (ntohs(vlan_tci) & VLAN_VID_MASK) >> VLAN_VID_SHIFT;
  ------------------
  |  |  495|  7.80k|#define VLAN_VID_SHIFT 0
  ------------------
  509|  7.80k|}
dp-packet.c:pkt_metadata_init:
  165|  1.95k|{
  166|       |    /* This is called for every packet in userspace datapath and affects
  167|       |     * performance if all the metadata is initialized. Hence, fields should
  168|       |     * only be zeroed out when necessary.
  169|       |     *
  170|       |     * Initialize only till ct_state. Once the ct_state is zeroed out rest
  171|       |     * of ct fields will not be looked at unless ct_state != 0.
  172|       |     */
  173|  1.95k|    memset(md, 0, offsetof(struct pkt_metadata, ct_orig_tuple_ipv6));
  174|       |
  175|       |    /* It can be expensive to zero out all of the tunnel metadata. However,
  176|       |     * we can just zero out ip_dst and the rest of the data will never be
  177|       |     * looked at. */
  178|  1.95k|    md->tunnel.ip_dst = 0;
  179|  1.95k|    md->tunnel.ipv6_dst = in6addr_any;
  180|  1.95k|    md->in_port.odp_port = port;
  181|  1.95k|    md->orig_in_port = port;
  182|  1.95k|    md->conn = NULL;
  183|  1.95k|}
flow.c:flow_tnl_dst_is_set:
   51|  3.90k|{
   52|  3.90k|    return tnl->ip_dst || ipv6_addr_is_set(&tnl->ipv6_dst);
  ------------------
  |  Branch (52:12): [True: 0, False: 3.90k]
  |  Branch (52:27): [True: 0, False: 3.90k]
  ------------------
   53|  3.90k|}
flow.c:eth_type_vlan:
  429|  1.95k|{
  430|  1.95k|    return eth_type == htons(ETH_TYPE_VLAN_8021Q) ||
  ------------------
  |  Branch (430:12): [True: 22, False: 1.93k]
  ------------------
  431|  1.95k|        eth_type == htons(ETH_TYPE_VLAN_8021AD);
  ------------------
  |  Branch (431:9): [True: 15, False: 1.91k]
  ------------------
  432|  1.95k|}
flow.c:eth_type_mpls:
  423|  2.39k|{
  424|  2.39k|    return eth_type == htons(ETH_TYPE_MPLS) ||
  ------------------
  |  Branch (424:12): [True: 32, False: 2.36k]
  ------------------
  425|  2.39k|        eth_type == htons(ETH_TYPE_MPLS_MCAST);
  ------------------
  |  Branch (425:9): [True: 74, False: 2.28k]
  ------------------
  426|  2.39k|}
flow.c:eth_addr_is_zero:
  246|    641|{
  247|    641|    return !(a.be16[0] | a.be16[1] | a.be16[2]);
  248|    641|}
flow.c:ipv6_addr_is_set:
 1172|  3.90k|static inline bool ipv6_addr_is_set(const struct in6_addr *addr) {
 1173|  3.90k|    return !ipv6_addr_equals(addr, &in6addr_any);
 1174|  3.90k|}
flow.c:ipv6_addr_equals:
 1151|  3.90k|{
 1152|  3.90k|#ifdef IN6_ARE_ADDR_EQUAL
 1153|  3.90k|    return IN6_ARE_ADDR_EQUAL(a, b);
 1154|       |#else
 1155|       |    return !memcmp(a, b, sizeof(*a));
 1156|       |#endif
 1157|  3.90k|}

random_init:
   48|   206k|{
   49|   206k|    uint32_t *seedp = seed_get();
   50|   206k|    while (!*seedp) {
  ------------------
  |  Branch (50:12): [True: 1, False: 206k]
  ------------------
   51|      1|        struct timeval tv;
   52|      1|        uint32_t entropy;
   53|      1|        pthread_t self;
   54|       |
   55|      1|        xgettimeofday(&tv);
   56|      1|        get_entropy_or_die(&entropy, 4);
   57|      1|        self = pthread_self();
   58|       |
   59|      1|        *seedp = (tv.tv_sec ^ tv.tv_usec ^ entropy
   60|      1|                  ^ hash_bytes(&self, sizeof self, 0));
   61|      1|    }
   62|   206k|}
random_uint32:
   92|   206k|{
   93|   206k|    random_init();
   94|   206k|    return random_next();
   95|   206k|}
random.c:random_next:
  111|   206k|{
  112|   206k|    uint32_t *seedp = seed_get_unsafe();
  113|       |
  114|   206k|    *seedp ^= *seedp << 13;
  115|   206k|    *seedp ^= *seedp >> 17;
  116|   206k|    *seedp ^= *seedp << 5;
  117|       |
  118|   206k|    return *seedp;
  119|   206k|}

miniflow_target.c:random_range:
   32|   206k|{
   33|   206k|    return random_uint32() % max;
   34|   206k|}

read_fully:
  816|      1|{
  817|      1|    uint8_t *p = p_;
  818|       |
  819|      1|    *bytes_read = 0;
  820|      2|    while (size > 0) {
  ------------------
  |  Branch (820:12): [True: 1, False: 1]
  ------------------
  821|      1|        ssize_t retval = read(fd, p, size);
  822|      1|        if (retval > 0) {
  ------------------
  |  Branch (822:13): [True: 1, False: 0]
  ------------------
  823|      1|            *bytes_read += retval;
  824|      1|            size -= retval;
  825|      1|            p += retval;
  826|      1|        } else if (retval == 0) {
  ------------------
  |  Branch (826:20): [True: 0, False: 0]
  ------------------
  827|      0|            return EOF;
  828|      0|        } else if (errno != EINTR) {
  ------------------
  |  Branch (828:20): [True: 0, False: 0]
  ------------------
  829|      0|            return errno;
  830|      0|        }
  831|      1|    }
  832|      1|    return 0;
  833|      1|}

xgettimeofday:
  486|      1|{
  487|      1|#ifndef _WIN32
  488|      1|    if (gettimeofday(tv, NULL) == -1) {
  ------------------
  |  Branch (488:9): [True: 0, False: 1]
  ------------------
  489|      0|        VLOG_FATAL("gettimeofday failed (%s)", ovs_strerror(errno));
  ------------------
  |  |  204|      0|#define VLOG_FATAL(...) vlog_fatal(&this_module, __VA_ARGS__)
  ------------------
  490|      0|    }
  491|       |#else
  492|       |    ULARGE_INTEGER current_time = xgetfiletime();
  493|       |
  494|       |    tv->tv_sec = (current_time.QuadPart - unix_epoch) / 10000000;
  495|       |    tv->tv_usec = ((current_time.QuadPart - unix_epoch) %
  496|       |                   10000000) / 10;
  497|       |#endif
  498|      1|}

flow.c:get_16aligned_be32:
  246|    865|{
  247|       |#ifdef WORDS_BIGENDIAN
  248|       |    return ((ovs_be32) x->hi << 16) | x->lo;
  249|       |#else
  250|    865|    return ((ovs_be32) x->lo << 16) | x->hi;
  251|    865|#endif
  252|    865|}
hash.c:get_unaligned_u32:
   74|      2|get_unaligned_##ABBREV(const TYPE *p)           \
   75|      2|{                                               \
   76|      2|    return unaligned_##ABBREV(p)->x;            \
   77|      2|}                                               \
hash.c:unaligned_u32:
   68|      2|unaligned_##ABBREV(const TYPE *p)               \
   69|      2|{                                               \
   70|      2|    return (struct unaligned_##ABBREV *) p;     \
   71|      2|}                                               \

xmalloc__:
  139|  19.4k|{
  140|  19.4k|    void *p = malloc(size ? size : 1);
  ------------------
  |  Branch (140:22): [True: 19.4k, False: 0]
  ------------------
  141|  19.4k|    if (p == NULL) {
  ------------------
  |  Branch (141:9): [True: 0, False: 19.4k]
  ------------------
  142|      0|        out_of_memory();
  143|      0|    }
  144|  19.4k|    return p;
  145|  19.4k|}
xrealloc__:
  149|     16|{
  150|     16|    p = realloc(p, size ? size : 1);
  ------------------
  |  Branch (150:20): [True: 16, False: 0]
  ------------------
  151|     16|    if (p == NULL) {
  ------------------
  |  Branch (151:9): [True: 0, False: 16]
  ------------------
  152|      0|        out_of_memory();
  153|      0|    }
  154|     16|    return p;
  155|     16|}
xmalloc:
  173|  19.4k|{
  174|  19.4k|    COVERAGE_INC(util_xalloc);
  ------------------
  |  |   83|  19.4k|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|  19.4k|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  175|  19.4k|    return xmalloc__(size);
  176|  19.4k|}
xrealloc:
  180|     16|{
  181|     16|    COVERAGE_INC(util_xalloc);
  ------------------
  |  |   83|     16|#define COVERAGE_INC(COUNTER) COVERAGE_ADD(COUNTER, 1)
  |  |  ------------------
  |  |  |  |   86|     16|#define COVERAGE_ADD(COUNTER, AMOUNT) COUNTER##_add(AMOUNT)
  |  |  ------------------
  ------------------
  182|     16|    return xrealloc__(p, size);
  183|     16|}
x2nrealloc:
  240|     16|{
  241|     16|    *n = *n == 0 ? 1 : 2 * *n;
  ------------------
  |  Branch (241:10): [True: 2, False: 14]
  ------------------
  242|     16|    return xrealloc(p, *n * s);
  243|     16|}
ignore:
 1309|  1.95k|void ignore(bool x OVS_UNUSED) { }

miniflow_target.c:count_1bits:
  388|  41.3k|{
  389|       |#if (__GNUC__ >= 4 && __POPCNT__) || (defined(__aarch64__) && __GNUC__ >= 7)
  390|       |    return __builtin_popcountll(x);
  391|       |#elif defined(__aarch64__) && __GNUC__ >= 6
  392|       |    return vaddv_u8(vcnt_u8(vcreate_u8(x)));
  393|       |#else
  394|       |    /* This portable implementation is the fastest one we know of for 64
  395|       |     * bits, and about 3x faster than GCC 4.7 __builtin_popcountll(). */
  396|  41.3k|    const uint64_t h55 = UINT64_C(0x5555555555555555);
  397|  41.3k|    const uint64_t h33 = UINT64_C(0x3333333333333333);
  398|  41.3k|    const uint64_t h0F = UINT64_C(0x0F0F0F0F0F0F0F0F);
  399|  41.3k|    const uint64_t h01 = UINT64_C(0x0101010101010101);
  400|  41.3k|    x -= (x >> 1) & h55;               /* Count of each 2 bits in-place. */
  401|  41.3k|    x = (x & h33) + ((x >> 2) & h33);  /* Count of each 4 bits in-place. */
  402|  41.3k|    x = (x + (x >> 4)) & h0F;          /* Count of each 8 bits in-place. */
  403|  41.3k|    return (x * h01) >> 56;            /* Sum of all bytes. */
  404|  41.3k|#endif
  405|  41.3k|}
miniflow_target.c:raw_ctz:
  281|  80.4k|{
  282|       |    /* With GCC 4.7 on 32-bit x86, if a 32-bit integer is passed as 'n', using
  283|       |     * a plain __builtin_ctzll() here always generates an out-of-line function
  284|       |     * call.  The test below helps it to emit a single 'bsf' instruction. */
  285|  80.4k|    return (__builtin_constant_p(n <= UINT32_MAX) && n <= UINT32_MAX
  ------------------
  |  Branch (285:13): [True: 0, False: 80.4k]
  |  Branch (285:54): [True: 0, False: 0]
  ------------------
  286|  80.4k|            ? __builtin_ctz(n)
  287|  80.4k|            : __builtin_ctzll(n));
  288|  80.4k|}
miniflow_target.c:zero_rightmost_1bit:
  446|  80.4k|{
  447|  80.4k|    return x & (x - 1);
  448|  80.4k|}
miniflow_target.c:rightmost_1bit:
  438|  30.4k|{
  439|  30.4k|    return x & -x;
  440|  30.4k|}
flow.c:rightmost_1bit:
  438|  2.73k|{
  439|  2.73k|    return x & -x;
  440|  2.73k|}
flow.c:count_1bits:
  388|   137k|{
  389|       |#if (__GNUC__ >= 4 && __POPCNT__) || (defined(__aarch64__) && __GNUC__ >= 7)
  390|       |    return __builtin_popcountll(x);
  391|       |#elif defined(__aarch64__) && __GNUC__ >= 6
  392|       |    return vaddv_u8(vcnt_u8(vcreate_u8(x)));
  393|       |#else
  394|       |    /* This portable implementation is the fastest one we know of for 64
  395|       |     * bits, and about 3x faster than GCC 4.7 __builtin_popcountll(). */
  396|   137k|    const uint64_t h55 = UINT64_C(0x5555555555555555);
  397|   137k|    const uint64_t h33 = UINT64_C(0x3333333333333333);
  398|   137k|    const uint64_t h0F = UINT64_C(0x0F0F0F0F0F0F0F0F);
  399|   137k|    const uint64_t h01 = UINT64_C(0x0101010101010101);
  400|   137k|    x -= (x >> 1) & h55;               /* Count of each 2 bits in-place. */
  401|   137k|    x = (x & h33) + ((x >> 2) & h33);  /* Count of each 4 bits in-place. */
  402|   137k|    x = (x + (x >> 4)) & h0F;          /* Count of each 8 bits in-place. */
  403|   137k|    return (x * h01) >> 56;            /* Sum of all bytes. */
  404|   137k|#endif
  405|   137k|}
flow.c:raw_ctz:
  281|   222k|{
  282|       |    /* With GCC 4.7 on 32-bit x86, if a 32-bit integer is passed as 'n', using
  283|       |     * a plain __builtin_ctzll() here always generates an out-of-line function
  284|       |     * call.  The test below helps it to emit a single 'bsf' instruction. */
  285|   222k|    return (__builtin_constant_p(n <= UINT32_MAX) && n <= UINT32_MAX
  ------------------
  |  Branch (285:13): [True: 0, False: 222k]
  |  Branch (285:54): [True: 0, False: 0]
  ------------------
  286|   222k|            ? __builtin_ctz(n)
  287|   222k|            : __builtin_ctzll(n));
  288|   222k|}
flow.c:zero_rightmost_1bit:
  446|   222k|{
  447|   222k|    return x & (x - 1);
  448|   222k|}

vlog_insert_module:
  217|    170|{
  218|    170|    ovs_mutex_lock(&log_file_mutex);
  ------------------
  |  |   71|    170|        ovs_mutex_lock_at(mutex, OVS_SOURCE_LOCATOR)
  |  |  ------------------
  |  |  |  |   37|    170|#define OVS_SOURCE_LOCATOR __FILE__ ":" OVS_STRINGIZE(__LINE__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|    170|#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   39|    170|#define OVS_STRINGIZE2(ARG) #ARG
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|    170|    ovs_list_insert(&vlog_modules, vlog);
  220|    170|    ovs_mutex_unlock(&log_file_mutex);
  221|    170|}
vlog_is_enabled:
  982|    139|{
  983|    139|    return module->min_level >= level;
  984|    139|}

LLVMFuzzerTestOneInput:
  235|  1.95k|{
  236|  1.95k|    struct dp_packet packet;
  237|  1.95k|    struct flow flow;
  238|  1.95k|    dp_packet_use_const(&packet, data, size);
  239|  1.95k|    flow_extract(&packet, &flow);
  240|       |
  241|       |    /* Do miniflow tests. */
  242|  1.95k|    test_miniflow(&flow);
  243|  1.95k|    test_minimask_has_extra(&flow);
  244|  1.95k|    test_minimask_combine(&flow);
  245|       |
  246|  1.95k|    return 0;
  247|  1.95k|}
miniflow_target.c:test_miniflow:
   92|  1.95k|{
   93|  1.95k|    struct miniflow *miniflow, *miniflow2, *miniflow3;
   94|  1.95k|    struct flow flow2, flow3;
   95|  1.95k|    struct flow_wildcards mask;
   96|  1.95k|    struct minimask *minimask;
   97|  1.95k|    int i;
   98|       |
   99|  1.95k|    const uint64_t *flow_u64 = (const uint64_t *) flow;
  100|       |
  101|       |    /* Convert flow to miniflow. */
  102|  1.95k|    miniflow = miniflow_create(flow);
  103|       |
  104|       |    /* Obtain miniflow hash. */
  105|  1.95k|    uint32_t hash = miniflow_hash_5tuple(miniflow, 0);
  106|  1.95k|    ignore(hash);
  107|       |
  108|       |    /* Check that the flow equals its miniflow. */
  109|  5.85k|    for (i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) {
  ------------------
  |  |   75|  5.85k|#define FLOW_MAX_VLAN_HEADERS 2
  ------------------
  |  Branch (109:17): [True: 3.90k, False: 1.95k]
  ------------------
  110|  3.90k|        ovs_assert(miniflow_get_vid(miniflow, i) ==
  ------------------
  |  |   58|  3.90k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  111|  3.90k|               vlan_tci_to_vid(flow->vlans[i].tci));
  112|  3.90k|    }
  113|   165k|    for (i = 0; i < FLOW_U64S; i++) {
  ------------------
  |  |  165|   165k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  ------------------
  |  Branch (113:17): [True: 163k, False: 1.95k]
  ------------------
  114|   163k|        ovs_assert(miniflow_get(miniflow, i) == flow_u64[i]);
  ------------------
  |  |   58|   163k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  115|   163k|    }
  116|       |
  117|       |    /* Check that the miniflow equals itself. */
  118|  1.95k|    ovs_assert(miniflow_equal(miniflow, miniflow));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  119|       |
  120|       |    /* Convert miniflow back to flow and verify that it's the same. */
  121|  1.95k|    miniflow_expand(miniflow, &flow2);
  122|  1.95k|    ovs_assert(flow_equal(flow, &flow2));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  123|       |    /* Check that copying a miniflow works properly. */
  124|  1.95k|    miniflow2 = miniflow_clone__(miniflow);
  125|  1.95k|    ovs_assert(miniflow_equal(miniflow, miniflow2));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  126|  1.95k|    ovs_assert(miniflow_hash__(miniflow, 0) == miniflow_hash__(miniflow2, 0));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  127|  1.95k|    miniflow_expand(miniflow2, &flow3);
  128|  1.95k|    ovs_assert(flow_equal(flow, &flow3));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  129|       |
  130|       |    /* Check that masked matches work as expected for identical flows and
  131|       |         * miniflows. */
  132|  1.95k|    flow_wildcards_init_for_packet(&mask, flow);
  133|       |    /* Ensure that mask is not catchall just in case
  134|       |     * flow_wildcards_init_for_packet returns a catchall mask
  135|       |     */
  136|  1.95k|    uint64_t *mask_u64 = (uint64_t *) &mask.masks;
  137|  1.95k|    mask_u64[0] = 1;
  138|  1.95k|    ovs_assert(!flow_wildcards_is_catchall(&mask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  139|  1.95k|    minimask = minimask_create(&mask);
  140|  1.95k|    ovs_assert(!minimask_is_catchall(minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  141|  1.95k|    ovs_assert(miniflow_equal_in_minimask(miniflow, miniflow2, minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  142|  1.95k|    ovs_assert(miniflow_equal_flow_in_minimask(miniflow, &flow2, minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  143|  1.95k|    ovs_assert(miniflow_hash_in_minimask(miniflow, minimask, 0x12345678) ==
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  144|  1.95k|           flow_hash_in_minimask(flow, minimask, 0x12345678));
  145|  1.95k|    ovs_assert(minimask_hash(minimask, 0) ==
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  146|  1.95k|           miniflow_hash__(&minimask->masks, 0));
  147|       |
  148|       |    /* Check that masked matches work as expected for differing flows and
  149|       |     * miniflows. */
  150|  1.95k|    toggle_masked_flow_bits(&flow2, &mask);
  151|  1.95k|    ovs_assert(!miniflow_equal_flow_in_minimask(miniflow, &flow2, minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  152|  1.95k|    miniflow3 = miniflow_create(&flow2);
  153|  1.95k|    ovs_assert(!miniflow_equal_in_minimask(miniflow, miniflow3, minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  154|       |
  155|  1.95k|    free(miniflow);
  156|  1.95k|    free(miniflow2);
  157|  1.95k|    free(miniflow3);
  158|  1.95k|    free(minimask);
  159|  1.95k|}
miniflow_target.c:miniflow_clone__:
   16|  1.95k|{
   17|  1.95k|    struct miniflow *dst;
   18|  1.95k|    size_t data_size;
   19|       |
   20|  1.95k|    data_size = miniflow_alloc(&dst, 1, src);
   21|  1.95k|    miniflow_clone(dst, src, data_size / sizeof(uint64_t));
   22|  1.95k|    return dst;
   23|  1.95k|}
miniflow_target.c:miniflow_hash__:
   28|  5.85k|{
   29|  5.85k|    const uint64_t *p = miniflow_get_values(flow);
   30|  5.85k|    size_t n_values = miniflow_n_values(flow);
   31|  5.85k|    struct flowmap hash_map = FLOWMAP_EMPTY_INITIALIZER;
  ------------------
  |  |  285|  5.85k|#define FLOWMAP_EMPTY_INITIALIZER { { 0 } }
  ------------------
   32|  5.85k|    uint32_t hash = basis;
   33|  5.85k|    size_t idx;
   34|       |
   35|  50.0k|    FLOWMAP_FOR_EACH_INDEX (idx, flow->map) {
  ------------------
  |  |  336|  5.85k|    for (struct flowmap_aux aux__ = FLOWMAP_AUX_INITIALIZER(MAP);   \
  |  |  ------------------
  |  |  |  |  330|  5.85k|#define FLOWMAP_AUX_INITIALIZER(FLOWMAP) { .unit = 0, .map = (FLOWMAP) }
  |  |  ------------------
  |  |  337|  55.9k|         flowmap_next_index(&aux__, &(IDX));)
  |  |  ------------------
  |  |  |  Branch (337:10): [True: 50.0k, False: 5.85k]
  |  |  ------------------
  ------------------
   36|  50.0k|        uint64_t value = *p++;
   37|       |
   38|  50.0k|        if (value) {
  ------------------
  |  Branch (38:13): [True: 50.0k, False: 0]
  ------------------
   39|  50.0k|            hash = hash_add64(hash, value);
   40|  50.0k|            flowmap_set(&hash_map, idx, 1);
   41|  50.0k|        }
   42|  50.0k|    }
   43|  5.85k|    map_t map;
   44|  11.7k|    FLOWMAP_FOR_EACH_MAP (map, hash_map) {
  ------------------
  |  |  323|  5.85k|    for (size_t unit__ = 0;                                       \
  |  |  324|  17.5k|         unit__ < FLOWMAP_UNITS && ((MAP) = (FLOWMAP).bits[unit__], true); \
  |  |  ------------------
  |  |  |  |  279|  17.5k|#define FLOWMAP_UNITS DIV_ROUND_UP(FLOW_U64S, MAP_T_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  296|  35.1k|#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (324:10): [True: 11.7k, False: 5.85k]
  |  |  |  Branch (324:36): [True: 11.7k, False: 0]
  |  |  ------------------
  |  |  325|  11.7k|         unit__++)
  ------------------
   45|  11.7k|        hash = hash_add64(hash, map);
   46|  11.7k|    }
   47|       |
   48|  5.85k|    return hash_finish(hash, n_values);
   49|  5.85k|}
miniflow_target.c:toggle_masked_flow_bits:
   55|  1.95k|{
   56|  1.95k|    const uint32_t *mask_u32 = (const uint32_t *) &mask->masks;
   57|  1.95k|    uint32_t *flow_u32 = (uint32_t *) flow;
   58|  1.95k|    int i;
   59|       |
   60|   329k|    for (i = 0; i < FLOW_U32S; i++) {
  ------------------
  |  |   51|   329k|#define FLOW_U32S (FLOW_U64S * 2)
  |  |  ------------------
  |  |  |  |  165|   329k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  |  |  ------------------
  ------------------
  |  Branch (60:17): [True: 327k, False: 1.95k]
  ------------------
   61|   327k|        if (mask_u32[i] != 0) {
  ------------------
  |  Branch (61:13): [True: 55.0k, False: 272k]
  ------------------
   62|  55.0k|            uint32_t bit;
   63|       |
   64|   119k|            do {
   65|   119k|                bit = 1u << random_range(32);
   66|   119k|            } while (!(bit & mask_u32[i]));
  ------------------
  |  Branch (66:22): [True: 64.0k, False: 55.0k]
  ------------------
   67|  55.0k|            flow_u32[i] ^= bit;
   68|  55.0k|        }
   69|   327k|    }
   70|  1.95k|}
miniflow_target.c:test_minimask_has_extra:
  163|  1.95k|{
  164|  1.95k|    struct flow_wildcards catchall;
  165|  1.95k|    struct minimask *minicatchall;
  166|       |
  167|  1.95k|    flow_wildcards_init_catchall(&catchall);
  168|  1.95k|    minicatchall = minimask_create(&catchall);
  169|  1.95k|    ovs_assert(minimask_is_catchall(minicatchall));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  170|       |
  171|  1.95k|    struct flow_wildcards mask;
  172|  1.95k|    struct minimask *minimask;
  173|       |
  174|  1.95k|    mask.masks = *flow;
  175|  1.95k|    minimask = minimask_create(&mask);
  176|  1.95k|    ovs_assert(!minimask_has_extra(minimask, minimask));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  177|  1.95k|    ovs_assert(minimask_has_extra(minicatchall, minimask)
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  178|  1.95k|           == !minimask_is_catchall(minimask));
  179|  1.95k|    if (!minimask_is_catchall(minimask)) {
  ------------------
  |  Branch (179:9): [True: 1.92k, False: 29]
  ------------------
  180|  1.92k|        struct minimask *minimask2;
  181|       |
  182|  1.92k|        wildcard_extra_bits(&mask);
  183|  1.92k|        minimask2 = minimask_create(&mask);
  184|  1.92k|        ovs_assert(minimask_has_extra(minimask2, minimask));
  ------------------
  |  |   58|  1.92k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  185|  1.92k|        ovs_assert(!minimask_has_extra(minimask, minimask2));
  ------------------
  |  |   58|  1.92k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  186|  1.92k|        free(minimask2);
  187|  1.92k|    }
  188|       |
  189|  1.95k|    free(minimask);
  190|  1.95k|    free(minicatchall);
  191|  1.95k|}
miniflow_target.c:wildcard_extra_bits:
   74|  1.92k|{
   75|  1.92k|    uint32_t *mask_u32 = (uint32_t *) &mask->masks;
   76|  1.92k|    int i;
   77|       |
   78|   324k|    for (i = 0; i < FLOW_U32S; i++) {
  ------------------
  |  |   51|   324k|#define FLOW_U32S (FLOW_U64S * 2)
  |  |  ------------------
  |  |  |  |  165|   324k|#define FLOW_U64S (sizeof(struct flow) / sizeof(uint64_t))
  |  |  ------------------
  ------------------
  |  Branch (78:17): [True: 322k, False: 1.92k]
  ------------------
   79|   322k|        if (mask_u32[i] != 0) {
  ------------------
  |  Branch (79:13): [True: 17.1k, False: 305k]
  ------------------
   80|  17.1k|            uint32_t bit;
   81|       |
   82|  87.5k|            do {
   83|  87.5k|                bit = 1u << random_range(32);
   84|  87.5k|            } while (!(bit & mask_u32[i]));
  ------------------
  |  Branch (84:22): [True: 70.3k, False: 17.1k]
  ------------------
   85|  17.1k|            mask_u32[i] &= ~bit;
   86|  17.1k|        }
   87|   322k|    }
   88|  1.92k|}
miniflow_target.c:test_minimask_combine:
  195|  1.95k|{
  196|  1.95k|    struct flow_wildcards catchall;
  197|  1.95k|    struct minimask *minicatchall;
  198|       |
  199|  1.95k|    flow_wildcards_init_catchall(&catchall);
  200|  1.95k|    minicatchall = minimask_create(&catchall);
  201|  1.95k|    ovs_assert(minimask_is_catchall(minicatchall));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  202|       |
  203|  1.95k|    struct minimask *minimask, *minimask2;
  204|  1.95k|    struct flow_wildcards mask, mask2, combined, combined2;
  205|  1.95k|    struct {
  206|  1.95k|        struct minimask minicombined;
  207|  1.95k|        uint64_t storage[FLOW_U64S];
  208|  1.95k|    } m;
  209|  1.95k|    struct flow flow2;
  210|       |
  211|  1.95k|    memset(&flow2, 0, sizeof flow2);
  212|  1.95k|    mask.masks = *flow;
  213|  1.95k|    minimask = minimask_create(&mask);
  214|       |
  215|  1.95k|    minimask_combine(&m.minicombined, minimask, minicatchall, m.storage);
  216|  1.95k|    ovs_assert(minimask_is_catchall(&m.minicombined));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  217|       |
  218|       |    /* Create mask based on zero flow */
  219|  1.95k|    mask2.masks = flow2;
  220|  1.95k|    minimask2 = minimask_create(&mask2);
  221|       |
  222|  1.95k|    minimask_combine(&m.minicombined, minimask, minimask2, m.storage);
  223|  1.95k|    flow_wildcards_and(&combined, &mask, &mask2);
  224|  1.95k|    minimask_expand(&m.minicombined, &combined2);
  225|  1.95k|    ovs_assert(flow_wildcards_equal(&combined, &combined2));
  ------------------
  |  |   58|  1.95k|#define ovs_assert(CONDITION) ((void) (CONDITION))
  ------------------
  226|       |
  227|  1.95k|    free(minimask);
  228|  1.95k|    free(minimask2);
  229|       |
  230|  1.95k|    free(minicatchall);
  231|  1.95k|}

