mirror_frr/sharpd/sharp_globals.h
David Lamparter bf8d3d6aca *: require semicolon after DEFINE_MTYPE & co
Back when I put this together in 2015, ISO C11 was still reasonably new
and we couldn't require it just yet.  Without ISO C11, there is no
"good" way (only bad hacks) to require a semicolon after a macro that
ends with a function definition.  And if you added one anyway, you'd get
"spurious semicolon" warnings on some compilers...

With C11, `_Static_assert()` at the end of a macro will make it so that
the semicolon is properly required, consumed, and not warned about.

Consistently requiring semicolons after "file-level" macros matches
Linux kernel coding style and helps some editors against mis-syntax'ing
these macros.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:17 +01:00

62 lines
1.6 KiB
C

/*
* SHARP - code to track globals
* Copyright (C) 2019 Cumulus Networks, Inc.
* Donald Sharp
*
* This file is part of FRR.
*
* FRR is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2, or (at your option) any
* later version.
*
* FRR is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __SHARP_GLOBAL_H__
#define __SHARP_GLOBAL_H__
DECLARE_MGROUP(SHARPD);
struct sharp_routes {
/* The original prefix for route installation */
struct prefix orig_prefix;
/* The nexthop info we are using for installation */
struct nexthop nhop;
struct nexthop backup_nhop;
uint32_t nhgid;
struct nexthop_group nhop_group;
struct nexthop_group backup_nhop_group;
uint32_t total_routes;
uint32_t installed_routes;
uint32_t removed_routes;
int32_t repeat;
uint8_t inst;
vrf_id_t vrf_id;
struct timeval t_start;
struct timeval t_end;
char opaque[ZAPI_MESSAGE_OPAQUE_LENGTH];
};
struct sharp_global {
/* Global data about route install/deletions */
struct sharp_routes r;
/* The list of nexthops that we are watching and data about them */
struct list *nhs;
};
extern struct sharp_global sg;
#endif