X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fodp-util.c;h=79f4bfc7452bf52c3cfcbd80d49adcca298d2fd4;hb=afabef2b7de84e628b1f2f1ba2e92ec734463eda;hp=c90ff7d244d091ce98bb94329ef36155574332fe;hpb=685a51a5b89750cead1b2934c2079d2bb9c52a4a;p=openvswitch diff --git a/lib/odp-util.c b/lib/odp-util.c index c90ff7d2..79f4bfc7 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -256,7 +256,7 @@ format_odp_key_attr(const struct nlattr *a, struct ds *ds) switch (nl_attr_type(a)) { case ODP_KEY_ATTR_TUN_ID: - ds_put_format(ds, "tun_id(%#"PRIx64")", nl_attr_get_be64(a)); + ds_put_format(ds, "tun_id(%#"PRIx64")", ntohll(nl_attr_get_be64(a))); break; case ODP_KEY_ATTR_IN_PORT: @@ -403,7 +403,8 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow) nl_msg_put_be64(buf, ODP_KEY_ATTR_TUN_ID, flow->tun_id); } - nl_msg_put_u32(buf, ODP_KEY_ATTR_IN_PORT, flow->in_port); + nl_msg_put_u32(buf, ODP_KEY_ATTR_IN_PORT, + ofp_port_to_odp_port(flow->in_port)); eth_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_ETHERNET, sizeof *eth_key); @@ -430,6 +431,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow) ipv4_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_IPV4, sizeof *ipv4_key); + memset(ipv4_key, 0, sizeof *ipv4_key); ipv4_key->ipv4_src = flow->nw_src; ipv4_key->ipv4_dst = flow->nw_dst; ipv4_key->ipv4_proto = flow->nw_proto; @@ -439,6 +441,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow) ipv6_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_IPV6, sizeof *ipv6_key); + memset(ipv6_key, 0, sizeof *ipv6_key); memcpy(ipv6_key->ipv6_src, &flow->ipv6_src, sizeof ipv6_key->ipv6_src); memcpy(ipv6_key->ipv6_dst, &flow->ipv6_dst, sizeof ipv6_key->ipv6_dst); ipv6_key->ipv6_proto = flow->nw_proto; @@ -448,6 +451,7 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow) arp_key = nl_msg_put_unspec_uninit(buf, ODP_KEY_ATTR_ARP, sizeof *arp_key); + memset(arp_key, 0, sizeof *arp_key); arp_key->arp_sip = flow->nw_src; arp_key->arp_tip = flow->nw_dst; arp_key->arp_op = htons(flow->nw_proto); @@ -548,7 +552,7 @@ odp_flow_key_to_flow(const struct nlattr *key, size_t key_len, if (nl_attr_get_u32(nla) >= UINT16_MAX) { return EINVAL; } - flow->in_port = nl_attr_get_u32(nla); + flow->in_port = odp_port_to_ofp_port(nl_attr_get_u32(nla)); break; case TRANSITION(ODP_KEY_ATTR_IN_PORT, ODP_KEY_ATTR_ETHERNET):