From: Ben Pfaff Date: Fri, 7 May 2010 18:43:18 +0000 (-0700) Subject: flow: Fix misaligned access. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=176aaa65aac64b929fac8158fc1d2f577347effe;p=openvswitch flow: Fix misaligned access. The testsuite for the flow extractor triggered this. With this commit, "make check" passes on SPARC. --- diff --git a/lib/flow.c b/lib/flow.c index fb7cf32a..38ad72ab 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -27,6 +27,7 @@ #include "openflow/openflow.h" #include "openvswitch/datapath-protocol.h" #include "packets.h" +#include "unaligned.h" #include "xtoxll.h" #include "vlog.h" @@ -154,8 +155,8 @@ flow_extract(struct ofpbuf *packet, uint32_t tun_id, uint16_t in_port, if (flow->dl_type == htons(ETH_TYPE_IP)) { const struct ip_header *nh = pull_ip(&b); if (nh) { - flow->nw_src = nh->ip_src; - flow->nw_dst = nh->ip_dst; + flow->nw_src = get_unaligned_u32(&nh->ip_src); + flow->nw_dst = get_unaligned_u32(&nh->ip_dst); flow->nw_tos = nh->ip_tos & IP_DSCP_MASK; flow->nw_proto = nh->ip_proto; packet->l4 = b.data;