]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_vrf.h
zebra: fix includes
[mirror_frr.git] / zebra / zebra_vrf.h
index c7a0717ee8291bc655f3bfff7e1f23d3ade2e00c..b8664f4ec764ec64e07989edd754e91931a5ab03 100644 (file)
@@ -19,8 +19,8 @@
  * 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
  */
-#if !defined(__ZEBRA_RIB_H__)
-#define __ZEBRA_RIB_H__
+#if !defined(__ZEBRA_VRF_H__)
+#define __ZEBRA_VRF_H__
 
 #include <zebra/zebra_ns.h>
 #include <zebra/zebra_pw.h>
@@ -28,8 +28,8 @@
 
 /* MPLS (Segment Routing) global block */
 typedef struct mpls_srgb_t_ {
-       u_int32_t start_label;
-       u_int32_t end_label;
+       uint32_t start_label;
+       uint32_t end_label;
 } mpls_srgb_t;
 
 /* Routing table instance.  */
@@ -41,30 +41,24 @@ struct zebra_vrf {
        char *desc;
 
        /* FIB identifier.  */
-       u_char fib_id;
+       uint8_t fib_id;
 
        /* Flags. */
-       u_int16_t flags;
+       uint16_t flags;
 #define ZEBRA_VRF_RIB_SCHEDULED   (1 << 0)
 #define ZEBRA_VRF_RETAIN          (2 << 0)
 
-       u_int32_t table_id;
+       uint32_t table_id;
 
        /* Routing table.  */
        struct route_table *table[AFI_MAX][SAFI_MAX];
 
-       /* Static route configuration.  */
-       struct route_table *stable[AFI_MAX][SAFI_MAX];
-
        /* Recursive Nexthop table */
        struct route_table *rnh_table[AFI_MAX];
 
        /* Import check table (used mostly by BGP */
        struct route_table *import_check_table[AFI_MAX];
 
-       /* Routing tables off of main table for redistribute table */
-       struct route_table *other_table[AFI_MAX][ZEBRA_KERNEL_TABLE_MAX];
-
        /* 2nd pointer type used primarily to quell a warning on
         * ALL_LIST_ELEMENTS_RO
         */
@@ -79,6 +73,9 @@ struct zebra_vrf {
         */
        struct zebra_ns *zns;
 
+       /* MPLS Label to handle L3VPN <-> vrf popping */
+       mpls_label_t label[AFI_MAX];
+
        /* MPLS static LSP config table */
        struct hash *slsp_table;
 
@@ -96,7 +93,7 @@ struct zebra_vrf {
        struct zebra_static_pw_head static_pseudowires;
 
        /* MPLS processing flags */
-       u_int16_t mpls_flags;
+       uint16_t mpls_flags;
 #define MPLS_FLAG_SCHEDULE_LSPS    (1 << 0)
 
        /*
@@ -128,26 +125,43 @@ struct zebra_vrf {
 
 static inline vrf_id_t zvrf_id(struct zebra_vrf *zvrf)
 {
+       if (!zvrf || !zvrf->vrf)
+               return VRF_UNKNOWN;
        return zvrf->vrf->vrf_id;
 }
 
+static inline const char *zvrf_ns_name(struct zebra_vrf *zvrf)
+{
+       if (!zvrf->vrf || !zvrf->vrf->ns_ctxt)
+               return NULL;
+       return ns_get_name((struct ns *)zvrf->vrf->ns_ctxt);
+}
+
 static inline const char *zvrf_name(struct zebra_vrf *zvrf)
 {
        return zvrf->vrf->name;
 }
 
+static inline bool zvrf_is_active(struct zebra_vrf *zvrf)
+{
+       return zvrf->vrf->status & VRF_ACTIVE;
+}
+
 struct route_table *zebra_vrf_table_with_table_id(afi_t afi, safi_t safi,
                                                  vrf_id_t vrf_id,
-                                                 u_int32_t table_id);
+                                                 uint32_t table_id);
 
 extern void zebra_vrf_update_all(struct zserv *client);
 extern struct zebra_vrf *zebra_vrf_lookup_by_id(vrf_id_t vrf_id);
 extern struct zebra_vrf *zebra_vrf_lookup_by_name(const char *);
 extern struct zebra_vrf *zebra_vrf_alloc(void);
 extern struct route_table *zebra_vrf_table(afi_t, safi_t, vrf_id_t);
-extern struct route_table *zebra_vrf_static_table(afi_t, safi_t,
-                                                 struct zebra_vrf *zvrf);
+
 extern struct route_table *
-zebra_vrf_other_route_table(afi_t afi, u_int32_t table_id, vrf_id_t vrf_id);
+zebra_vrf_other_route_table(afi_t afi, uint32_t table_id, vrf_id_t vrf_id);
+extern int zebra_vrf_has_config(struct zebra_vrf *zvrf);
 extern void zebra_vrf_init(void);
-#endif
+
+extern void zebra_rtable_node_cleanup(struct route_table *table,
+                                     struct route_node *node);
+#endif /* ZEBRA_VRF_H */