Looks good.

Ethan

On Thu, Dec 8, 2011 at 14:01, Ben Pfaff <b...@nicira.com> wrote:
> This makes flow_extract() happier with TCP packets that this function
> produces.
> ---
>  lib/flow.c    |    3 +++
>  lib/packets.h |    1 +
>  2 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/lib/flow.c b/lib/flow.c
> index a491aff..a352f07 100644
> --- a/lib/flow.c
> +++ b/lib/flow.c
> @@ -1020,6 +1020,7 @@ flow_compose(struct ofpbuf *b, const struct flow *flow)
>                 b->l4 = tcp = ofpbuf_put_zeros(b, sizeof *tcp);
>                 tcp->tcp_src = flow->tp_src;
>                 tcp->tcp_dst = flow->tp_dst;
> +                tcp->tcp_ctl = TCP_CTL(0, 5);
>             } else if (flow->nw_proto == IPPROTO_UDP) {
>                 struct udp_header *udp;
>
> @@ -1034,6 +1035,8 @@ flow_compose(struct ofpbuf *b, const struct flow *flow)
>                 icmp->icmp_code = ntohs(flow->tp_dst);
>             }
>         }
> +
> +        ip->ip_tot_len = htons(b->data + b->size - b->l3);
>     } else if (flow->dl_type == htons(ETH_TYPE_IPV6)) {
>         /* XXX */
>     } else if (flow->dl_type == htons(ETH_TYPE_ARP)) {
> diff --git a/lib/packets.h b/lib/packets.h
> index 9e283a5..19b7346 100644
> --- a/lib/packets.h
> +++ b/lib/packets.h
> @@ -357,6 +357,7 @@ BUILD_ASSERT_DECL(UDP_HEADER_LEN == sizeof(struct 
> udp_header));
>  #define TCP_ACK 0x10
>  #define TCP_URG 0x20
>
> +#define TCP_CTL(flags, offset) (htons((flags) | ((offset) << 12)))
>  #define TCP_FLAGS(tcp_ctl) (ntohs(tcp_ctl) & 0x003f)
>  #define TCP_OFFSET(tcp_ctl) (ntohs(tcp_ctl) >> 12)
>
> --
> 1.7.4.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to