*: Widen width of Zserv routing tag field.
* lib/zebra.h: Introduce a route_tag_t type for route tags generally,
and make it 4 bytes wide - so it can directly hold things like an ASN, or
the OSPF ASE-LSA tag.
* zebra/rib.h: Use route_tag_t instead of u_short.
* *: Update 'u_short (*)?(tag|tmp)' to use route_tag_t instead of u_short.
Update stream_{get,put} to l instead of w.
* ospf_zebra.c: (ospf_zebra_add) test OSPF tag within range of ROUTE_TAG_MAX.
diff --git a/zebra/rib.h b/zebra/rib.h
index d31db55..0191f57 100644
--- a/zebra/rib.h
+++ b/zebra/rib.h
@@ -23,6 +23,7 @@
#ifndef _ZEBRA_RIB_H
#define _ZEBRA_RIB_H
+#include "zebra.h"
#include "linklist.h"
#include "prefix.h"
#include "table.h"
@@ -43,6 +44,9 @@
/* Refrence count. */
unsigned long refcnt;
+ /* Tag */
+ route_tag_t tag;
+
/* Uptime. */
time_t uptime;
@@ -65,9 +69,6 @@
/* Distance. */
u_char distance;
- /* Tag */
- u_short tag;
-
/* Flags of this route.
* This flag's definition is in lib/zebra.h ZEBRA_FLAG_* and is exposed
* to clients via Zserv
@@ -182,7 +183,7 @@
u_char distance;
/* Tag */
- u_short tag;
+ route_tag_t tag;
/* Flag for this static route's type. */
u_char type;
@@ -450,11 +451,12 @@
extern int
static_add_ipv4_safi (safi_t safi, struct prefix *p, struct in_addr *gate,
- const char *ifname, u_char flags, u_short tag, u_char distance,
- vrf_id_t vrf_id);
+ const char *ifname, u_char flags, route_tag_t,
+ u_char distance, vrf_id_t vrf_id);
extern int
static_delete_ipv4_safi (safi_t safi, struct prefix *p, struct in_addr *gate,
- const char *ifname, u_short tag, u_char distance, vrf_id_t vrf_id);
+ const char *ifname, route_tag_t tag, u_char distance,
+ vrf_id_t vrf_id);
extern int
rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,
@@ -474,15 +476,16 @@
extern int
static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
- const char *ifname, u_char flags, u_short tag, u_char distance,
- vrf_id_t vrf_id);
+ const char *ifname, u_char flags, route_tag_t,
+ u_char distance, vrf_id_t vrf_id);
extern int
rib_add_ipv6_multipath (struct prefix_ipv6 *, struct rib *, safi_t);
extern int
static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
- const char *ifname, u_short tag, u_char distance, vrf_id_t vrf_id);
+ const char *ifname, route_tag_t, u_char distance,
+ vrf_id_t vrf_id);
extern int rib_gc_dest (struct route_node *rn);
extern struct route_table *rib_tables_iter_next (rib_tables_iter_t *iter);