]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tools: add more macros to cocci.h
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 20 Apr 2020 22:07:17 +0000 (18:07 -0400)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 20 Apr 2020 23:14:33 +0000 (19:14 -0400)
Coccinelle needs to know about complicated macros to understand certain
code paths, add some more macros there.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
tools/cocci.h

index d25fcbbe23e4215f97bb9fe582a03a750be54d02..86dea58f682ad2450d063875bff06febb8a11a3a 100644 (file)
                struct type *le_next;  /* next element */                      \
                struct type **le_prev; /* address of previous next element */  \
        }
+
+#define STREAM_GETC(S, P)                                                      \
+       do {                                                                   \
+               uint8_t _pval;                                                 \
+               if (!stream_getc2((S), &_pval))                                \
+                       goto stream_failure;                                   \
+               (P) = _pval;                                                   \
+       } while (0)
+
+#define STREAM_GETW(S, P)                                                      \
+       do {                                                                   \
+               uint16_t _pval;                                                \
+               if (!stream_getw2((S), &_pval))                                \
+                       goto stream_failure;                                   \
+               (P) = _pval;                                                   \
+       } while (0)
+
+#define STREAM_GETL(S, P)                                                      \
+       do {                                                                   \
+               uint32_t _pval;                                                \
+               if (!stream_getl2((S), &_pval))                                \
+                       goto stream_failure;                                   \
+               (P) = _pval;                                                   \
+       } while (0)
+
+#define STREAM_GETF(S, P)                                                      \
+       do {                                                                   \
+               union {                                                        \
+                       float r;                                               \
+                       uint32_t d;                                            \
+               } _pval;                                                       \
+               if (stream_getl2((S), &_pval.d))                               \
+                       goto stream_failure;                                   \
+               (P) = _pval.r;                                                 \
+       } while (0)
+
+#define STREAM_GETQ(S, P)                                                      \
+       do {                                                                   \
+               uint64_t _pval;                                                \
+               if (!stream_getq2((S), &_pval))                                \
+                       goto stream_failure;                                   \
+               (P) = _pval;                                                   \
+       } while (0)
+
+#define STREAM_GET(P, STR, SIZE)                                               \
+       do {                                                                   \
+               if (!stream_get2((P), (STR), (SIZE)))                          \
+                       goto stream_failure;                                   \
+       } while (0)
+
+#define AF_FOREACH(af) for ((af) = BGP_AF_START; (af) < BGP_AF_MAX; (af)++)
+
+#define FOREACH_AFI_SAFI(afi, safi)                                            \
+                                                                               \
+       for (afi = AFI_IP; afi < AFI_MAX; afi++)                               \
+               for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
+
+#define FOREACH_SAFI(safi) for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
+