On Tue, 2016-06-07 at 19:34 +0200, Pablo Neira Ayuso wrote:
> On Tue, Jun 07, 2016 at 10:04:40AM -0700, Joe Perches wrote:
> > One more question, is this chunk below correct from
> > coding style point of view?
> 
>         if (info->bitmask & EBT_STP_ROOTADDR) {
>                 verdict = 0;
>                 for (i = 0; i < 6; i++)
> -                       verdict |= (stpc->root[2+i] ^ c->root_addr[i]) &
> -                                  c->root_addrmsk[i];
> +                       verdict |= (stpc->root[2 + i] ^ c->root_addr[i]) &
> +                               c->root_addrmsk[i];
> 
> I think the previous line is fine.

"2+i" or "2 + i", either is OK.
Multiple line statement alignment doesn't
matter much.

I think either is fine and both are "don't care, don't need"
to change from one to another to satisfy some silly whitespace
overlord brainless script.

Perhaps it's better to add a function for this though.

Something like:
---
 net/bridge/netfilter/ebt_stp.c | 60 +++++++++++++++++++++++-------------------
 1 file changed, 33 insertions(+), 27 deletions(-)

diff --git a/net/bridge/netfilter/ebt_stp.c b/net/bridge/netfilter/ebt_stp.c
index 6b731e1..4096fac 100644
--- a/net/bridge/netfilter/ebt_stp.c
+++ b/net/bridge/netfilter/ebt_stp.c
@@ -40,13 +40,24 @@ struct stp_config_pdu {
 #define NR16(p) (p[0] << 8 | p[1])
 #define NR32(p) ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3])
 
+static bool ebt_test_addr(const uint8_t *root, const char *addr,
+                         const char *mask)
+{
+       bool rtn = false;
+       int i;
+
+       for (i = 0; i < ETH_ALEN; i++)
+               rtn |= (root[2 + i] ^ addr[i]) & mask[i];
+
+       return rtn;
+}
+
 static bool ebt_filter_config(const struct ebt_stp_info *info,
                              const struct stp_config_pdu *stpc)
 {
        const struct ebt_stp_config_info *c;
        uint16_t v16;
        uint32_t v32;
-       int verdict, i;
 
        c = &info->config;
        if ((info->bitmask & EBT_STP_FLAGS) &&
@@ -54,66 +65,61 @@ static bool ebt_filter_config(const struct ebt_stp_info 
*info,
                return false;
        if (info->bitmask & EBT_STP_ROOTPRIO) {
                v16 = NR16(stpc->root);
-               if (FWINV(v16 < c->root_priol ||
-                   v16 > c->root_priou, EBT_STP_ROOTPRIO))
+               if (FWINV(v16 < c->root_priol || v16 > c->root_priou,
+                         EBT_STP_ROOTPRIO))
                        return false;
        }
        if (info->bitmask & EBT_STP_ROOTADDR) {
-               verdict = 0;
-               for (i = 0; i < 6; i++)
-                       verdict |= (stpc->root[2+i] ^ c->root_addr[i]) &
-                                  c->root_addrmsk[i];
-               if (FWINV(verdict != 0, EBT_STP_ROOTADDR))
+               if (FWINV(ebt_test_addr(stpc->root, c->root_addr,
+                                       c->root_addrmsk),
+                         EBT_STP_ROOTADDR))
                        return false;
        }
        if (info->bitmask & EBT_STP_ROOTCOST) {
                v32 = NR32(stpc->root_cost);
-               if (FWINV(v32 < c->root_costl ||
-                   v32 > c->root_costu, EBT_STP_ROOTCOST))
+               if (FWINV(v32 < c->root_costl || v32 > c->root_costu,
+                         EBT_STP_ROOTCOST))
                        return false;
        }
        if (info->bitmask & EBT_STP_SENDERPRIO) {
                v16 = NR16(stpc->sender);
-               if (FWINV(v16 < c->sender_priol ||
-                   v16 > c->sender_priou, EBT_STP_SENDERPRIO))
+               if (FWINV(v16 < c->sender_priol || v16 > c->sender_priou,
+                         EBT_STP_SENDERPRIO))
                        return false;
        }
        if (info->bitmask & EBT_STP_SENDERADDR) {
-               verdict = 0;
-               for (i = 0; i < 6; i++)
-                       verdict |= (stpc->sender[2+i] ^ c->sender_addr[i]) &
-                                  c->sender_addrmsk[i];
-               if (FWINV(verdict != 0, EBT_STP_SENDERADDR))
+               if (FWINV(ebt_test_addr(stpc->sender, c->sender_addr,
+                                       c->sender_addrmsk),
+                         EBT_STP_SENDERADDR))
                        return false;
        }
        if (info->bitmask & EBT_STP_PORT) {
                v16 = NR16(stpc->port);
-               if (FWINV(v16 < c->portl ||
-                   v16 > c->portu, EBT_STP_PORT))
+               if (FWINV(v16 < c->portl || v16 > c->portu, EBT_STP_PORT))
                        return false;
        }
        if (info->bitmask & EBT_STP_MSGAGE) {
                v16 = NR16(stpc->msg_age);
-               if (FWINV(v16 < c->msg_agel ||
-                   v16 > c->msg_ageu, EBT_STP_MSGAGE))
+               if (FWINV(v16 < c->msg_agel || v16 > c->msg_ageu,
+                         EBT_STP_MSGAGE))
                        return false;
        }
        if (info->bitmask & EBT_STP_MAXAGE) {
                v16 = NR16(stpc->max_age);
-               if (FWINV(v16 < c->max_agel ||
-                   v16 > c->max_ageu, EBT_STP_MAXAGE))
+               if (FWINV(v16 < c->max_agel || v16 > c->max_ageu,
+                         EBT_STP_MAXAGE))
                        return false;
        }
        if (info->bitmask & EBT_STP_HELLOTIME) {
                v16 = NR16(stpc->hello_time);
-               if (FWINV(v16 < c->hello_timel ||
-                   v16 > c->hello_timeu, EBT_STP_HELLOTIME))
+               if (FWINV(v16 < c->hello_timel || v16 > c->hello_timeu,
+                         EBT_STP_HELLOTIME))
                        return false;
        }
        if (info->bitmask & EBT_STP_FWDD) {
                v16 = NR16(stpc->forward_delay);
-               if (FWINV(v16 < c->forward_delayl ||
-                   v16 > c->forward_delayu, EBT_STP_FWDD))
+               if (FWINV(v16 < c->forward_delayl || v16 > c->forward_delayu,
+                         EBT_STP_FWDD))
                        return false;
        }
        return true;

Reply via email to