X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fodp-util.c;h=bacb1c04908342456d466b1aac800071d82b236d;hb=bad68a9965215511b305c59d7f1830344ec2241f;hp=5f1a77ce6350960427574d7a3d0185ab30a28835;hpb=6767a2cce9a6412b3a41a927c4d56b9f0e1ec36f;p=sliver-openvswitch.git diff --git a/lib/odp-util.c b/lib/odp-util.c index 5f1a77ce6..bacb1c049 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -307,9 +307,11 @@ format_odp_key_attr(const struct nlattr *a, struct ds *ds) case ODP_KEY_ATTR_ARP: arp_key = nl_attr_get(a); - ds_put_format(ds, "arp(sip="IP_FMT",tip="IP_FMT",op=%"PRIu16")", + ds_put_format(ds, "arp(sip="IP_FMT",tip="IP_FMT",op=%"PRIu16"," + "sha="ETH_ADDR_FMT",tha="ETH_ADDR_FMT")", IP_ARGS(&arp_key->arp_sip), IP_ARGS(&arp_key->arp_tip), - ntohs(arp_key->arp_op)); + ntohs(arp_key->arp_op), ETH_ADDR_ARGS(arp_key->arp_sha), + ETH_ADDR_ARGS(arp_key->arp_tha)); break; default: @@ -416,6 +418,8 @@ odp_flow_key_from_flow(struct ofpbuf *buf, const struct flow *flow) arp_key->arp_sip = flow->nw_src; arp_key->arp_tip = flow->nw_dst; arp_key->arp_op = htons(flow->nw_proto); + memcpy(arp_key->arp_sha, flow->arp_sha, ETH_ADDR_LEN); + memcpy(arp_key->arp_tha, flow->arp_tha, ETH_ADDR_LEN); } } @@ -541,6 +545,8 @@ odp_flow_key_to_flow(const struct nlattr *key, size_t key_len, return EINVAL; } flow->nw_proto = ntohs(arp_key->arp_op); + memcpy(flow->arp_sha, arp_key->arp_sha, ETH_ADDR_LEN); + memcpy(flow->arp_tha, arp_key->arp_tha, ETH_ADDR_LEN); break; default: