On 29 August 2016 at 12:11, Paul Boca <pb...@cloudbasesolutions.com> wrote:

> In user mode the flags are interpreted as little endian.
> This fix makes the kernel mode compatible with user mode.
>
> Signed-off-by: Paul-Daniel Boca <pb...@cloudbasesolutions.com>
>
Applied, thank you.


> ---
>  datapath-windows/ovsext/Conntrack-tcp.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/datapath-windows/ovsext/Conntrack-tcp.c
> b/datapath-windows/ovsext/Conntrack-tcp.c
> index 1820705..6adf490 100644
> --- a/datapath-windows/ovsext/Conntrack-tcp.c
> +++ b/datapath-windows/ovsext/Conntrack-tcp.c
> @@ -226,13 +226,13 @@ OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_,
>      /* The peer that should receive 'pkt' */
>      struct tcp_peer *dst = &conn->peer[reply ? 0 : 1];
>      uint8_t sws = 0, dws = 0;
> -    UINT16 tcp_flags = tcp->flags;
> +    UINT16 tcp_flags = ntohs(tcp->flags);
>      uint16_t win = ntohs(tcp->window);
>      uint32_t ack, end, seq, orig_seq;
>      uint32_t p_len = OvsGetTcpPayloadLength(nbl);
>      int ackskew;
>
> -    if (OvsCtInvalidTcpFlags(tcp->flags)) {
> +    if (OvsCtInvalidTcpFlags(tcp_flags)) {
>          return CT_UPDATE_INVALID;
>      }
>
> @@ -268,7 +268,7 @@ OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_,
>      if (src->state < CT_DPIF_TCPS_SYN_SENT) {
>          /* First packet from this end. Set its state */
>
> -        ack = ntohl(tcp->ack);
> +        ack = ntohl(tcp->ack_seq);
>
>          end = seq + p_len;
>          if (tcp_flags & TCP_SYN) {
> @@ -308,7 +308,7 @@ OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_,
>          }
>
>      } else {
> -        ack = ntohl(tcp->ack);
> +        ack = ntohl(tcp->ack_seq);
>          end = seq + p_len;
>          if (tcp_flags & TCP_SYN) {
>              end++;
> @@ -460,14 +460,16 @@ OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_,
>  BOOLEAN
>  OvsConntrackValidateTcpPacket(const TCPHdr *tcp)
>  {
> -    if (tcp == NULL || OvsCtInvalidTcpFlags(tcp->flags)) {
> +    UINT16 tcp_flags = ntohs(tcp->flags);
> +
> +    if (tcp == NULL || OvsCtInvalidTcpFlags(tcp_flags)) {
>          return FALSE;
>      }
>
>      /* A syn+ack is not allowed to create a connection.  We want to allow
>       * totally new connections (syn) or already established, not partially
>       * open (syn+ack). */
> -    if ((tcp->flags & TCP_SYN) && (tcp->flags & TCP_ACK)) {
> +    if ((tcp_flags & TCP_SYN) && (tcp_flags & TCP_ACK)) {
>          return FALSE;
>      }
>
> --
> 2.7.2.windows.1
> _______________________________________________
> 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