diff options
Diffstat (limited to 'lib/vrf.h')
-rw-r--r-- | lib/vrf.h | 132 |
1 files changed, 60 insertions, 72 deletions
@@ -37,11 +37,7 @@ /* Pending: May need to refine this. */ #ifndef IFLA_VRF_MAX -enum { - IFLA_VRF_UNSPEC, - IFLA_VRF_TABLE, - __IFLA_VRF_MAX -}; +enum { IFLA_VRF_UNSPEC, IFLA_VRF_TABLE, __IFLA_VRF_MAX }; #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1) #endif @@ -60,102 +56,97 @@ enum { * Pass some OS specific data up through * to the daemons */ -struct vrf_data -{ - union - { - struct { - uint32_t table_id; - } l; - }; +struct vrf_data { + union { + struct { + uint32_t table_id; + } l; + }; }; -struct vrf -{ - RB_ENTRY(vrf) id_entry, name_entry; +struct vrf { + RB_ENTRY(vrf) id_entry, name_entry; - /* Identifier, same as the vector index */ - vrf_id_t vrf_id; + /* Identifier, same as the vector index */ + vrf_id_t vrf_id; - /* Name */ - char name[VRF_NAMSIZ + 1]; + /* Name */ + char name[VRF_NAMSIZ + 1]; - /* Zebra internal VRF status */ - u_char status; + /* Zebra internal VRF status */ + u_char status; #define VRF_ACTIVE (1 << 0) - /* Master list of interfaces belonging to this VRF */ - struct list *iflist; + /* Master list of interfaces belonging to this VRF */ + struct list *iflist; - /* User data */ - void *info; + /* User data */ + void *info; - /* The table_id from the kernel */ - struct vrf_data data; + /* The table_id from the kernel */ + struct vrf_data data; - QOBJ_FIELDS + QOBJ_FIELDS }; -RB_HEAD (vrf_id_head, vrf); -RB_PROTOTYPE (vrf_id_head, vrf, id_entry, vrf_id_compare) -RB_HEAD (vrf_name_head, vrf); -RB_PROTOTYPE (vrf_name_head, vrf, name_entry, vrf_name_compare) +RB_HEAD(vrf_id_head, vrf); +RB_PROTOTYPE(vrf_id_head, vrf, id_entry, vrf_id_compare) +RB_HEAD(vrf_name_head, vrf); +RB_PROTOTYPE(vrf_name_head, vrf, name_entry, vrf_name_compare) DECLARE_QOBJ_TYPE(vrf) extern struct vrf_id_head vrfs_by_id; extern struct vrf_name_head vrfs_by_name; -extern struct vrf *vrf_lookup_by_id (vrf_id_t); -extern struct vrf *vrf_lookup_by_name (const char *); -extern struct vrf *vrf_get (vrf_id_t, const char *); -extern vrf_id_t vrf_name_to_id (const char *); - -#define VRF_GET_ID(V,NAME) \ - do { \ - struct vrf *vrf; \ - if (!(vrf = vrf_lookup_by_name(NAME))) \ - { \ - vty_out (vty, "%% VRF %s not found\n", NAME);\ - return CMD_WARNING; \ - } \ - if (vrf->vrf_id == VRF_UNKNOWN) \ - { \ - vty_out (vty, "%% VRF %s not active\n", NAME);\ - return CMD_WARNING; \ - } \ - (V) = vrf->vrf_id; \ - } while (0) +extern struct vrf *vrf_lookup_by_id(vrf_id_t); +extern struct vrf *vrf_lookup_by_name(const char *); +extern struct vrf *vrf_get(vrf_id_t, const char *); +extern vrf_id_t vrf_name_to_id(const char *); + +#define VRF_GET_ID(V, NAME) \ + do { \ + struct vrf *vrf; \ + if (!(vrf = vrf_lookup_by_name(NAME))) { \ + vty_out(vty, "%% VRF %s not found\n", NAME); \ + return CMD_WARNING; \ + } \ + if (vrf->vrf_id == VRF_UNKNOWN) { \ + vty_out(vty, "%% VRF %s not active\n", NAME); \ + return CMD_WARNING; \ + } \ + (V) = vrf->vrf_id; \ + } while (0) /* * Utilities to obtain the user data */ /* Get the data pointer of the specified VRF. If not found, create one. */ -extern void *vrf_info_get (vrf_id_t); +extern void *vrf_info_get(vrf_id_t); /* Look up the data pointer of the specified VRF. */ -extern void *vrf_info_lookup (vrf_id_t); +extern void *vrf_info_lookup(vrf_id_t); /* * Utilities to obtain the interface list */ /* Look up the interface list of the specified VRF. */ -extern struct list *vrf_iflist (vrf_id_t); +extern struct list *vrf_iflist(vrf_id_t); /* Get the interface list of the specified VRF. Create one if not find. */ -extern struct list *vrf_iflist_get (vrf_id_t); +extern struct list *vrf_iflist_get(vrf_id_t); /* * VRF bit-map: maintaining flags, one bit per VRF ID */ -typedef void * vrf_bitmap_t; +typedef void *vrf_bitmap_t; #define VRF_BITMAP_NULL NULL -extern vrf_bitmap_t vrf_bitmap_init (void); -extern void vrf_bitmap_free (vrf_bitmap_t); -extern void vrf_bitmap_set (vrf_bitmap_t, vrf_id_t); -extern void vrf_bitmap_unset (vrf_bitmap_t, vrf_id_t); -extern int vrf_bitmap_check (vrf_bitmap_t, vrf_id_t); +extern vrf_bitmap_t vrf_bitmap_init(void); +extern void vrf_bitmap_free(vrf_bitmap_t); +extern void vrf_bitmap_set(vrf_bitmap_t, vrf_id_t); +extern void vrf_bitmap_unset(vrf_bitmap_t, vrf_id_t); +extern int vrf_bitmap_check(vrf_bitmap_t, vrf_id_t); /* * VRF initializer/destructor @@ -177,27 +168,24 @@ extern int vrf_bitmap_check (vrf_bitmap_t, vrf_id_t); * delete -> Called back when a vrf is being deleted from * the system ( 2 and 3 ) above. */ -extern void vrf_init (int (*create)(struct vrf *), - int (*enable)(struct vrf *), - int (*disable)(struct vrf *), - int (*delete)(struct vrf *)); +extern void vrf_init(int (*create)(struct vrf *), int (*enable)(struct vrf *), + int (*disable)(struct vrf *), int (*delete)(struct vrf *)); /* * Call vrf_terminate when the protocol is being shutdown */ -extern void vrf_terminate (void); +extern void vrf_terminate(void); -extern void vrf_cmd_init (int (*writefunc)(struct vty *vty)); +extern void vrf_cmd_init(int (*writefunc)(struct vty *vty)); /* * VRF utilities */ /* Create a socket serving for the given VRF */ -extern int vrf_socket (int, int, int, vrf_id_t); +extern int vrf_socket(int, int, int, vrf_id_t); /* * VRF Debugging */ -extern void vrf_install_commands (void); +extern void vrf_install_commands(void); #endif /*_ZEBRA_VRF_H*/ - |