mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 03:27:25 +00:00
[lib] Add string mapping table for Zserv commands
2006-05-15 Paul Jakma <paul.jakma@sun.com> * log.c: (general) Generalise struct zebra_route_desc into struct zebra_desc_table and, similar to route_types, add a command_types table to describe Zserv protocol commands. (route_types[]) use a macro to use designated initialisers while avoiding tedious duplication. (zserv_command_string) lookup string from zebra_desc_table, similar to zebra_route_string * zebra.h: Add declaration for zserv_command_string, adjust the comments to reflect zebra_desc_table.
This commit is contained in:
parent
d16e043359
commit
d6d672aaf9
@ -1,3 +1,15 @@
|
|||||||
|
2006-05-15 Paul Jakma <paul.jakma@sun.com>
|
||||||
|
|
||||||
|
* log.c: (general) Generalise struct zebra_route_desc into
|
||||||
|
struct zebra_desc_table and, similar to route_types, add a
|
||||||
|
command_types table to describe Zserv protocol commands.
|
||||||
|
(route_types[]) use a macro to use designated initialisers
|
||||||
|
while avoiding tedious duplication.
|
||||||
|
(zserv_command_string) lookup string from zebra_desc_table,
|
||||||
|
similar to zebra_route_string
|
||||||
|
* zebra.h: Add declaration for zserv_command_string, adjust the
|
||||||
|
comments to reflect zebra_desc_table.
|
||||||
|
|
||||||
2006-05-13 Paul Jakma <paul.jakma@sun.com>
|
2006-05-13 Paul Jakma <paul.jakma@sun.com>
|
||||||
|
|
||||||
* vty.c: (vty_describe_command) CID #39 fix was too hasty, just
|
* vty.c: (vty_describe_command) CID #39 fix was too hasty, just
|
||||||
|
83
lib/log.c
83
lib/log.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: log.c,v 1.26 2005/10/01 17:38:07 ajs Exp $
|
* $Id: log.c,v 1.27 2006/05/15 16:56:51 paul Exp $
|
||||||
*
|
*
|
||||||
* Logging of zebra
|
* Logging of zebra
|
||||||
* Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro
|
* Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro
|
||||||
@ -704,29 +704,61 @@ safe_strerror(int errnum)
|
|||||||
return (s != NULL) ? s : "Unknown error";
|
return (s != NULL) ? s : "Unknown error";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: this table must match the ordering in lib/zebra.h */
|
struct zebra_desc_table
|
||||||
static const struct zebra_route_desc {
|
{
|
||||||
u_int zroute;
|
unsigned int type;
|
||||||
const char *string;
|
const char *string;
|
||||||
char chr;
|
char chr;
|
||||||
} route_types[] = {
|
|
||||||
{ ZEBRA_ROUTE_SYSTEM, "system", 'X' },
|
|
||||||
{ ZEBRA_ROUTE_KERNEL, "kernel", 'K' },
|
|
||||||
{ ZEBRA_ROUTE_CONNECT, "connected", 'C' },
|
|
||||||
{ ZEBRA_ROUTE_STATIC, "static", 'S' },
|
|
||||||
{ ZEBRA_ROUTE_RIP, "rip", 'R' },
|
|
||||||
{ ZEBRA_ROUTE_RIPNG, "ripng", 'R' },
|
|
||||||
{ ZEBRA_ROUTE_OSPF, "ospf", 'O' },
|
|
||||||
{ ZEBRA_ROUTE_OSPF6, "ospf6", 'O' },
|
|
||||||
{ ZEBRA_ROUTE_ISIS, "isis", 'I' },
|
|
||||||
{ ZEBRA_ROUTE_BGP, "bgp", 'B' },
|
|
||||||
{ ZEBRA_ROUTE_HSLS, "hsls", 'H' },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct zebra_route_desc *
|
#define DESC_ENTRY(T,S,C) [(T)] = { (T), (S), (C) }
|
||||||
|
static const struct zebra_desc_table route_types[] = {
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_SYSTEM, "system", 'X' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_KERNEL, "kernel", 'K' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_CONNECT, "connected", 'C' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_STATIC, "static", 'S' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_RIP, "rip", 'R' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_RIPNG, "ripng", 'R' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_OSPF, "ospf", 'O' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_OSPF6, "ospf6", 'O' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_ISIS, "isis", 'I' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_BGP, "bgp", 'B' ),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTE_HSLS, "hsls", 'H' ),
|
||||||
|
};
|
||||||
|
#undef DESC_ENTRY
|
||||||
|
|
||||||
|
#define DESC_ENTRY(T) [(T)] = { (T), (#T), '\0' }
|
||||||
|
static const struct zebra_desc_table command_types[] = {
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_ADDRESS_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_ADDRESS_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_UP),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_DOWN),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV4_ROUTE_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV4_ROUTE_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV6_ROUTE_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV6_ROUTE_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_REDISTRIBUTE_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_REDISTRIBUTE_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_REDISTRIBUTE_DEFAULT_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_REDISTRIBUTE_DEFAULT_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV4_NEXTHOP_LOOKUP),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV6_NEXTHOP_LOOKUP),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV4_IMPORT_LOOKUP),
|
||||||
|
DESC_ENTRY (ZEBRA_IPV6_IMPORT_LOOKUP),
|
||||||
|
DESC_ENTRY (ZEBRA_INTERFACE_RENAME),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTER_ID_ADD),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTER_ID_DELETE),
|
||||||
|
DESC_ENTRY (ZEBRA_ROUTER_ID_UPDATE),
|
||||||
|
};
|
||||||
|
#undef DESC_ENTRY
|
||||||
|
|
||||||
|
static const struct zebra_desc_table unknown = { 0, "unknown", '?' };
|
||||||
|
|
||||||
|
static const struct zebra_desc_table *
|
||||||
zroute_lookup(u_int zroute)
|
zroute_lookup(u_int zroute)
|
||||||
{
|
{
|
||||||
static const struct zebra_route_desc unknown = { 0, "unknown", '?' };
|
|
||||||
u_int i;
|
u_int i;
|
||||||
|
|
||||||
if (zroute >= sizeof(route_types)/sizeof(route_types[0]))
|
if (zroute >= sizeof(route_types)/sizeof(route_types[0]))
|
||||||
@ -734,11 +766,11 @@ zroute_lookup(u_int zroute)
|
|||||||
zlog_err("unknown zebra route type: %u", zroute);
|
zlog_err("unknown zebra route type: %u", zroute);
|
||||||
return &unknown;
|
return &unknown;
|
||||||
}
|
}
|
||||||
if (zroute == route_types[zroute].zroute)
|
if (zroute == route_types[zroute].type)
|
||||||
return &route_types[zroute];
|
return &route_types[zroute];
|
||||||
for (i = 0; i < sizeof(route_types)/sizeof(route_types[0]); i++)
|
for (i = 0; i < sizeof(route_types)/sizeof(route_types[0]); i++)
|
||||||
{
|
{
|
||||||
if (zroute == route_types[i].zroute)
|
if (zroute == route_types[i].type)
|
||||||
{
|
{
|
||||||
zlog_warn("internal error: route type table out of order "
|
zlog_warn("internal error: route type table out of order "
|
||||||
"while searching for %u, please notify developers", zroute);
|
"while searching for %u, please notify developers", zroute);
|
||||||
@ -760,3 +792,14 @@ zebra_route_char(u_int zroute)
|
|||||||
{
|
{
|
||||||
return zroute_lookup(zroute)->chr;
|
return zroute_lookup(zroute)->chr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
zserv_command_string (unsigned int command)
|
||||||
|
{
|
||||||
|
if (command >= sizeof(command_types)/sizeof(command_types[0]))
|
||||||
|
{
|
||||||
|
zlog_err ("unknown zserv command type: %u", command);
|
||||||
|
return unknown.string;
|
||||||
|
}
|
||||||
|
return command_types[command].string;
|
||||||
|
}
|
||||||
|
@ -417,13 +417,17 @@ struct in_pktinfo
|
|||||||
#define ZEBRA_ROUTE_HSLS 10
|
#define ZEBRA_ROUTE_HSLS 10
|
||||||
#define ZEBRA_ROUTE_MAX 11
|
#define ZEBRA_ROUTE_MAX 11
|
||||||
|
|
||||||
/* Note: whenever a new route type is added (or the numbering is changed),
|
/* Note: whenever a new route-type or zserv-command is added the
|
||||||
the route_types[] table in lib/log.c must be updated! */
|
* corresponding {command,route}_types[] table in lib/log.c MUST be
|
||||||
|
* updated! */
|
||||||
|
|
||||||
/* Map a route type to a string. For example, ZEBRA_ROUTE_RIPNG -> "ripng". */
|
/* Map a route type to a string. For example, ZEBRA_ROUTE_RIPNG -> "ripng". */
|
||||||
extern const char *zebra_route_string(unsigned int route_type);
|
extern const char *zebra_route_string(unsigned int route_type);
|
||||||
/* Map a route type to a char. For example, ZEBRA_ROUTE_RIPNG -> 'R'. */
|
/* Map a route type to a char. For example, ZEBRA_ROUTE_RIPNG -> 'R'. */
|
||||||
extern char zebra_route_char(unsigned int route_type);
|
extern char zebra_route_char(unsigned int route_type);
|
||||||
|
/* Map a zserv command type to the same string,
|
||||||
|
* e.g. ZEBRA_INTERFACE_ADD -> "ZEBRA_INTERFACE_ADD" */
|
||||||
|
extern const char *zserv_command_string (unsigned int command);
|
||||||
|
|
||||||
/* Zebra's family types. */
|
/* Zebra's family types. */
|
||||||
#define ZEBRA_FAMILY_IPV4 1
|
#define ZEBRA_FAMILY_IPV4 1
|
||||||
|
Loading…
Reference in New Issue
Block a user