add warning control macro set

Add a way to toggle on and off a warning for a specific section of code.
This supports clang and gcc, and has no effect for any other compilers.

This follows commit bfc29ba442dbb65599f29fe5aa44c6219ed0d3a8 and
provides a generic way to handle warnings in such corner cases.

To disable a warning enabled by "-Wsome-warning" for a specific code:
  WARN_OFF(some-warning)  // disable compiler warning
  ; /* some code */
  WARN_ON(some-warning)   // enable the warning again

Change-Id: I0101caa0aa775e2b905c7b3b5fef3bbdce281673
Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
diff --git a/src/vnet/bfd/bfd_cli.c b/src/vnet/bfd/bfd_cli.c
index a533bb7..0e73172 100644
--- a/src/vnet/bfd/bfd_cli.c
+++ b/src/vnet/bfd/bfd_cli.c
@@ -20,6 +20,7 @@
 #include <vlib/vlib.h>
 #include <vlib/cli.h>
 #include <vppinfra/format.h>
+#include <vppinfra/warnings.h>
 #include <vnet/api_errno.h>
 #include <vnet/ip/format.h>
 #include <vnet/bfd/bfd_api.h>
@@ -385,20 +386,11 @@
       have_##n = 1;                            \
     }
 
-#if __GNUC__ >= 6
-#define PRAGMA_STR1 \
-  _Pragma ("GCC diagnostic ignored \"-Wtautological-compare\"");
-#define PRAGMA_STR2 _Pragma ("GCC diagnostic pop");
-#else
-#define PRAGMA_STR1
-#define PRAGMA_STR2
-#endif
-
 #define CHECK_MANDATORY(t, n, s, r, ...)                                  \
-  PRAGMA_STR1                                                             \
+WARN_OFF(tautological-compare)                                            \
   if (mandatory == r && !have_##n)                                        \
     {                                                                     \
-      PRAGMA_STR2                                                         \
+      WARN_ON(tautological-compare)                                       \
       ret = clib_error_return (0, "Required parameter `%s' missing.", s); \
       goto out;                                                           \
     }