[ovs-dev] [PATCH] Allow processing of RARP packets.
Jesse Gross
jesse at nicira.com
Wed Oct 24 01:37:05 UTC 2012
On Tue, Oct 23, 2012 at 1:39 PM, Mehak Mahajan <mmahajan at nicira.com> wrote:
> With this commit, the datapath will process the ARP header for
> RARP packets, both request and reply.
>
> Signed-off-by: Mehak Mahajan <mmahajan at nicira.com>
Can you mention that this also fixes the bug related to key_len?
> diff --git a/datapath/flow.c b/datapath/flow.c
> index b6efd35..4142027 100644
> --- a/datapath/flow.c
> +++ b/datapath/flow.c
> @@ -735,18 +735,17 @@ int ovs_flow_extract(struct sk_buff *skb, u16 in_port, struct sw_flow_key *key,
> && arp->ar_hln == ETH_ALEN
> && arp->ar_pln == 4) {
>
> - /* We only match on the lower 8 bits of the opcode. */
> - if (ntohs(arp->ar_op) <= 0xff)
> - key->ip.proto = ntohs(arp->ar_op);
> -
> - if (key->ip.proto == ARPOP_REQUEST
> - || key->ip.proto == ARPOP_REPLY) {
> - memcpy(&key->ipv4.addr.src, arp->ar_sip, sizeof(key->ipv4.addr.src));
> - memcpy(&key->ipv4.addr.dst, arp->ar_tip, sizeof(key->ipv4.addr.dst));
> - memcpy(key->ipv4.arp.sha, arp->ar_sha, ETH_ALEN);
> - memcpy(key->ipv4.arp.tha, arp->ar_tha, ETH_ALEN);
> - key_len = SW_FLOW_KEY_OFFSET(ipv4.arp);
> - }
> + /* We only match on the lower 8 bits of the opcode. */
> + if (ntohs(arp->ar_op) <= 0xff)
> + key->ip.proto = ntohs(arp->ar_op);
> +
> + memcpy(&key->ipv4.addr.src, arp->ar_sip,
> + sizeof(key->ipv4.addr.src));
> + memcpy(&key->ipv4.addr.dst, arp->ar_tip,
> + sizeof(key->ipv4.addr.dst));
> + memcpy(key->ipv4.arp.sha, arp->ar_sha, ETH_ALEN);
> + memcpy(key->ipv4.arp.tha, arp->ar_tha, ETH_ALEN);
> + key_len = SW_FLOW_KEY_OFFSET(ipv4.arp);
> }
As Ben mentioned, the indentation here isn't right because kernel
style uses tabs but this has spaces.
More information about the dev
mailing list