-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 28/04/10 16:55, Fabian Knittel wrote:
> This patch changes buf_filter_incoming_vlan_tags() to use a less nested
> code-style.  It also improves documentation of the function.
> 
> In addition, the function is made static, as it is only used locally.
> 
> Code based on a snippet by Peter Stuge.
> 
> Signed-off-by: Fabian Knittel <fabian.knit...@avona.com>
> ---
>  multi.c |   39 ++++++++++++++++++++++++---------------
>  1 files changed, 24 insertions(+), 15 deletions(-)

I see absolutely no reasons why we shouldn't write easily readable code,
thus I'm giving this patch an ACK.

Usage of nesting should not be considered a part of any coding style,
it's more about writing readable code.  And code which is more difficult
to read, is more easily prune to bugs.


kind regards,

David Sommerseth



> diff --git a/multi.c b/multi.c
> index 1a8bbbf..83c5aa3 100644
> --- a/multi.c
> +++ b/multi.c
> @@ -1925,24 +1925,33 @@ multi_process_post (struct multi_context *m, struct 
> multi_instance *mi, const un
>  }
>  
>  #ifdef ENABLE_VLAN_TAGGING
> -bool
> +/*
> + * Decides whether or not to drop an ethernet frame.  VLAN-tagged frames are
> + * dropped.  All other frames are accepted.
> + *
> + * @param buf The ethernet frame.
> + * @return    Returns true if the frame should be dropped, false otherwise.
> + */
> +static bool
>  buf_filter_incoming_vlan_tags (const struct buffer *buf)
>  {
> -  if (BLEN (buf) >= (int) sizeof (struct openvpn_8021qhdr))
> -    {
> -      const struct openvpn_8021qhdr *vlanhdr = (const struct 
> openvpn_8021qhdr *) BPTR (buf);
> +  const struct openvpn_8021qhdr *vlanhdr;
> +  uint16_t vid;
>  
> -      if (ntohs (vlanhdr->tpid) == OPENVPN_ETH_P_8021Q)
> -        {
> -       const uint16_t vid = vlanhdr_get_vid(vlanhdr);
> -       if (vid != 0)
> -         {
> -           msg (D_VLAN_DEBUG, "dropping tagged incoming frame, vid: %u", 
> vid);
> -           return true;
> -         }
> -     }
> -    }
> -  return false;
> +  if (BLEN (buf) < (int) sizeof (struct openvpn_8021qhdr))
> +    return false; /* Frame too small.  */
> +
> +  vlanhdr = (const struct openvpn_8021qhdr *) BPTR (buf);
> +
> +  if (ntohs (vlanhdr->tpid) != OPENVPN_ETH_P_8021Q)
> +    return false; /* Frame is untagged.  */
> +
> +  vid = vlanhdr_get_vid(vlanhdr);
> +  if (vid == 0)
> +    return false; /* Frame only priority-tagged.  */
> +
> +  msg (D_VLAN_DEBUG, "dropping VLAN-tagged incoming frame, vid: %u", vid);
> +  return true;
>  }
>  #endif
>  

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAkvYUt8ACgkQDC186MBRfro4PACgnle/89mrJEQrhEpcVT5iBWfB
fq4AnibsHY2G5XBezR/lluwz1fM865Kn
=09Oe
-----END PGP SIGNATURE-----

Reply via email to