Sam, There are lot of assumptions here about how code should be structured and written. eg. there's an implicit assumption that 'Cleanup' should be defined.
Let's table this for sometime till we get the current code starts working with netlink. If you can point me to some code what is using these macros, I might be able to comment better. > +//OVS_USE_ASSERTS is not #define-d on release mode > +#if OVS_USE_ASSERTS > +#define OVS_CHECK(x) ASSERT(x) > +#define OVS_CHECK_OR(x, expr) { if (!(x)) { ASSERT(0); expr; } } > +#define OVS_CHECK_BREAK(x) { if (!(x)) { ASSERT(0); break; } } > +#define OVS_CHECK_RET(x, value) { if (!(x)) { ASSERT(0); return value; } } > +#define OVS_CHECK_GC(x) { if (!(x)) { ASSERT(0); goto Cleanup; } } > +#else > +#define OVS_CHECK(x) > +#define OVS_CHECK_OR(x, expr) { if (!(x)) expr; } > +#define OVS_CHECK_BREAK(x) { if (!(x)) break; } > +#define OVS_CHECK_RET(x, value) { if (!(x)) return value; } > +#define OVS_CHECK_GC(x) { if (!(x)) goto Cleanup; } > +#endif //OVS_USE_ASSERTS I don't think we need two separate definitions. If ASSERT() is defined debug only, then it would be a no-op in 'OVS_USE_ASSERTS'. thanks, Nithin _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev